1.new web project


2.给新建的web项目添加struts2支持


3.项目结构中有了struts.xml和struts2核心库


4.编码

  4.1项目结构图

   

  

  4.2源代码:

  (1)DbUtil

  1. package com.phome.crud;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. /**
  10. * 数据库工具类
  11. * @author yangzl
  12. *
  13. */
  14. public class DbUtil
  15. {
  16.  
  17. //驱动名
  18. private static final String Driver = "com.mysql.jdbc.Driver";
  19. //数据库连接路径
  20. private static final String URL = "jdbc:mysql://localhost:3306/user";
  21. //数据库连接用户名及密码
  22. private static final String user = "root";
  23. private static final String password = "root";
  24.  
  25. /**
  26. * 加载数据库驱动
  27. * @throws ClassNotFoundException(加载异常)
  28. */
  29. private static void registerDriver() throws ClassNotFoundException
  30. {
  31. try
  32. {
  33. Class.forName(Driver);
  34. }
  35. catch (ClassNotFoundException e)
  36. {
  37. System.out.println((new StringBuilder("【加载数据库驱动时,发生异常】\n")).append(e.getMessage()).toString());
  38. throw e;
  39. }
  40. }
  41.  
  42. /**
  43. * 得到数据库连接
  44. * @return
  45. * @throws SQLException
  46. * @throws ClassNotFoundException
  47. */
  48. public static Connection getConnection()
  49. throws SQLException, ClassNotFoundException
  50. {
  51. Connection conn = null;
  52. try
  53. {
  54. registerDriver();
  55. conn = DriverManager.getConnection(URL, user, password);
  56. }
  57. catch (SQLException e)
  58. {
  59. System.out.println((new StringBuilder("【得到数据库连接时,发生异常】\n")).append(e.getMessage()).toString());
  60. throw e;
  61. }
  62. return conn;
  63. }
  64.  
  65. public static int executeUpdate(String sql, Object args[])
  66. {
  67. int rows;
  68. rows = -1;
  69. Connection conn = null;
  70. PreparedStatement pst = null;
  71. try {
  72. conn=getConnection();
  73. pst=conn.prepareStatement(sql);
  74. if (args != null)
  75. {
  76. for (int i = 0; i < args.length; i++)
  77. pst.setObject(i + 1, args[i]);
  78.  
  79. }
  80. rows = pst.executeUpdate();
  81. close(pst);
  82. close(conn);
  83. return rows;
  84. } catch (SQLException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. } catch (ClassNotFoundException e) {
  88. // TODO Auto-generated catch block
  89. e.printStackTrace();
  90. }
  91. return -1;
  92. }
  93.  
  94. public static void close(Connection conn)
  95. throws SQLException
  96. {
  97. if (conn != null)
  98. try
  99. {
  100. conn.close();
  101. }
  102. catch (SQLException e)
  103. {
  104. System.out.println((new StringBuilder("【数据库连接对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
  105. throw e;
  106. }
  107. }
  108.  
  109. public static void close(Statement state)
  110. throws SQLException
  111. {
  112. if (state != null)
  113. try
  114. {
  115. state.close();
  116. }
  117. catch (SQLException e)
  118. {
  119. System.out.println((new StringBuilder("【SQL命令对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
  120. throw e;
  121. }
  122. }
  123.  
  124. public static void close(PreparedStatement pst)
  125. throws SQLException
  126. {
  127. if (pst != null)
  128. try
  129. {
  130. pst.close();
  131. }
  132. catch (SQLException e)
  133. {
  134. System.out.println((new StringBuilder("【预处理SQL命令对象在关闭时,发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
  135. throw e;
  136. }
  137. }
  138.  
  139. public static void close(ResultSet rs)
  140. throws SQLException
  141. {
  142. if (rs != null)
  143. try
  144. {
  145. rs.close();
  146. }
  147. catch (SQLException e)
  148. {
  149. System.out.println((new StringBuilder("【关闭结果集对象时发生异常!】\n【异常信息】")).append(e.getMessage()).toString());
  150. throw e;
  151. }
  152. }
  153. }

  (2)UserBean.java

  1. package com.phome.crud;
  2.  
  3. public class UserBean {
  4. private int id;
  5. private String loginid;
  6. private String loginpwd;
  7. private String name;
  8. private String gender;
  9. private int age;
  10. public int getId() {
  11. return id;
  12. }
  13. public void setId(int id) {
  14. this.id = id;
  15. }
  16. public String getLoginid() {
  17. return loginid;
  18. }
  19. public void setLoginid(String loginid) {
  20. this.loginid = loginid;
  21. }
  22. public String getLoginpwd() {
  23. return loginpwd;
  24. }
  25. public void setLoginpwd(String loginpwd) {
  26. this.loginpwd = loginpwd;
  27. }
  28. public String getName() {
  29. return name;
  30. }
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34. public String getGender() {
  35. return gender;
  36. }
  37. public void setGender(String gender) {
  38. this.gender = gender;
  39. }
  40. public int getAge() {
  41. return age;
  42. }
  43. public void setAge(int age) {
  44. this.age = age;
  45. }
  46.  
  47. }

  (3).UserDao.java

  1. package com.phome.crud;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class UserDao {
  11. public List<UserBean> list_users(){
  12. List<UserBean> list = new ArrayList<UserBean>();
  13. String sql = "select * from users";
  14.  
  15. try {
  16. Connection conn = DbUtil.getConnection();
  17. PreparedStatement pst = conn.prepareStatement(sql);
  18. ResultSet rs = pst.executeQuery();
  19. while(rs.next()){
  20. UserBean user = new UserBean();
  21. user.setId(rs.getInt("id"));
  22. user.setLoginid(rs.getString("loginid"));
  23. user.setLoginpwd(rs.getString("loginpwd"));
  24. user.setName(rs.getString("name"));
  25. user.setGender(rs.getString("gender"));
  26. user.setAge(rs.getInt("age"));
  27.  
  28. list.add(user);
  29. }
  30. rs.close();
  31. pst.close();
  32. conn.close();
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. } catch (ClassNotFoundException e) {
  36. e.printStackTrace();
  37. }
  38. return list;
  39. }
  40.  
  41. public UserBean getUser(int id){
  42. UserBean user = new UserBean();
  43. String sql = "select * from users where id = " + id;
  44.  
  45. try {
  46. Connection conn = DbUtil.getConnection();
  47. PreparedStatement pst = conn.prepareStatement(sql);
  48. ResultSet rs = pst.executeQuery();
  49. while(rs.next()){
  50. user.setId(rs.getInt("id"));
  51. user.setLoginid(rs.getString("loginid"));
  52. user.setLoginpwd(rs.getString("loginpwd"));
  53. user.setName(rs.getString("name"));
  54. user.setGender(rs.getString("gender"));
  55. user.setAge(rs.getInt("age"));
  56.  
  57. }
  58. rs.close();
  59. pst.close();
  60. conn.close();
  61. } catch (SQLException e) {
  62. e.printStackTrace();
  63. } catch (ClassNotFoundException e) {
  64. e.printStackTrace();
  65. }
  66.  
  67. return user;
  68. }
  69.  
  70. public int edit(UserBean user,int id){
  71. String sql = "UPDATE users SET name=?,gender=?,age=? WHERE id="+id;
  72.  
  73. try {
  74. Connection conn = DbUtil.getConnection();
  75. PreparedStatement pst = conn.prepareStatement(sql);
  76.  
  77. pst.setString(1,user.getName());
  78. pst.setString(2,user.getGender());
  79. pst.setInt(3,user.getAge());
  80.  
  81. int rows = pst.executeUpdate();
  82.  
  83. pst.close();
  84. conn.close();
  85. return rows;
  86. } catch (SQLException e) {
  87. e.printStackTrace();
  88. } catch (ClassNotFoundException e) {
  89. e.printStackTrace();
  90. }
  91. return -1;
  92. }
  93.  
  94. public int add(UserBean user){
  95. String sql = "INSERT INTO users VALUES(DEFAULT,?,?,?,?,?)";
  96.  
  97. try {
  98. Connection conn = DbUtil.getConnection();
  99. PreparedStatement pst = conn.prepareStatement(sql);
  100.  
  101. pst.setString(1,user.getLoginid());
  102. pst.setString(2,user.getLoginpwd());
  103. pst.setString(3,user.getName());
  104. pst.setString(4,user.getGender());
  105. pst.setInt(5,user.getAge());
  106.  
  107. int rows = pst.executeUpdate();
  108.  
  109. pst.close();
  110. conn.close();
  111. return rows;
  112. } catch (SQLException e) {
  113. // TODO Auto-generated catch block
  114. e.printStackTrace();
  115. } catch (ClassNotFoundException e) {
  116. // TODO Auto-generated catch block
  117. e.printStackTrace();
  118. }
  119. return -1;
  120. }
  121. }

  (4)UserAction.java

  1. package com.phome.crud;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.ServletActionContext;
  8.  
  9. import com.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class UserAction extends ActionSupport {
  12. List<UserBean> users = null;
  13. public List<UserBean> getUsers() {
  14. return users;
  15. }
  16. public void setUsers(List<UserBean> users) {
  17. this.users = users;
  18. }
  19.  
  20. UserBean user = new UserBean();
  21. public UserBean getUser() {
  22. return user;
  23. }
  24. public void setUser(UserBean user) {
  25. this.user = user;
  26. }
  27.  
  28. UserDao dao = new UserDao();
  29.  
  30. public String list_users(){
  31. HttpSession s = ServletActionContext.getRequest().getSession();
  32.  
  33. users = dao.list_users();
  34. s.setAttribute("users", users);
  35. System.out.println(users.toArray());
  36. return SUCCESS;
  37. }
  38.  
  39. public String get(){
  40. int id = Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));
  41. //HttpSession s = ServletActionContext.getRequest().getSession();
  42. user = dao.getUser(id);
  43. //s.setAttribute("user", user);
  44. return SUCCESS;
  45. }
  46. public String edit(){
  47. int id = Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));
  48. dao.edit(user, id);
  49. return SUCCESS;
  50. }
  51. public String add(){
  52. dao.add(user);
  53. return SUCCESS;
  54. }
  55. }

  (5)struts.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
  3. <struts>
  4. <package name="suibian" extends="struts-default" namespace="/">
  5. <action name="Test" class="com.phome.test.TestAction" method="excute">
  6. <result name="success">/list.jsp</result>
  7.  
  8. </action>
  9. </package>
  10.  
  11. <package name="list" extends="struts-default" namespace="/">
  12. <action name="list" class="com.phome.crud.UserAction" method="list_users">
  13. <result name="success">/list.jsp</result>
  14. </action>
  15. <action name="get" class="com.phome.crud.UserAction" method="get">
  16. <result name="success">/edit.jsp</result>
  17. </action>
  18. <action name="edit" class="com.phome.crud.UserAction" method="edit">
  19. <result name="success" type="redirectAction">list</result>
  20. </action>
  21. <action name="add" class="com.phome.crud.UserAction" method="add">
  22. <result name="success" type="redirectAction">list</result>
  23. </action>
  24. </package>
  25. </struts>

  (6)list.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3.  
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme() + "://"
  7. + request.getServerName() + ":" + request.getServerPort()
  8. + path + "/";
  9. %>
  10.  
  11. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  12. <html>
  13. <head>
  14. <title>User List</title>
  15.  
  16. <script type="text/javascript">
  17. function del(src) {
  18. if (confirm("确定要删除吗?")) {
  19. window.location.href(src);
  20. return;
  21. }
  22. }
  23. </script>
  24. </head>
  25.  
  26. <body>
  27. <div align="center">
  28. <h1>用户列表</h1>
  29. <a href="add.jsp"><strong>添加用户</strong></a><br/><br/>
  30. <table align="center" border="1" cellspacing="0" cellpadding="0">
  31. <thead style="background-color: #eeeeee">
  32. <tr>
  33. <th width="200px" >ID</th>
  34. <th width="200px" >姓名</th>
  35. <th width="200px" >性别</th>
  36. <th width="200px" >年龄</th>
  37. <th width="200px" >操作</th>
  38. </tr>
  39. </thead>
  40. <tbody>
  41. <c:forEach items="${users}" var="user">
  42. <tr height="15px">
  43. <td align="center">${user.id }</td>
  44. <td align="center">${user.name }</td>
  45. <td align="center">${user.gender }</td>
  46. <td align="center">${user.age }</td>
  47. <td align="center"><a href="${pageContext.request.contextPath }/get.action?id=${user.id }">修改</a>&nbsp;&nbsp;
  48. <a href="" onclick="del('bathPath')">删除</a></td>
  49. </tr>
  50. </c:forEach>
  51. </tbody>
  52. </table>
  53. </div>
  54. </body>
  55. </html>

  (7)add.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2.  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <title>add product</title>
  7. </head>
  8.  
  9. <body>
  10. <div align="center">
  11. <h1>add user</h1>
  12. <form action="${pageContext.request.contextPath }/add.action" method="post">
  13. <table>
  14. <tr>
  15. <td width="80px">登陆名:</td>
  16. <td><input type="text" name="user.loginid" value="${user.loginid }"/></td>
  17. </tr>
  18. <tr>
  19. <td width="80px">登陆密码:</td>
  20. <td><input type="text" name="user.loginpwd" value="${user.loginpwd }"/></td>
  21. </tr>
  22. <tr>
  23. <td width="80px">姓名:</td>
  24. <td><input type="text" name="user.name" value="${user.name }"/></td>
  25. </tr>
  26. <tr>
  27. <td width="80px">性别:</td>
  28. <td><input type="text" name="user.gender" value="${user.gender }"/></td>
  29. </tr>
  30. <tr>
  31. <td width="80px">年龄:</td>
  32. <td><input type="text" name="user.age" value="${user.age }"/></td>
  33. </tr>
  34.  
  35. <tr>
  36. <td><a href="${pageContext.request.contextPath }/list.action">返回</a></td>
  37. <td><input type="submit" value="添加"/></td>
  38. </tr>
  39. </table>
  40. </form>
  41. </div>
  42. </body>
  43. </html>

  (8)edit.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2.  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <title>update user</title>
  7. </head>
  8.  
  9. <body>
  10. <div align="center">
  11. <h1>修改user</h1>
  12. <form action="${pageContext.request.contextPath }/edit.action?id=${user.id }" method="post">
  13. <input type="hidden" name="user.id" value="${user.id }"/>
  14. <input type="hidden" name="user.loginid" value="${user.loginid }"/>
  15. <input type="hidden" name="user.loginpwd" value="${user.loginpwd }"/>
  16. <table>
  17. <tr>
  18. <td width="80px">姓名:</td>
  19. <td><input type="text" name="user.name" value="${user.name }"/></td>
  20. </tr>
  21. <tr>
  22. <td width="80px">性别:</td>
  23. <td><input type="text" name="user.gender" value="${user.gender }"/></td>
  24. </tr>
  25. <tr>
  26. <td width="80px">年龄:</td>
  27. <td><input type="text" name="user.age" value="${user.age }"/></td>
  28. </tr>
  29.  
  30. <tr>
  31. <td><a href="${pageContext.request.contextPath }/list.action">返回</a></td>
  32. <td><input type="submit" value="修改"/></td>
  33. </tr>
  34. </table>
  35. </form>
  36. </div>
  37. </body>
  38. </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. Delphi学习技巧

    我感觉学习最大的诀窍是, 尽快捕捉到设计者(Delphi VCL 的设计者.进而是 Windows 操作系统的设计者)的某些思路, 和大师的思路吻合了, 才能够融汇贯通, 同时从容使用它们的成果. 碰 ...

  2. gitlab搭建与配置说明

    1. 概述 Gitlab分为社区版和企业版,此次安装的是社区版(gitlab-ce). 2. 准备 本次使用系统为Ubuntu16.04. 3. 安装 添加GitLab仓库,并安装到服务器上(将git ...

  3. Quartz.NET 前一次任务未执行完成时不触发下次的解决方法

    如图所示,在Job 上 加     [DisallowConcurrentExecution]        特性

  4. Unsupported major.minor version ... JDK具体对应版本

    java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher : Unsupported major.minor version 5 ...

  5. Java -- JDBC 学习--通过Statement进行数据库更新操作

    通过 JDBC 向指定的数据表中插入一条记录. 1. Statement: 用于执行 SQL 语句的对象 1). 通过 Connection 的 createStatement() 方法来获取 2). ...

  6. DownloadProvider 源码详细分析

    DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了“开始下载”,“暂停下载”,“重新下载 ...

  7. 洛谷P3768 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  8. zookeeper安装和使用(Windows环境)

    zookeeper安装和使用(Windows环境) 2017年11月27日 10:36:07 董昊炘的博客 阅读数:14785 标签: zookeeperwindows   zookeeper 一.简 ...

  9. 洛谷 P1880 [NOI1995] 石子合并(区间DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...

  10. ELK技术实战-安装Elk 5.x平台

    ELK技术实战–了解Elk各组件   转载  http://www.ywnds.com/?p=9776 ELK技术实战-部署Elk 2.x平台 ELK Stack是软件集合Elasticsearch. ...