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>&nbsp;&nbsp;
<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实现的更多相关文章

  1. java反射机制简单实例

    目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...

  2. struts2 的简单实例应用

    功能:本实例实现的功能是从输入界面输入用户名和密码,若用户名和密码正确转到成功界面,否则转到失败界面. 1)在创建了一个JavaWeb工程后,导入struts2的核心支持包库. 2)web项目右击-M ...

  3. Java UDP的简单实例以及知识点简述

    UDP的实现 Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类. 其与TCP协议实现不同的是: UDP的套接字DatagramSoc ...

  4. Java WebService 开发简单实例

    Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service可以执行从简单的请求到复杂商务处理的任何功能.一旦部署以 ...

  5. Java RMI 最简单实例

    IHello.java import java.rmi.Remote; import java.rmi.RemoteException; public interface IHello extends ...

  6. PHP调用JAVA的WebService简单实例

    使用PHP调用JAVA语言开发的WebService.客户端提交两个String类型的参数,服务端返回一个对象类型.服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOA ...

  7. Java WebService(实战) 简单实例

    一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...

  8. java反射机制-简单实例

    public class Car { private String brand; private String color; private int maxSpeed; public Car() { ...

  9. 【SSH学习笔记】用Struts2实现简单的用户登录

    准备阶段 在使用学习Struts2的时候首先要下载相应的架包 Struts2资源下载 这里建议下载第一个,在struts-2.5.14.1-all.zip里有很多实用的东西,不仅有架包还有官方为开发者 ...

随机推荐

  1. logstash 使用kafka范例

    写入到kafka input { stdin { } } output { kafka { bootstrap_servers => "10.0.0.200:9092" to ...

  2. 线性代数的本质与几何意义 01. 向量是什么?(3blue1brown 咪博士 图文注解版)

    向量是线性代数最基础.最基本的概念之一,要深入理解线性代数的本质,首先就要搞清楚向量到底是什么? 向量之所以让人迷糊,是因为我们在物理.数学,以及计算机等许多地方都见过它,但又没有彻底弄懂,以至于似是 ...

  3. Laravel表单传值

    仔细阅读过Laravel官方文档的就不用看啦~ 整理下之前遇到的关于Laravel表单的一些小问题 表单传值无法传过去,因为laravel做了表单的防护 只需要将{{ csrf_field() }}放 ...

  4. 【Linux】Centos6.8下一键安装Lamp环境

    [下载地址] 以下三种都是快捷安装环境的工具,都提供相应的脚本,原理都相同,一个会了其他的也就都会了,我用的比较多的会是lnmp和oneinstack,最近在用的都是oneinstack,挺好用的. ...

  5. spring boot 系列之五:spring boot 通过devtools进行热部署

    前面已经分享过四篇随笔: spring boot 系列之一:spring boot 入门 spring boot 系列之二:spring boot 如何修改默认端口号和contextpath spri ...

  6. 【HDU5831】Rikka with Parenthesis II(括号)

    BUPT2017 wintertraining(16) #4 G HDU - 5831 题意 给定括号序列,问能否交换一对括号使得括号合法. 题解 注意()是No的情况. 任意时刻)不能比(超过2个以 ...

  7. 自学Python1.7-python变量以及类型

    自学Python之路 自学Python1.7-python 变量以及类型 1 变量是什么 变量是容器 2 变量的作用 存储数据到内存 3 为什么要用变量 存储数据方便后面引用 4 变量定义的规范 变量 ...

  8. linux一次性解压多个.gz或者.tar.gz文件

    对于解压多个.gz文件的,用此命令: for gz in *.gz; do gunzip $gz; done 对于解压多个.tar.gz文件的,用下面命令: for tar in *.tar.gz; ...

  9. 【BZOJ1856】[SCOI2010]字符串(组合数学)

    [BZOJ1856][SCOI2010]字符串(组合数学) 题面 BZOJ 洛谷 题解 把放一个\(1\)看做在平面直角坐标系上沿着\(x\)正半轴走一步,放一个\(0\)看做往\(y\)轴正半轴走一 ...

  10. Haproxy Mysql cluster 高可用Mysql集群

    -----client-----------haproxy---------mysql1----------mysql2------192.168.1.250 192.168.1.1 192.168. ...