先看下成果图:
再来说说,用到哪些东西。
先是用了struts2来写一个action用来实现管理员页面的各种功能,代码如下:
package cn.action;
import beans.user;
import beans.userDAO;
import java.util.*;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
public class UserAction extends ActionSupport {
private user user;
private userDAO userdao=new userDAO();
public void setUser(user user) {
this.user = user;
}
public user getUser(){
return user;
}
//用户登录Action的方法
public String userLogin() throws Exception{
String forward=null;
user user2=userdao.find(user);
if(user2!=null){
if("abc".equals(user2.getUsername().trim())) {//这里的user2.getUsername()会带有空格,所以要用trim()去除,
forward="manager"; //不然会报错
}else {
forward="success";
}
}else{
forward="failure";
}
return forward;
}
//用户注册Action的方法
public String userRegister() throws Exception{
String forward="error";
int flag=0;
user user2=(userdao.find(user));
if(user2!=null){forward="error_user";}
else{
flag=userdao.create(user);
if(flag==1){forward="success";}
}
return forward;
}
//查询所有用户
public String userAll() throws Exception{
HttpServletRequest request=ServletActionContext.getRequest();
List<user> user = new ArrayList();
user = userdao.findAll();
request.setAttribute("list", user);
return "all";
}
//用户删除
public String userDelete()throws Exception{
String forward=null;
user user2=userdao.find1(user);
if(user2!=null){
try {
userdao.remove(user);
forward="success";
}catch (Exception e) {
forward="failure";
}
}else{
forward="failure";
}
return forward;
}
//用户修改
public String userUpdate()throws Exception{
String forward=null;
user user2=userdao.find1(user);
if(user2!=null){
try {
userdao.update(user);
forward="success";
}catch (Exception e) {
forward="failure";
}
}else{
forward="failure";
}
return forward;
}
//查询单个用户
public String userFind()throws Exception{
String forward=null;
HttpServletRequest request=ServletActionContext.getRequest();//设置request
user user2=userdao.find2(user);
if(user2!=null){
try {
forward="success";
request.setAttribute("userpwd", user2.getUserpwd());//利用requset将数据库中的值赋值给userpwd
}catch (Exception e) { //这样,才能传递给jsp页面
forward="failure";
}
}else{
forward="failure";
}
return forward;
}
}
接着是创建对象类:
package beans;
public class user {
private String username;
private String userpwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
}
然后是数据库连接类:
package beans;
import java.sql.*;
public class DbConnect {
private static String userName = "sa"; // 默认用户名
private static String userPwd = "123456"; // 密码
private static String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//加载JDBC驱动
private static String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=zero";
public static Connection getConnect() throws SQLException,ClassNotFoundException{
Connection dbConn = null;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
return dbConn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void closeDB(Connection con,PreparedStatement pstmt,ResultSet rs) {
try {
if(rs!=null) rs.close();
if(pstmt!=null) pstmt.close();
if(con!=null) con.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
再来就是关于DAO的部分:
这是接口
package beans;
import java.util.List;
public interface InterUser {
public abstract int create(user user) throws Exception;//添加,也就是注册用户
public abstract void remove(user user) throws Exception;//删除用户
public abstract List<user> findAll() throws Exception;//列出所有用户
public abstract void update(user user) throws Exception;//修改用户
public abstract user find(user user) throws Exception;//查询用户,实际就是登录
public abstract user find1(user user) throws Exception;//查询用户名
public abstract user find2(user user) throws Exception;//通过查询用户名,得知密码
}
这是实现接口
package beans;
import java.util.*;
import java.sql.*;
import beans.DbConnect;
import beans.user;
public class userDAO implements InterUser {
protected static final String FIELDS_INSERT =" uname,upassword";
protected static String INSERT_SQL="insert into user_b ("+FIELDS_INSERT+")"+"values(?,?)";
protected static String UPDATE_SQL="update user_b set "+" uname=?,upassword=? where uname=?";
protected static String DELETE_SQL="delete from user_b where uname=?";
protected static String SELECT_SQL="select "+FIELDS_INSERT+" from user_b where (uname=? and upassword=?)";
protected static String SELECT_SQL2="select "+FIELDS_INSERT+" from user_b where uname=?";
public int create(user user) throws Exception{//添加记录的方法,用户注册
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(INSERT_SQL);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getUserpwd());
pstmt.executeUpdate();
}catch (Exception e) {
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
return 1;
}
public user find(user user) throws Exception{//用户登录
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
user user2=null;
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(SELECT_SQL);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getUserpwd());
rs=pstmt.executeQuery();
if(rs.next()) {
user2=new user();
user2.setUsername(rs.getString(1));
user2.setUserpwd(rs.getString(2));
}
}catch (Exception e) {
// TODO: handle exception
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
return user2;
}
public void remove(user user) throws Exception {//用户删除
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
user user2=new user();
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(DELETE_SQL);
pstmt.setString(1, user.getUsername());
pstmt.executeUpdate();
}catch (Exception e) {
// TODO: handle exception
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
}
public List<user> findAll() throws Exception {//用户全部
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<user> user=new ArrayList<user>();
con=DbConnect.getConnect();
pstmt=con.prepareStatement("select * from user_b");
rs=pstmt.executeQuery();
while(rs.next()) {
user user2=new user();
user2.setUsername(rs.getString(1));
user2.setUserpwd(rs.getString(2));
user.add(user2);
}
DbConnect.closeDB(con, pstmt, rs);
return user;
}
public user find1(user user) throws Exception{//查询用户名
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
user user2=null;
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(SELECT_SQL2);
pstmt.setString(1, user.getUsername());
rs=pstmt.executeQuery();
if(rs.next()) {
user2=new user();
user2.setUsername(rs.getString(1));
}
}catch (Exception e) {
// TODO: handle exception
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
return user2;
}
public user find2(user user) throws Exception{
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
user user2=null;
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(SELECT_SQL2);
pstmt.setString(1, user.getUsername());
rs=pstmt.executeQuery();
if(rs.next()) {
user2=new user();
user2.setUsername(rs.getString(1));
user2.setUserpwd(rs.getString(2));
}
}catch (Exception e) {
// TODO: handle exception
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
return user2;
}
public void update(user user) throws Exception {//用户修改
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
con=DbConnect.getConnect();
pstmt=con.prepareStatement(UPDATE_SQL);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getUserpwd());
pstmt.setString(3, user.getUsername());
int rowCount=pstmt.executeUpdate();
if(rowCount==0) {
throw new Exception("Update Error:Usesr name:" + user.getUsername());
}
}catch (Exception e) {
// TODO: handle exception
}finally {
DbConnect.closeDB(con, pstmt, rs);
}
}
}
关于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 value="false" name="struts.enable.DynamicMethodInvocation"/>
<constant value="true" name="struts.devMode"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.convention.action.mapallmatches" value="true"/>
<package name="struts2" namespace="/" extends="struts-default">
<action name="register" class="cn.action.UserAction" method="userRegister">
<result name="success">/register_success.jsp</result>
<result name="error">/register_failure.jsp</result>
<result name="error_user">/register_failure_user.jsp</result>
</action>
<action name="logincheck" class="cn.action.UserAction" method="userLogin">
<result name="success">/login_success.jsp</result>
<result name="failure">/loginfailure.jsp</result>
<result name="manager">/managerIndex.jsp</result>
</action>
<action name="all" class="cn.action.UserAction" method="userAll">
<result name="all">/Userall.jsp</result>
</action>
<action name="delete" class="cn.action.UserAction" method="userDelete">
<result name="success">/delete_s.jsp</result>
<result name="failure">/delete_f.jsp</result>
</action>
<action name="update" class="cn.action.UserAction" method="userUpdate">
<result name="success">/update_s.jsp</result>
<result name="failure">/update_f.jsp</result>
</action>
<action name="find" class="cn.action.UserAction" method="userFind">
<result name="success">/find_success.jsp</result>
<result name="failure">/find_f.jsp</result>
</action>
</package>
</struts>
剩下的就是JSP页面的设计了,这个太多了,已经上传到资源库,如有需要的可以去下载,谢谢观看。
链接:https://download.csdn.net/download/weixin_42059543/10819099