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. 将字符串以用二进制流的形式读入XML文件

    其实将字符串写入XML文件本身并不复杂,这里只是写一些需要注意的地方,特别是编码格式,这里需要的是XML默认的编码方式是UTF-8,在对字符串进行编码的时候一定要注意, string strRecei ...

  2. codeforces387B

    George and Round CodeForces - 387B George decided to prepare a Codesecrof round, so he has prepared  ...

  3. HDU4403-模拟、数学

    一道很难的奥数题,给出一个数字串,插入加号和等号使之成立.求成立的算式数. 我的做法是,先分成两段,中间插入等号 ,再分别求出左右两边可能的值和个数,然后对比,把值相等的情况乘起来,加到最终结果上. ...

  4. TiKV 源码解析系列文章(三)Prometheus(上)

    本文为 TiKV 源码解析系列的第三篇,继续为大家介绍 TiKV 依赖的周边库 rust-prometheus,本篇主要介绍基础知识以及最基本的几个指标的内部工作机制,下篇会介绍一些高级功能的实现原理 ...

  5. 学习Spring Boot:(二十三)Spring Boot 中使用 Docker

    前言 简单的学习下怎么在 Spring Boot 中使用 Docker 进行构建,发布一个镜像,现在我们通过远程的 docker api 构建镜像,运行容器,发布镜像等操作. 这里只介绍两种方式: 远 ...

  6. 通过 powershell 配置 IIS

    1. 设置iis pool: cls Import-Module WebAdministration Get-ChildItem IIS:\apppools | ForEach-Object{     ...

  7. SharePoint “File not found” 错误

    Troubleshooting the SharePoint "File not found" Error Have you ever come across a "Fi ...

  8. 洛谷 P4127 [AHOI2009]同类分布 解题报告

    P4127 [AHOI2009]同类分布 题目描述 给出两个数\(a,b\),求出\([a,b]\)中各位数字之和能整除原数的数的个数. 说明 对于所有的数据,\(1 ≤ a ≤ b ≤ 10^{18 ...

  9. Ubuntu/Unity中更改窗口修饰键Alt为Super

    在Ubuntu中的Unity桌面环境里,可以使用Alt配合鼠标左键拖动窗口,这一方便的设定有许多不方便的地方.和很多的软件有热键上的冲突,比如Visual Stdio Code的多光标控制功能. 注意 ...

  10. .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决

    环境: .net 4.0以上使用Oracle.ManagedDataAccess组件链接oracle数据库,应用程序与数据库之间存在硬件防火墙. 症状:应用程序启动后正常访问,如果出现长时间无数据库请 ...