Java——Struts2 crud 简单实例(学习struts2和ssh) 用Myeclipse实现
1.new web project
2.给新建的web项目添加struts2支持
3.项目结构中有了struts.xml和struts2核心库
4.编码
4.1项目结构图
4.2源代码:
(1)DbUtil
package com.phome.crud; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 数据库工具类
* @author yangzl
*
*/
public class DbUtil
{ //驱动名
private static final String Driver = "com.mysql.jdbc.Driver";
//数据库连接路径
private static final String URL = "jdbc:mysql://localhost:3306/user";
//数据库连接用户名及密码
private static final String user = "root";
private static final String password = "root"; /**
* 加载数据库驱动
* @throws ClassNotFoundException(加载异常)
*/
private static void registerDriver() throws ClassNotFoundException
{
try
{
Class.forName(Driver);
}
catch (ClassNotFoundException e)
{
System.out.println((new StringBuilder("【加载数据库驱动时,发生异常】\n")).append(e.getMessage()).toString());
throw e;
}
} /**
* 得到数据库连接
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public static Connection getConnection()
throws SQLException, ClassNotFoundException
{
Connection conn = null;
try
{
registerDriver();
conn = DriverManager.getConnection(URL, user, password);
}
catch (SQLException e)
{
System.out.println((new StringBuilder("【得到数据库连接时,发生异常】\n")).append(e.getMessage()).toString());
throw e;
}
return conn;
} public static int executeUpdate(String sql, Object args[])
{
int rows;
rows = -1;
Connection conn = null;
PreparedStatement pst = null;
try {
conn=getConnection();
pst=conn.prepareStatement(sql);
if (args != null)
{
for (int i = 0; i < args.length; i++)
pst.setObject(i + 1, args[i]); }
rows = pst.executeUpdate();
close(pst);
close(conn);
return rows;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1;
} public static void close(Connection conn)
throws SQLException
{
if (conn != null)
try
{
conn.close();
}
catch (SQLException e)
{
System.out.println((new StringBuilder("【数据库连接对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
throw e;
}
} public static void close(Statement state)
throws SQLException
{
if (state != null)
try
{
state.close();
}
catch (SQLException e)
{
System.out.println((new StringBuilder("【SQL命令对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
throw e;
}
} public static void close(PreparedStatement pst)
throws SQLException
{
if (pst != null)
try
{
pst.close();
}
catch (SQLException e)
{
System.out.println((new StringBuilder("【预处理SQL命令对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
throw e;
}
} public static void close(ResultSet rs)
throws SQLException
{
if (rs != null)
try
{
rs.close();
}
catch (SQLException e)
{
System.out.println((new StringBuilder("【关闭结果集对象时发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
throw e;
}
}
}
(2)UserBean.java
package com.phome.crud; public class UserBean {
private int id;
private String loginid;
private String loginpwd;
private String name;
private String gender;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoginid() {
return loginid;
}
public void setLoginid(String loginid) {
this.loginid = loginid;
}
public String getLoginpwd() {
return loginpwd;
}
public void setLoginpwd(String loginpwd) {
this.loginpwd = loginpwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }
(3).UserDao.java
package com.phome.crud; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class UserDao {
public List<UserBean> list_users(){
List<UserBean> list = new ArrayList<UserBean>();
String sql = "select * from users"; try {
Connection conn = DbUtil.getConnection();
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while(rs.next()){
UserBean user = new UserBean();
user.setId(rs.getInt("id"));
user.setLoginid(rs.getString("loginid"));
user.setLoginpwd(rs.getString("loginpwd"));
user.setName(rs.getString("name"));
user.setGender(rs.getString("gender"));
user.setAge(rs.getInt("age")); list.add(user);
}
rs.close();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return list;
} public UserBean getUser(int id){
UserBean user = new UserBean();
String sql = "select * from users where id = " + id; try {
Connection conn = DbUtil.getConnection();
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while(rs.next()){
user.setId(rs.getInt("id"));
user.setLoginid(rs.getString("loginid"));
user.setLoginpwd(rs.getString("loginpwd"));
user.setName(rs.getString("name"));
user.setGender(rs.getString("gender"));
user.setAge(rs.getInt("age")); }
rs.close();
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} return user;
} public int edit(UserBean user,int id){
String sql = "UPDATE users SET name=?,gender=?,age=? WHERE id="+id; try {
Connection conn = DbUtil.getConnection();
PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1,user.getName());
pst.setString(2,user.getGender());
pst.setInt(3,user.getAge()); int rows = pst.executeUpdate(); pst.close();
conn.close();
return rows;
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return -1;
} public int add(UserBean user){
String sql = "INSERT INTO users VALUES(DEFAULT,?,?,?,?,?)"; try {
Connection conn = DbUtil.getConnection();
PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1,user.getLoginid());
pst.setString(2,user.getLoginpwd());
pst.setString(3,user.getName());
pst.setString(4,user.getGender());
pst.setInt(5,user.getAge()); int rows = pst.executeUpdate(); pst.close();
conn.close();
return rows;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1;
}
}
(4)UserAction.java
package com.phome.crud; import java.util.List; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport {
List<UserBean> users = null;
public List<UserBean> getUsers() {
return users;
}
public void setUsers(List<UserBean> users) {
this.users = users;
} UserBean user = new UserBean();
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
} UserDao dao = new UserDao(); public String list_users(){
HttpSession s = ServletActionContext.getRequest().getSession(); users = dao.list_users();
s.setAttribute("users", users);
System.out.println(users.toArray());
return SUCCESS;
} public String get(){
int id = Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));
//HttpSession s = ServletActionContext.getRequest().getSession();
user = dao.getUser(id);
//s.setAttribute("user", user);
return SUCCESS;
}
public String edit(){
int id = Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));
dao.edit(user, id);
return SUCCESS;
}
public String add(){
dao.add(user);
return SUCCESS;
}
}
(5)struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="suibian" extends="struts-default" namespace="/">
<action name="Test" class="com.phome.test.TestAction" method="excute">
<result name="success">/list.jsp</result> </action>
</package> <package name="list" extends="struts-default" namespace="/">
<action name="list" class="com.phome.crud.UserAction" method="list_users">
<result name="success">/list.jsp</result>
</action>
<action name="get" class="com.phome.crud.UserAction" method="get">
<result name="success">/edit.jsp</result>
</action>
<action name="edit" class="com.phome.crud.UserAction" method="edit">
<result name="success" type="redirectAction">list</result>
</action>
<action name="add" class="com.phome.crud.UserAction" method="add">
<result name="success" type="redirectAction">list</result>
</action>
</package>
</struts>
(6)list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>User List</title> <script type="text/javascript">
function del(src) {
if (confirm("确定要删除吗?")) {
window.location.href(src);
return;
}
}
</script>
</head> <body>
<div align="center">
<h1>用户列表</h1>
<a href="add.jsp"><strong>添加用户</strong></a><br/><br/>
<table align="center" border="1" cellspacing="0" cellpadding="0">
<thead style="background-color: #eeeeee">
<tr>
<th width="200px" >ID</th>
<th width="200px" >姓名</th>
<th width="200px" >性别</th>
<th width="200px" >年龄</th>
<th width="200px" >操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users}" var="user">
<tr height="15px">
<td align="center">${user.id }</td>
<td align="center">${user.name }</td>
<td align="center">${user.gender }</td>
<td align="center">${user.age }</td>
<td align="center"><a href="${pageContext.request.contextPath }/get.action?id=${user.id }">修改</a>
<a href="" onclick="del('bathPath')">删除</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
(7)add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>add product</title>
</head> <body>
<div align="center">
<h1>add user</h1>
<form action="${pageContext.request.contextPath }/add.action" method="post">
<table>
<tr>
<td width="80px">登陆名:</td>
<td><input type="text" name="user.loginid" value="${user.loginid }"/></td>
</tr>
<tr>
<td width="80px">登陆密码:</td>
<td><input type="text" name="user.loginpwd" value="${user.loginpwd }"/></td>
</tr>
<tr>
<td width="80px">姓名:</td>
<td><input type="text" name="user.name" value="${user.name }"/></td>
</tr>
<tr>
<td width="80px">性别:</td>
<td><input type="text" name="user.gender" value="${user.gender }"/></td>
</tr>
<tr>
<td width="80px">年龄:</td>
<td><input type="text" name="user.age" value="${user.age }"/></td>
</tr> <tr>
<td><a href="${pageContext.request.contextPath }/list.action">返回</a></td>
<td><input type="submit" value="添加"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
(8)edit.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>update user</title>
</head> <body>
<div align="center">
<h1>修改user</h1>
<form action="${pageContext.request.contextPath }/edit.action?id=${user.id }" method="post">
<input type="hidden" name="user.id" value="${user.id }"/>
<input type="hidden" name="user.loginid" value="${user.loginid }"/>
<input type="hidden" name="user.loginpwd" value="${user.loginpwd }"/>
<table>
<tr>
<td width="80px">姓名:</td>
<td><input type="text" name="user.name" value="${user.name }"/></td>
</tr>
<tr>
<td width="80px">性别:</td>
<td><input type="text" name="user.gender" value="${user.gender }"/></td>
</tr>
<tr>
<td width="80px">年龄:</td>
<td><input type="text" name="user.age" value="${user.age }"/></td>
</tr> <tr>
<td><a href="${pageContext.request.contextPath }/list.action">返回</a></td>
<td><input type="submit" value="修改"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
5.效果展示
Java——Struts2 crud 简单实例(学习struts2和ssh) 用Myeclipse实现的更多相关文章
- java反射机制简单实例
目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...
- struts2 的简单实例应用
功能:本实例实现的功能是从输入界面输入用户名和密码,若用户名和密码正确转到成功界面,否则转到失败界面. 1)在创建了一个JavaWeb工程后,导入struts2的核心支持包库. 2)web项目右击-M ...
- Java UDP的简单实例以及知识点简述
UDP的实现 Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类. 其与TCP协议实现不同的是: UDP的套接字DatagramSoc ...
- Java WebService 开发简单实例
Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service可以执行从简单的请求到复杂商务处理的任何功能.一旦部署以 ...
- Java RMI 最简单实例
IHello.java import java.rmi.Remote; import java.rmi.RemoteException; public interface IHello extends ...
- PHP调用JAVA的WebService简单实例
使用PHP调用JAVA语言开发的WebService.客户端提交两个String类型的参数,服务端返回一个对象类型.服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOA ...
- Java WebService(实战) 简单实例
一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...
- java反射机制-简单实例
public class Car { private String brand; private String color; private int maxSpeed; public Car() { ...
- 【SSH学习笔记】用Struts2实现简单的用户登录
准备阶段 在使用学习Struts2的时候首先要下载相应的架包 Struts2资源下载 这里建议下载第一个,在struts-2.5.14.1-all.zip里有很多实用的东西,不仅有架包还有官方为开发者 ...
随机推荐
- python之tkinter使用-滚动条
# GUI:tkinter使用 # 通过调节滚动条改变标签中字体大小 import tkinter as tk def resize(ev=None): '''改变label字体大小''' label ...
- selenium之调用Javascript
selenium调用Javascript使用方法: driver.execute_script(js) 使用JS获取元素文本值,代码片段如下: ...... js = "return $(' ...
- ceph 安装过程
安装依赖: yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org ...
- mysql5.7 rpm安装教程
注意版本和此次更新时间 2017-12-03 版本:mysql-5.7.20-1.el6.x86_64 环境:linux6.x 官方下载地址: wget https://dev.mysql.co ...
- BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...
- NOIP 2018 游记(退役了!)
一片空白 在霉的不能再霉的18年11月,Noip2018上,倒霉的我也是贼有意思,感冒加身,D2发烧,数组开小…我还能说什么MMP,身体和考试能力真的很重要. ……(省略无数字的心理活动,有空补上~) ...
- DeBruijin HDU - 2894(????????)
题意: 莫名其妙 看不懂..只能靠别人的题意混日子 a完就懂了 就是 POJ1392 不求第k个了 直接输出这个路径 emm ...就改了一下那个代码 #include <iostream ...
- MT【236】必要性探路
$\dfrac{lnx}{x+1}+\dfrac{1}{x}>\dfrac{lnx}{x-1}+\dfrac{k}{x}$对于任意$x>0$成立,求$k$的范围. 解答:由题意,对任意$x ...
- [HNOI2005]狡猾的商人 ,神奇做法——贪心
洛谷P2294 [HNOI2005]狡猾的商人 ,神奇做法--贪心 看到大牛都是写的差分约束或带权并查集,本蒟蒻都不太会(还是用差分约束过了的QAQ),但是想出一种贪心的策略,运用神奇的优先队列实现. ...
- Spark安装与介绍
1. Scala的安装 注意点:版本匹配的问题, Spark 1.6.2 -- Scala2.10 Spark 2.0.0 -- Scala2.11 https://www.scala-lang.or ...