2011-06-19 13:31 struts2 增删改查功能实现 上一篇讲到数据库验证用户名,这里介绍下,用户登录之后如何查看用户信息,和对用户信息的 增删改查功能实现。 先看下总体项目 有朋友说照着建立项目运行不了,所以就贴出项目的源代码,由于这个项目不知道放到哪里去了,所以自己又写了个,跟这个项目的代码可能会有点不一样,希望大家见谅 地址 http://115.com/file/bhylzuex 如果使用较早的Myeclipse 自己要加入struts2的包,要不然会显示有错误。。。。。。。。。。。。。。。。。。。。。。。。。。。。 这是用户登陆表 这是用户信息表 1.在用户输入用户名和密码登陆之后,我们可以直接调用一个查询所有用户信息的方法,这样就可以查看到所有用户信息了,所要做的就是要写多个方法来执行,然后返回给页面显示(在这里我没有做分页演示),大家要有耐心的看哦,代码有点多。。。 ------------------------------action类代码-------------------------- package laogen.action; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import laogen.common.DBcon; import laogen.dto.depDto; public class action { private String username;//注意这里跟index.jsp form里面的name属性要对应 private String password; private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } //然后生成setting getting public String getUsername() { return username; } p ublic void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //自己写个方法来执行登陆 public String login() throws Exception { Connection conn = DBcon.getConnection();// 这是用来连通数据库,记得,要下载个驱动程序,mysql Statement stmt = null; ResultSet rs1 = null; ResultSet rs2 = null; try { stmt = conn.createStatement(); String sql1 = "select * from userinfomation where username='" + this.username + "'"; rs1 = stmt.executeQuery(sql1); if (!rs1.next()) { // 判断用户名是不是 存在,如果不是则输出信息,返回界面 this.msg = "用户名不正确!"; return "Error"; } else { String sql2 = "select * from userinfomation where password='" + this.password + "'"; rs2 = stmt.executeQuery(sql2); if (!rs2.next()) { // 判断密码是不是存在,如果不是则输出信息,返回界面 this.msg = "密码不正确!"; return "Error"; } } rs1.close(); rs2.close(); stmt.close(); conn.close(); } catch (Excepti on e) { e.printStackTrace(); } //当上面验证成功了,调用下面的query方法,查出所有用户信息 return query(); } //这里是用来输出所有用户信息 public String query() throws Exception { Connection conn = DBcon.getConnection();// 这是用来连通数据库,记得,要下载个驱动程序,mysql Statement stmt = null; try { stmt = conn.createStatement(); String sql = "select * from dep"; // 从另一张表查出信息 ResultSet rs = stmt.executeQuery(sql); List
list = new ArrayList(); // new一个list while (rs.next()) { depDto dt = new depDto(); // 引进depDto dt.setId(rs.getInt("id")); dt.setName(rs.getString("name")); dt.setSex(rs.getString("sex")); dt.setTime(rs.getString("time"));// 这里你可以按你需要取出数据库的列的值 list.add(dt);// 把值添加到list里面 } //在这我们可以输出数据库里面有多少条记录 System.out.println("数据库里面有"+list.size()+"条记录"); // 把list 放到session中,传回给页面,所以页面只需接收listAll就可以了 HttpSession session = ServletActionContext.getRequest() .getSession(); session.setAttribute("listAll", list); conn.close(); rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return "query"; } //这里是添加信息的功能 public String add() throws Exception{ //首先要接收页面传过来的值 String name=ServletActionContext.getRequest().getParameter("name"); String sex=ServletActionContext.getRequest().getParameter("sex"); java.util.Date date = new java.util.Date(); String time=""; SimpleDateFormat s = new SimpleDateFormat("yyyy年-MM月dd日-HH:mm:ss"); time=s.format(date); //如果输出是乱码的话,就要转码了 System.out.println(name+sex+time); Connection conn = DBcon.getConnection(); Statement stmt = null; try { stmt=conn.createStatement(); String sql = "insert into dep(name,sex,time) values('"+name+ "','"+ sex+"','"+time+"')"; int i=stmt.executeUpdate(sql); if(i==0){ System.out.println("添加失败"); }else{ System.out.println("添加成功"); } conn.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } //return "add"; 如果你是返回这个,那么页面没有跟新到你新增的信息,所以在返回时要在查询一遍,也就是下面的方法 return query(); } //删除用户 public String d el() throws Exception{ String id=ServletActionContext.getRequest().getParameter("id"); System.out.println(id); int i=Integer.parseInt(id); Connection conn = DBcon.getConnection(); Statement stmt = null; try { stmt=conn.createStatement(); String sql = "delete from dep where id="+i; int a=stmt.executeUpdate(sql); if(a==0){ System.out.println("删除失败"); } conn.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return query(); } //修改用户信息 public String update() throws Exception{ //修改用户信息,首先要接收到要修改哪个用户的ID,然后返回给页面,给显示出该用户的所有信息 String id=ServletActionContext.getRequest().getParameter("id"); System.out.println(id); int i=Integer.parseInt(id); Connection conn = DBcon.getConnection(); Statement stmt = null; try { stmt=conn.createStatement(); String sql = "select * from dep where id="+i; ResultSet rs=stmt.executeQuery(sql); List list = new ArrayList(); // new一个list while (rs.next()) { depDto dt = new depDto(); // 引进depDto dt.setId(rs.getInt("id")); dt.setName(rs.getString("name")); dt.setSex(rs.getString("sex")); dt.setTime(rs.getString("time")); list.add(dt);// 把值添加到list里面 } H ttpSession session = ServletActionContext.getRequest() .getSession(); session.setAttribute("list", list); conn.close(); rs.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return "update"; } //接受修改页面传过来的值 public String update1() throws Exception{ //我在这只接受sex ,id 如果没有ID的话,就会把全部更新了,不是我们想要的效果 String sex=ServletActionContext.getRequest().getParameter("sex"); String id=ServletActionContext.getRequest().getParameter("id"); int i=Integer.parseInt(id); System.out.println(sex); Connection conn=DBcon.getConnection(); Statement stmt=null; try { stmt=conn.createStatement(); String sql="update dep set sex='"+sex+"' where id="+i; stmt.executeUpdate(sql); conn.close(); stmt.close(); } catch (Exception e) { e.printStackTrace(); } return query(); } } --------------------------------------------------------------depDto------------------------------------------------------------------------------- depDto.java 代码 package laogen.dto; public class depDto { private int id; private String name; private String sex; private String time; //生成setting和getting 方法 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } } 2.-------------------------------类写好了,就要配置好struts.xml------------------------------- /index.jsp /query.jsp /query.jsp /update.jsp 3.------------------------------------------------接着就是页面显示代码和添加页面的代码了---------------------------------------------------- ------简要说明下,这里是使用了struts2的iterator来循环输出,"#session.listAll" 是从action类传回来的listAll------- query.jsp 页面代码 <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> 查询所以信息界面 ----------------------------------------------------------------------------- add.jsp 页面代码 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> 增加员工 增加信息
--------------------------------------------------------------------------------- 登陆界面的代码 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags"%> 登陆界面
================================================== 更新页面 update.jsp <%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 修改 修改
是挺多的,大家可以学习下,打了好久啊。。。支持下吧。。。。。。。。。。。 如果是sql数据库的也是可以的 只要把里面的那个连接数据库的类改下就可以了:看代码 public class DBConnection { //创建连接 public static Connection getConnection() { Connection DBconn = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;databasename=Oexam"; //Oexam为数据库名称 String user = "sa";//用户名 String password = "123";//用户名密码 DBconn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e1) { System.out.println("驱动程序加载错误"); } catch (SQLException e2) { System.out.println("数据库连接时错误"); } catch (Exception e3) { e3.printStackTrace(); } return DBconn; } //关门连接 public static void clear(Connection DBconn) { if (DBconn != null) { try { DBconn.close(); } catch (SQLException e) { e.printStackTrace(); } } }