标签:struts2 mysql interceptor mvc 用户注册系统
最近写了一个用户注册系统,大部分已经写完,但是还有一些边角料没写,但是也都是大同小异,我就不再写了,赶着去学习hibernate了,spring还没接触呢!!!时间好紧迫啊!!!
jsp界面
users的jsp界面
admin的jsp界面
struts.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--<constant name="struts.i18n.encoding" value="GBK" /> 指定字符编码
-->
<!-- 分——————————————————————————————————————割——————————————————————————————————————线 -->
<package name="users" extends="struts-default" ><!-- 不收权限控制的Action配置 -->
<action name="register" class="com.huizhi.users.action.RegisterAction" method="register">
<!-- 用户注册Action -->
<result name="success">/regsucc.jsp</result>
<result name="input">/register.jsp</result>
</action>
<!-- ****************************************-->
<action name="login" class="com.huizhi.users.action.LoginAction" method="login">
<!-- 用户注册Action -->
<result name="success">/main.jsp</result>
<result name="input">/index.jsp</result>
</action>
<!-- ****************************************-->
<action name="adminLogin" class="com.huizhi.admin.action.AdminLoginAction" method="adminLogin" >
<result name="success">/admin/main.jsp</result>
<result name="input">/admin/input.jsp</result>
</action>
</package>
<!-- 分——————————————————————————————————————割——————————————————————————————————————线 -->
<package name="users-authority" extends="struts-default"><!-- 收权限控制的Action配置 -->
<!-- 定义拦截器 -->
<interceptors>
<interceptor name="authority" class="com.huizhi.util.AuthorityInterceptor" />
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" />
<!-- 定义全局result -->
<global-results>
<result name="error">/error.jsp</result>
<result name="login" type="redirect">index.jsp</result>
</global-results>
<!-- ****************************************-->
<!-- 查看所有用户 -->
<action name="findalluser" class="com.huizhi.users.action.FindAllUsersAction" method="findAllUsers">
<result name="input">/admin/allusers.jsp</result>
<result name="success">/allusers.jsp</result>
</action>
<!-- ****************************************-->
<!-- 查看用户个人的信息 -->
<action name="selectinfo" class="com.huizhi.users.action.SelectInfoAction" method="selectInfo">
<result name="input"></result>
<result name="success">/selectinfo.jsp</result>
<result name="find"></result>
</action>
<!-- ****************************************-->
<!-- 修改用户个人的信息 -->
<action name="update" class="com.huizhi.users.action.UpdateAction" method="update">
<result name="success">/updatesucc.jsp</result>
<result name="input">/selectinfo.jsp</result>
</action>
<!-- ****************************************-->
<!-- 查看所有管理员信息 -->
<action name="findalladmin" class="com.huizhi.admin.action.FindAllAdminAction" method="findAllAdmin">
<result name="success">/admin/alladmin.jsp</result>
</action>
<!-- ****************************************-->
<!-- 删除管理员信息 -->
<action name="deleteAdmin" class="com.huizhi.admin.action.DeleteAdminAction" method="deleteAdmin">
<result name="success">/admin/succ.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
<!-- 分——————————————————————————————————————割——————————————————————————————————————线 -->
</struts>
sql文件
create database reg;
create table `reg`.`users` (
`id` int not null,
`username` varchar(20) not null,
`password` varchar(20) not null,
`name` varchar(20) not null,
`nic` varchar(30) not null,
`sex` char(2) not null,
`age` int null,
`email` varchar(30) null,
`phone` varchar(20) null,
`selfshow` varchar(300) null,
primary key (`id`)
);
create table `reg`.`admin` (
`id` int,
`username` varchar(20) not null,
`password` varchar(20) not null,
`name` varchar(20) not null,
`qx` int not null,
primary key (`id`)
);
select *
from users;
ALTER TABLE `reg`.`users`
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
insert into `users`
(`username`, `password`, `name`, `nic`, `sex`, `age`, `email`, `phone`, `selfshow`)
VALUES
('e', 'er', 'qw', 'we', 'w', '1', 'we', 'r', 'www');
use reg;
select *
from `reg`.`users`
where username = "xiaofeng";
update users
set
password="998",
name="xiaoming",
nic="xiaoxiao",
sex="妖",
age=998,
email="dei!yaojing@163.com",
phone="120110198",
selfshow="嘚!妖怪!!!哪里跑,交出命来~~~~"
where username="e" and id="5";
--#关于管理员那个表的SQL语句
INSERT INTO `reg`.`admin` (`id`, `username`, `password`, `name`, `qx`)
VALUES (NULL, 'xiaofeng', 'xiaofeng', 'xiaofeng', '998');
--#把id设置为自动增长
ALTER TABLE `reg`.`admin`
change column id
id int(11) not null auto_increment;
select *
from admin
where username="xiaofeng" and password="xiaofeng";
select *
from admin;
INSERT INTO `reg`.`admin` (`username`, `password`, `name`, `qx`)
VALUES ('xujuan', 'xujuan', 'xujuan', '2');
INSERT INTO `reg`.`admin` (`username`, `password`, `name`, `qx`)
VALUES ('yanyan', 'yanyan', 'yanyan', '2');
insert into admin (`username`, `password`, `name`, `qx`)
values ('X', 'X', 'X先生', '1');
insert into admin (`username`, `password`, `name`, `qx`)
values ('y', 'y', 'y先生', '1');
insert into admin (`username`, `password`, `name`, `qx`)
values ('z', 'z', 'z先生', '1');
delete
from admin
where id=7;
action包
usersaction
adminaction
dao包
usersdao
/**
* 书本:【struts2】+【hibernate】+【Spring】整合开发技术详解
* 功能:用户注册系统
* 文件:DatabaseDAO.java
* 时间:2014年11月11日21:36:01
* 作者:cutter_point
*/
package com.huizhi.users.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.huizhi.database.DatabaseDAO;
import com.huizhi.vo.Users;
public class UsersDAO
{
private Connection con; //定义连接对象
private PreparedStatement pt; //定义预处理对象
private ResultSet rs; //定义结果集对象
//更新数据的方法
public int update(Users users)
{
int i = 0;
con = DatabaseDAO.getConnection(); //获得连接对象
String sql = "update users set password=?, name=?, nic=?, sex=?, age=?, email=?, phone=?, "+
"selfshow=? where username=? and id=?;";
try
{
//得到预处理对象
pt = con.prepareStatement(sql);
pt.setString(1, users.getPassword());
pt.setString(2, users.getName());
pt.setString(3, users.getNic());
pt.setString(4, users.getSex());
pt.setInt(5, users.getAge());
pt.setString(6, users.getEmail());
pt.setString(7, users.getPhone());
pt.setString(8, users.getSelfshow());
pt.setString(9, users.getUsername());
pt.setInt(10, users.getId());
//执行数据更新
i = pt.executeUpdate();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
//返回取得的数据
return i;
}
//查找个人信息的方法
public Users selectInfo(String username)
{
Users users = new Users();//存放从数据库取得的数据
con = DatabaseDAO.getConnection(); //取得数据库连接
//根据用户名取得数据
String sql = "select * from users where username = ? ";
try
{
//得到预处理对象
pt = con.prepareStatement(sql);
pt.setString(1, username);
//System.out.println("--------------------------"+username);
//执行SQL语句得到结果
rs = pt.executeQuery();
//取得第一行数据
if(rs.next())
{
users.setId(rs.getInt(1));
users.setUsername(rs.getString(2));
users.setPassword(rs.getString(3));
users.setName(rs.getString(4));
users.setNic(rs.getString(5));
users.setSex(rs.getString(6));
users.setAge(rs.getInt(7));
users.setEmail(rs.getString(8));
users.setPhone(rs.getString(9));
users.setSelfshow(rs.getString(10));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
//返回取得的数据
return users;
}
//查找到所有的用户
public List findAllUsers()
{
List<Users> list = new ArrayList<Users>(); //用一个list对象来添加所有的对象
//连接数据库
con = DatabaseDAO.getConnection();
try
{
String sql = "select * from users"; //为了获得所有的对象
pt = con.prepareStatement(sql); //预处理
rs = pt.executeQuery(); //获得结果集
while(rs.next())//取得结果
{
Users users = new Users(); //这个得放到这里,不然每次放到list的都是同一个对象
users.setId(rs.getInt(1)); //得到第一个参数信息
users.setUsername(rs.getString(2));
users.setPassword(rs.getString(3));
users.setName(rs.getString(4));
users.setNic(rs.getString(5));
users.setSex(rs.getString(6));
users.setAge(rs.getInt(7));
users.setEmail(rs.getString(8));
users.setPhone(rs.getString(9));
users.setSelfshow(rs.getString(10));
list.add(users);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
return list;
}
//验证登录的代码
public boolean login(Users users)
{
//设置标准符为flag
boolean flag=false;
//建立数据库连接
con = DatabaseDAO.getConnection();
try
{
String sql = "select * from users where username = ? and password = ?";
pt = con.prepareStatement(sql);
pt.setString(1, users.getUsername());
pt.setString(2, users.getPassword());
rs = pt.executeQuery(); //得到结果集
if(rs.next()) //如果验证成功,那么就设置为true
{
flag = true;
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
return flag;
}
//保存一个用户
public int save(Users users)
{
int i = 0;
con = DatabaseDAO.getConnection(); //得到连接
try
{
String sql = "insert into `users` (`username`, `password`, `name`, `nic`, `sex`, `age`, `email`, `phone`, `selfshow`) "+
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);";
pt = con.prepareStatement(sql);
pt.setString(1, users.getUsername());
pt.setString(2, users.getPassword());
pt.setString(3, users.getName());
pt.setString(4, users.getNic());
pt.setString(5, users.getSex());
System.out.println(users.getSex()+" ----------------------");
pt.setInt(6, users.getAge());
pt.setString(7, users.getEmail());
pt.setString(8, users.getPhone());
pt.setString(9, users.getSelfshow());
i = pt.executeUpdate();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
return i;
}
//查找用户是否存在
public boolean findUsers(String username)
{
//定义Boolean类型标识符flag
boolean flag=false;
//取得连接
con=DatabaseDAO.getConnection();
try
{
pt = con.prepareStatement("select * from users where username = ?");
pt.setString(1, username); //为参数赋值
rs = pt.executeQuery(); //执行查询得到结果
//如果继续可以得到数据说明数据存在
if(rs.next())
{
flag=true;
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
return flag; //返回标识,true说明是用户已经存在
}
}
/**
* 书本:【struts2】+【hibernate】+【Spring】整合开发技术详解
* 功能:管理员对数据库的操作
* 文件:AdminDAO.java
* 时间:2014年11月19日21:41:23
* 作者:cutter_point
*/
package com.huizhi.admin.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.ArrayList;
import com.huizhi.database.DatabaseDAO;
import com.huizhi.vo.Admin;
public class AdminDAO
{
private Connection con; //定义连接对象
private PreparedStatement pt; //定义预处理对象
private ResultSet rs; //定义结果集对象
//更具id删除管理员
public boolean deleteAdminById(int id)
{
con = DatabaseDAO.getConnection(); //取得连接
boolean flag = false;
String sql = "delete from admin where id=?";
try
{
//预处理
pt = con.prepareStatement(sql);
pt.setInt(1, id);
int i = pt.executeUpdate(); //删除返回删除的个数
if(i > 0)
flag = true;
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return flag;
}
//取出所有的管理员
public List findAllAdmin()
{
List<Admin> list = new ArrayList<Admin>(); //用一个list对象来添加所有的对象
//连接数据库
con = DatabaseDAO.getConnection();
try
{
String sql = "select * from admin"; //为了获得所有的对象
pt = con.prepareStatement(sql); //预处理
rs = pt.executeQuery(); //获得结果集
while(rs.next())//取得结果
{
Admin admin = new Admin(); //这个得放到这里,不然每次放到list的都是同一个对象
admin.setId(rs.getInt(1));
admin.setUsername(rs.getString(2));
admin.setPassword(rs.getString(3));
admin.setName(rs.getString(4));
admin.setQx(rs.getInt(5));
list.add(admin);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return list;
}
//验证管理员登录
public boolean login(Admin admin)
{
boolean flag = false;
con = DatabaseDAO.getConnection(); //取得连接
String sql = "select * from admin where username=? and password=?;";
try
{
pt = con.prepareStatement(sql);
pt.setString(1, admin.getUsername());
pt.setString(2, admin.getPassword());
rs = pt.executeQuery(); //执行命令
if(rs.next())
{
flag = true;
admin.setQx(rs.getInt("qx"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return flag;
}
public void close() //关闭连接
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
}
admindao
/**
* 书本:【struts2】+【hibernate】+【Spring】整合开发技术详解
* 功能:管理员对数据库的操作
* 文件:AdminDAO.java
* 时间:2014年11月19日21:41:23
* 作者:cutter_point
*/
package com.huizhi.admin.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.ArrayList;
import com.huizhi.database.DatabaseDAO;
import com.huizhi.vo.Admin;
public class AdminDAO
{
private Connection con; //定义连接对象
private PreparedStatement pt; //定义预处理对象
private ResultSet rs; //定义结果集对象
//更具id删除管理员
public boolean deleteAdminById(int id)
{
con = DatabaseDAO.getConnection(); //取得连接
boolean flag = false;
String sql = "delete from admin where id=?";
try
{
//预处理
pt = con.prepareStatement(sql);
pt.setInt(1, id);
int i = pt.executeUpdate(); //删除返回删除的个数
if(i > 0)
flag = true;
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return flag;
}
//取出所有的管理员
public List findAllAdmin()
{
List<Admin> list = new ArrayList<Admin>(); //用一个list对象来添加所有的对象
//连接数据库
con = DatabaseDAO.getConnection();
try
{
String sql = "select * from admin"; //为了获得所有的对象
pt = con.prepareStatement(sql); //预处理
rs = pt.executeQuery(); //获得结果集
while(rs.next())//取得结果
{
Admin admin = new Admin(); //这个得放到这里,不然每次放到list的都是同一个对象
admin.setId(rs.getInt(1));
admin.setUsername(rs.getString(2));
admin.setPassword(rs.getString(3));
admin.setName(rs.getString(4));
admin.setQx(rs.getInt(5));
list.add(admin);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return list;
}
//验证管理员登录
public boolean login(Admin admin)
{
boolean flag = false;
con = DatabaseDAO.getConnection(); //取得连接
String sql = "select * from admin where username=? and password=?;";
try
{
pt = con.prepareStatement(sql);
pt.setString(1, admin.getUsername());
pt.setString(2, admin.getPassword());
rs = pt.executeQuery(); //执行命令
if(rs.next())
{
flag = true;
admin.setQx(rs.getInt("qx"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
this.close();
}
return flag;
}
public void close() //关闭连接
{
//关闭所有资源
DatabaseDAO.closeRs(rs); //关闭相应的资源
DatabaseDAO.closePt(pt); //关闭PreparedStatement
DatabaseDAO.closeCon(con); //关闭数据库连接
}
}
database包
/**
* 书本:【struts2】+【hibernate】+【Spring】整合开发技术详解
* 功能:用户注册系统
* 文件:DatabaseDAO.java
* 时间:2014年10月22日16:33:46
* 作者:cutter_point
*/
package com.huizhi.database;
import java.sql.Connection;
//import java.sql.*;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class DatabaseDAO //数据库连接类
{
private static Connection con; //连接对象Connection
private static final String DRIVER="com.mysql.jdbc.Driver"; //数据库驱动
private static final String URL="jdbc:mysql://localhost/reg"; //数据库的名字是reg
private static final String NAME="root"; //连接MySQL的用户名
private static final String PASSWORD="xiaofeng2014"; //连接的密码
//这是一个单例模式,加载一次即可获得驱动
static
{
try
{
Class.forName(DRIVER); //加载驱动
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static Connection getConnection() //获取数据库连接
{
try
{
con=DriverManager.getConnection(URL, NAME, PASSWORD);
}
catch (Exception e)
{
e.printStackTrace();
}
return con;
}
//关闭连接
public static void closeCon(Connection con)
{
try
{
if(con != null)
con.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
//关闭PreparedStatement
public static void closePt(PreparedStatement pt)
{
try
{
if(pt != null)
pt.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
//关闭ResultSet
public static void closeRs(ResultSet rs)
{
try
{
if(rs != null)
rs.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
util包
/**
* 书本:【struts2】+【hibernate】+【Spring】整合开发技术详解
* 功能:用户注册系统,这个是写的一个拦截器
* 文件:AuthorityInterceptor.java
* 时间:2014年10月22日16:33:46
* 作者:cutter_point
*/
package com.huizhi.util;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthorityInterceptor extends AbstractInterceptor
{
public String intercept(ActionInvocation invocation) throws Exception //拦截Action处理的拦截方法
{
ActionContext ctx = invocation.getInvocationContext(); //取得ActionContext实例
Map session = ctx.getSession(); //得到session对象
String username = (String)session.get("username");
if(username != null)
{
//表示用户已经登录
System.out.println("拦截通过");
return invocation.invoke(); //继续执行
}
System.out.println("登录拦截");
ctx.put("tip", "请先登录!!!");
return Action.LOGIN;
}
}
vo包
admin
package com.huizhi.vo;
public class Admin
{
private int id;
private String username;
private String password;
private String name;
private int qx;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getQx() {
return qx;
}
public void setQx(int qx) {
this.qx = qx;
}
}
package com.huizhi.vo;
public class Users
{
private int age;
private String email;
private int id;
private String name;
private String nic;
private String password;
private String phone;
private String selfshow;
private String sex;
private String username;
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getNic() {
return nic;
}
public String getPassword() {
return password;
}
public String getPhone() {
return phone;
}
public String getSelfshow() {
return selfshow;
}
public String getSex() {
return sex;
}
public String getUsername() {
return username;
}
public void setAge(int age) {
this.age = age;
}
public void setEmail(String email) {
this.email = email;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setNic(String nic) {
this.nic = nic;
}
public void setPassword(String password) {
this.password = password;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setSelfshow(String selfshow) {
this.selfshow = selfshow;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setUsername(String username) {
this.username = username;
}
}
断断续续,最终还是给写完了,真是蛋疼,这个课设马上要来了,得抓紧时间了!!!!fightting!!!


项目已经上传:http://download.csdn.net/detail/cutter_point/8181327
这里还有一个struts2的BBS论坛项目有兴趣可以看一下:http://download.csdn.net/detail/cutter_point/8142957
标签:struts2 mysql interceptor mvc 用户注册系统
原文地址:http://blog.csdn.net/cutter_point/article/details/41320677