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. python之tkinter使用-滚动条

    # GUI:tkinter使用 # 通过调节滚动条改变标签中字体大小 import tkinter as tk def resize(ev=None): '''改变label字体大小''' label ...

  2. selenium之调用Javascript

    selenium调用Javascript使用方法: driver.execute_script(js) 使用JS获取元素文本值,代码片段如下: ...... js = "return $(' ...

  3. ceph 安装过程

    安装依赖: yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org ...

  4. mysql5.7 rpm安装教程

    注意版本和此次更新时间 2017-12-03  版本:mysql-5.7.20-1.el6.x86_64  环境:linux6.x ​官方下载地址: wget https://dev.mysql.co ...

  5. BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树

    题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...

  6. NOIP 2018 游记(退役了!)

    一片空白 在霉的不能再霉的18年11月,Noip2018上,倒霉的我也是贼有意思,感冒加身,D2发烧,数组开小…我还能说什么MMP,身体和考试能力真的很重要. ……(省略无数字的心理活动,有空补上~) ...

  7. DeBruijin HDU - 2894(????????)

    题意: 莫名其妙 看不懂..只能靠别人的题意混日子 a完就懂了  就是 POJ1392  不求第k个了  直接输出这个路径 emm ...就改了一下那个代码 #include <iostream ...

  8. MT【236】必要性探路

    $\dfrac{lnx}{x+1}+\dfrac{1}{x}>\dfrac{lnx}{x-1}+\dfrac{k}{x}$对于任意$x>0$成立,求$k$的范围. 解答:由题意,对任意$x ...

  9. [HNOI2005]狡猾的商人 ,神奇做法——贪心

    洛谷P2294 [HNOI2005]狡猾的商人 ,神奇做法--贪心 看到大牛都是写的差分约束或带权并查集,本蒟蒻都不太会(还是用差分约束过了的QAQ),但是想出一种贪心的策略,运用神奇的优先队列实现. ...

  10. Spark安装与介绍

    1. Scala的安装 注意点:版本匹配的问题, Spark 1.6.2 -- Scala2.10 Spark 2.0.0 -- Scala2.11 https://www.scala-lang.or ...