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里有很多实用的东西,不仅有架包还有官方为开发者 ...
随机推荐
- elk认证模块x-pack安装
一.elasticsearch安装x-pack elasticsearch/bin/elasticsearch-plugin install x-pack ######## -> Downloa ...
- 【Linux】工作管理
在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此间是有相关性的.我们无法以job control的方式由tty1的环境去管理tty2的bash 当只有一个终端时,可以出现提示符让你 ...
- codeforces 797B
B. Odd sum time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Codeforces Round #404 (Div. 2)A,B,C
A. Anton and Polyhedrons 题目链接:http://codeforces.com/contest/785/problem/A 智障水题 实现代码: #include<bit ...
- MT【222】几道自招面试真题
1.(2015东南大学)2分钟找杯子,4分钟找茶叶,7分钟烧水,爸爸花13分钟给家访的老师泡茶,请问你怎么看? 2.(2014复旦大学)共有5顶帽子,三个黑的两个白的,三个人排成一排,并让这三个人每个 ...
- 【BZOJ3202】项链(莫比乌斯反演,Burnside引理)
[BZOJ3202]项链(莫比乌斯反演,Burnside引理) 题面 BZOJ 洛谷 题解 首先读完题目,很明显的感觉就是,分成了两个部分计算. 首先计算本质不同的珠子个数,再计算本质不同的项链个数. ...
- CodeForces 464E The Classic Problem | 呆克斯歘 主席树维护高精度
题意描述 有一个\(n\)点\(m\)边的无向图,第\(i\)条边的边权是\(2^{a_i}\).求点\(s\)到点\(t\)的最短路长度(对\(10^9 + 7\)取模). 题解 思路很简单--用主 ...
- 洛谷 P2059 [JLOI2013]卡牌游戏 解题报告
P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的 ...
- 爬楼梯问题 leetcode70
假设你正在爬楼梯,需要n阶你才能到达楼顶,n是正整数 每次你可以爬1或2个台阶,有多少种不同的方法可以爬到楼顶 当n=1时,steps=1 当n=2时,1+1,2 steps=2 当n=3时,1+1+ ...
- [虚树模板] 洛谷P2495 消耗战
题意:给定树上k个点,求切断这些点到根路径的最小代价.∑k <= 5e5 解:虚树. 构建虚树大概是这样的:设加入点与栈顶的lca为y,比较y和栈中第二个元素的DFS序大小关系. 代码如下: i ...