普通用户的注册和管理员的权限操作

本文档展示了如何使用Struts2框架实现一个简单的用户管理系统,包括普通用户的注册和登录,以及管理员对所有用户的操作。管理员具有权限对用户进行修改和删除,而普通用户只能登录查看信息。

普通用户可以注册,登录但没有管理员的权限。管理员只有一位,指定了的,可以对所有用户进行操作。


loginAction.java

package com.examine3.action;
import java.util.ArrayList;
import java.util.List;
import com.examine3.bean.user;
import com.examine3.dao.operationDao;
import com.examine3.dao.userLogin;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class loginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private int permission;
private user ur;

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 int getPermission() {
return permission;
}


public void setPermission(int permission) {
this.permission = permission;
}


public user getUr() {
return ur;
}


public void setUr(user ur) {
this.ur = ur;
}


@Override
public String execute() throws Exception {
System.out.println("111");
userLogin ul = new userLogin();

ur = ul.Login(username, password);
if (ur == null) {

ActionContext.getContext().put("tips", "该用户不存在!");
return ERROR;
} else {
if (ur.getPermission() == 0) {
//ActionContext.getContext().getSession().put("userName", username);
//searchAction searchAction = new searchAction();
List<user> list = new ArrayList<user>();
list = operationDao.getAll();
ActionContext.getContext().getSession().put("list", list);
//ActionContext.getContext().getSession().put("ur", ur);
return "supper";
}else {
return SUCCESS;
}

}

}

public String getall(){
List<user> list = new ArrayList<user>();
list = operationDao.getAll();
ActionContext.getContext().getSession().put("list", list);
return SUCCESS;
}

}

operationAction.java

package com.examine3.action;


import java.util.ArrayList;
import java.util.List;


import org.apache.struts2.ServletActionContext;


import com.examine3.bean.user;
import com.examine3.dao.operationDao;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class operationAction extends ActionSupport {


private static final long serialVersionUID = 1L;


private String userName; // 修改后的name
private String name1; // 原来数据库中的name
private String password;
private int permission;


public String getName1() {
return name1;
}


public void setName1(String name1) {
this.name1 = name1;
}


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 int getPermission() {
return permission;
}


public void setPermission(int permission) {
this.permission = permission;
}


public String update() throws Exception {
if (operationDao.update(userName, password, permission, this.name1)) {
ActionContext.getContext().put("name", userName);
ActionContext.getContext().put("pwd", password);
List<user> list = new ArrayList<user>();
list = operationDao.getAll();
ActionContext.getContext().getSession().put("list", list);
return SUCCESS;
} else {
return ERROR;
}
}


public String delete() {
String userName = ServletActionContext.getRequest().getParameter(
"username");
if (operationDao.delete(userName)) {
return SUCCESS;
} else {
return ERROR;
}
}
}

registerAction.jsp

package com.examine3.action;


import com.examine3.bean.user;
import com.examine3.dao.operationDao;
import com.examine3.dao.userLogin;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class registerAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String userName;
private String password;
private user ur;


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 user getUr() {
return ur;
}


public void setUr(user ur) {
this.ur = ur;
}


@Override
public String execute() throws Exception {
if (operationDao.getName(userName) == null) {
if (operationDao.register(userName, password)) {


return SUCCESS;
}
return SUCCESS;
} else {
// 添加表单校验错误信息
addFieldError(userName, "用户名已存在!");
return ERROR;
}


}
}

校验器

<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">


<validators>
<!-- 必填字符串校验器 -->
<field name="userName">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>登录名不能为空</message>
</field-validator>
</field>
<!-- 必填校验器使用 -->
<field name="password">
<field-validator type="required">
<message>密码不能为空</message>
</field-validator>
</field>


</validators>

operationDao.java

package com.examine3.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.examine3.bean.user;
import com.examine3.util.DBHelper;


public class operationDao {


// 注册 1为普通用户,0位管理员
public static boolean register(String userName, String password) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int row = 0;
boolean flag = false;
String sql = "INSERT INTO user(userName,password,permission) VALUES('"
+ userName + "','" + password + "','1')";


conn = DBHelper.getConn();
try {
ps = conn.prepareStatement(sql);
row = ps.executeUpdate();
return flag = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBHelper.closeDBHelper(conn, ps, rs);
}


return flag;


}


// 删除
public static boolean delete(String userName) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int row = 0;
boolean flag = false;
String sql = "DELETE FROM `user` WHERE username = '" + userName + "'";
System.out.println(sql);


conn = DBHelper.getConn();
try {
ps = conn.prepareStatement(sql);
row = ps.executeUpdate();
flag = true;
return flag;
} catch (SQLException e) {
System.out.println("Error:" + e.getMessage());
e.printStackTrace();
} finally {
DBHelper.closeDBHelper(conn, ps, rs);
}
return flag;
}


// 修改
public static boolean update(String userName, String password,
int permission, String name1) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int row = 0;
boolean flag = false;


String sql = "UPDATE `user` SET username = '" + userName
+ "' , password = '" + password + "',permission = '"
+ permission + "'  WHERE username = '" + name1 + "'";
System.out.println(sql);


conn = DBHelper.getConn();
try {
ps = conn.prepareStatement(sql);
row = ps.executeUpdate();
flag = true;
return flag;
} catch (SQLException e) {
System.out.println("Error:" + e.getMessage());
e.printStackTrace();
} finally {
DBHelper.closeDBHelper(conn, ps, rs);
}
return flag;
}


// 查詢
public static List<user> getAll() {
List<user> list = new ArrayList<user>();
user users = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * from `user` ";
System.out.println("****************************");
System.out.println(sql);


try {
conn = DBHelper.getConn();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
users = new user();
users.setUsername(rs.getString(1));
users.setPassword(rs.getString(2));
users.setPermission(rs.getInt(3));
list.add(users);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBHelper.closeDBHelper(conn, ps, rs);
}
System.out.println(list);
return list;
}


// 取得姓名,若无,注册
public static String getName(String userName) {
String name = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM user WHERE username ='" + userName + "'";
System.out.println(sql);


try {
conn = DBHelper.getConn();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
name = rs.getString(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return name;
}
}

userLogin.java

package com.examine3.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import com.examine3.bean.user;
import com.examine3.util.DBHelper;


public class userLogin {
public user Login(String username,String password){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

user nuser = null;
String sql = "SELECT * FROM user WHERE username = '"+username+"' and password = '"+password+"'";
System.out.println(sql);

conn = DBHelper.getConn();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs);
nuser = new user();
nuser.setPassword(rs.getString(2));
nuser.setUsername(rs.getString(1));
nuser.setPermission(rs.getInt(3));

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBHelper.closeDBHelper(conn, ps, rs);
}

return nuser;

}

登录拦截器

package com.examine3.interceptor;


import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;




public class loginInterceptor extends AbstractInterceptor {


@Override
public String intercept(ActionInvocation arg0) throws Exception {
// 取得保存在session中的userName
Object object = ActionContext.getContext().getSession().get("ur");

if(object!=null){
return arg0.invoke();
}
else{
//未登录的情况下,写入Action Error信息
((ActionSupport)arg0.getAction()).addActionError("请登录!");
return Action.LOGIN;
}
}
}

DBHelper.java

package com.examine3.util;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;


import java.sql.PreparedStatement;


public class DBHelper {
/*
* 加载数据库驱动并返回连接对象,用connection链接
*/
public static Connection getConn() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");


conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/user3", "root", "admin");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();


} catch (ClassNotFoundException e) {
System.out.println("找不到驱动程序类,加载驱动失败!");
e.printStackTrace();
}
return conn;
}


/*
* 关闭数据库方法
*/
public static void closeDBHelper(Connection conn, PreparedStatement ps,
ResultSet rs) {


try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

用户列表页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表页面</title>
<script type="text/javascript">
function deleteuser(username) {
var result = window.confirm("确定要删除吗?");
if (result == true) {
//执行
window.location.href = "deleteAction?method=delete&username="
+ username;
}


}
</script>
</head>
<body>
<table align="center">
<tr>
<td>用户名</td>
<td>密码</td>
<td>权限</td>
<td colspan="2">操作</td>
</tr>
<c:forEach items="${list }" var="list">
<tr>
<td>${list.username }</td>
<td>${list.password }</td>
<td><a
href="update.jsp?name=${list.username}&pass=${list.password}">修改</a></td>
<td><a href="javascript:deleteuser('${list.username }')">
删除</a></td>
</tr>
</c:forEach>

</table>
</body>
</html>

修改页面

<%@page import="com.opensymphony.xwork2.ActionContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改页面</title>
<script language="javascript">
function back() {

window.location.href = "userlist.jsp";
}
</script>
</head>
<body>
<form action="updateAction">
<table>
<tr>
<td>用户名</td>
<td>密码</td>
</tr>

<% String name1 = request.getParameter("name");
String pass = request.getParameter("pass");
  %>

<tr>
<td><input name="userName" type="text" class="input1"
value="<%out.print(name1); %>" /></td>
<td><input name="password" type="text" class="input2"
value="<%out.print(pass); %>" /></td>
</tr>
<tr>
<td>
<input type="submit" name="Submit1" value="确定" /> 
<input type="button" name="Submit3" value="取消" onclick="back()" />
</td>
</tr>
<tr>
<td><input type="hidden" name = "name1" value="<%out.print(name1); %>"></td>
</tr>
</table>
</form>
</body>
</html>

配置struts

<?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>
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor"
class="com.examine3.interceptor.loginInterceptor" />
</interceptors>

<global-results>
<result name="login">/login.jsp</result>
</global-results>


<action name="registerAction" class="com.examine3.action.registerAction">
<!-- <result name = "input">register.jsp</result> -->
<result name = "success">/login.jsp</result>
<result name = "error">/register.jsp</result>

</action>

<action name="loginAction" class="com.examine3.action.loginAction">
<!-- <result name = "input">login.jsp</result>  -->
<result name = "supper">/userlist.jsp</result>
<result name = "success">/Success.jsp</result>
<result name = "error">/Error.jsp</result>
<!-- <interceptor-ref name="loginInterceptor"></interceptor-ref> -->
</action>

<action name="updateAction" class="com.examine3.action.operationAction" method="update">
<result name = "success">/userlist.jsp</result>
<result name = "error">/update.jsp</result>
</action>

<action name="getallAction" class="com.examine3.action.loginAction" method="getall">
<result name = "success">/userlist.jsp</result>
<result name = "error">/update.jsp</result>
</action>

<action name="deleteAction" class="com.examine3.action.operationAction" method="delete">
<result name = "success"  type="redirect" >getallAction</result>
<result name = "error">error.jsp</result>
</action>
</package>

</struts>

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值