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;
}
public 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 (Exception 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 del() 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里面
}
HttpSession 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();
}
}
}