下载地址:http://download.csdn.net/detail/qq_33599520/9777172

项目结构图:

代码:

package com.mstf.action;

import java.util.List;

import com.mstf.entiity.User;
import com.mstf.service.UserBiz; public class UserAction { // 控制器
private UserBiz userBiz;
private User user;
private String msg; public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
} List<User> users; public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
} // 用户登录的方法
public String login(){
userBiz = new UserBiz();
if(userBiz.validateUser(user))
return "welcome";
else{
msg = "请重新登陆";
return "error";
}
} // 用户注册的方法
public String regist(){
userBiz = new UserBiz();
if(userBiz.registUser(user))
return "sucess";
else{
msg = "注册失败,请重新登陆";
return "fall";
}
} // 显示所有注册用户的方法
public String showUsers(){
userBiz = new UserBiz();
users = userBiz.findAllUsers();
return "welcome";
}
}

  

package com.mstf.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.mstf.db.DbHelper;
import com.mstf.entiity.User; public class UserDAO { // 用户的dao // 用户登录
public boolean checkUser(User user){
Connection conn = DbHelper.getConnection();
String sql = "select * from admin where `userName`=? and `passWord`=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassWord());
ResultSet rs = pstmt.executeQuery();
if(rs.next())
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
} // 用户注册
public boolean saveUser(User user){
Connection conn = DbHelper.getConnection();
String sql = "insert into admin values(null,?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassWord());
int num = pstmt.executeUpdate();
if(num>0)
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
} // 显示所有注册用户
public List<User> findAllUsers(){
Connection conn = DbHelper.getConnection();
String sql = "select * from admin";
List<User> users = new ArrayList<User>();
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setUserName(rs.getString("userName"));
user.setPassWord(rs.getString("passWord"));
users.add(user);
} } catch (SQLException e) {
e.printStackTrace();
}
return users;
}
}

  

package com.mstf.db;

import java.sql.Connection;
import java.sql.DriverManager; public class DbHelper {
private static String url = "jdbc:mysql://localhost:3306/test"; //数据库地址
private static String userName = "root"; //数据库用户名
private static String passWord = "root"; //数据库密码
private static Connection conn; private DbHelper(){ } public static Connection getConnection(){
if(null == conn){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
} public static void main(String[] args) { //测试数据库是否连通
System.err.println(getConnection());
}
}

  

package com.mstf.entiity;

public class User {  // 实体类
private int id;
private String userName;
private String passWord; 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 User(){ }
}

  

package com.mstf.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class LoginFilter extends HttpServlet implements Filter { // 登录过滤器 private static final long serialVersionUID = 1L; public void destroy() {
} public void doFilter(ServletRequest srq, ServletResponse srp, FilterChain filterChain) throws IOException, ServletException{ HttpServletRequest request = (HttpServletRequest) srq;
HttpServletResponse response = (HttpServletResponse) srp;
HttpSession session = request.getSession();
String url=request.getServletPath();
String contextPath=request.getContextPath();
if(url.equals("")) url+="/";
if((url.startsWith("/")&&!url.startsWith("/index.jsp"))){//若访问后台资源 过滤到login
String userName=(String)session.getAttribute("userName");
if(userName==null){//转入管理员登陆页面
response.sendRedirect(contextPath+"/index.jsp");
return;
}
}
filterChain.doFilter(srq, srp);
} public void init(FilterConfig arg0) throws ServletException { }
}

  

package com.mstf.service;

import java.util.List;

import com.mstf.dao.UserDAO;
import com.mstf.entiity.User; public class UserBiz { // 业务层(服务层/逻辑处理层)
private UserDAO userDao; // 验证用户登录是否合法
public boolean validateUser(User user){
userDao = new UserDAO();
// 业务层调用DAO的具体方法
return userDao.checkUser(user);
} // 用户用户注册
public boolean registUser(User user){
userDao = new UserDAO();
return userDao.saveUser(user);
} // 获得所有注册用户
public List<User> findAllUsers(){
userDao = new UserDAO();
return userDao.findAllUsers();
}
}

  

<?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="test" namespace="/" extends="struts-default">
<action name="login" class="com.mstf.action.UserAction" method="login">
<result name="welcome" type="redirectAction">
<param name="actionName">showUsers</param>
</result>
<result name="error">/error.jsp</result>
</action>
<action name="regist" class="com.mstf.action.UserAction" method="regist">
<result name="sucess">/sucess.jsp</result>
<result name="fall">/fall.jsp</result>
</action>
<action name="showUsers" class="com.mstf.action.UserAction" method="showUsers">
<result name="welcome">/welcome.jsp</result>
</action>
</package> </struts>

  

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <!-- 起始页面 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 过滤器 用于初始化struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <!-- 用于struts2 的过滤器映射 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 登陆验证过滤器 -->
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.mstf.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name> <url-pattern>/error.jsp</url-pattern>
<url-pattern>/fall.jsp</url-pattern>
<url-pattern>/sucess.jsp</url-pattern>
<url-pattern>/welcome.jsp</url-pattern>
</filter-mapping>
</web-app>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<h1>用户名或密码错误!请重新登录。</h1>
<a href="index.jsp">返回后台管理首页</a>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<h1>很遗憾,注册失败!</h1>
<a href="index.jsp">返回后台管理首页</a>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<form action="login" method="post">
<table>
<tr>
<td>帐号:
<input type="text" name="user.userName" maxlength="16">
</td>
</tr>
<tr>
<td>密码:
<input type="password" name="user.passWord" maxlength="16">
</td>
</tr>
<tr>
<td>
<input type="submit" value="登录">
</td>
<td>
<a href="regeist.jsp">注册</a>
</td>
</tr>
</table>
</form>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<form action="regist" method="post" onsubmit="return check(this);">
<table>
<tr>
<td>帐号:
<input type="text" name="user.userName" maxlength="16">
</td>
</tr>
<tr>
<td>输入密码:
<input type="password" name="user.passWord" maxlength="16">
</td>
</tr>
<tr>
<td>
<input type="submit" value="注册">
</td>
<td>
<a href="index.jsp">返回登录</a>
</td>
</tr>
</table>
</form>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<h1>恭喜您,${user.userName }注册成功!</h1>
<a href="index.jsp">返回后台管理首页登录</a>
</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!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>
</head>
<body>
<h1>欢迎${user.userName }登录成功!</h1>
<br><br>
<h2>已经注册的用户:</h2>
<br>
<table border="1px" width="600px" align="center">
<tr>
<td>
ID:
</td>
<td>
用户名:
</td>
<td>
密码:
</td>
</tr>
<c:forEach items="${users }" var="user">
<tr>
<td>
${user.id }
</td>
<td>
${user.userName }
</td>
<td>
${user.passWord }
</td>
</tr>
</c:forEach>
</table>
<a href="index.jsp">返回后台管理首页</a>
</body>
</html>

  下载地址:http://download.csdn.net/detail/qq_33599520/9777172

Struts2+MySQL登录注册的更多相关文章

  1. 使用Struts2搭建登录注册示例

    使用Struts2来搭建mvc网站框架还是比较容易的,Struts2提供了各项辅助功能,保证了web开发的快速方便.下面使用struts2来搭建一个登录注册示例. 0 项目结构截图 1 搭建Strut ...

  2. PHP+MySQL登录注册,完整版,详细注释

    纯手写打造. 下载地址:http://download.csdn.net/detail/qq_33599520/9779970 项目结构: 下面是代码: <!DOCTYPE html> & ...

  3. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  4. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  5. IDEA+MySQL实现登录注册的注册验证时出现 Cannot resolve query parameter '2'

    问题描述: 在IDEA+MySQL+Tomcat 实现登录注册JSP的注册信息INSERT验证时出现 Cannot resolve query parameter '2' 贴上创建链接的代码: if( ...

  6. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  7. 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)

    本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...

  8. spring boot1.1 idea + springboot + mybatis(mybatis-generator) +mysql +html实现简单的登录注册

    前言 这两年springboot比较火,而我平时的工作中不怎么使用spring boot,所以工作之余就自己写写项目练练手,也跟大家一起学习. 打算从最开始的搭架子,登录注册,到后台管理的增删改查,业 ...

  9. Express+MySQL实现登录注册的demo

    MySQL5.7.20 demo准备 安装MySQL,安装完毕之后添加系统环境变量在cmd中启动服务:net start mysql57,如果是安装MySQL8.0则服务名默认时mysql80,测试安 ...

随机推荐

  1. sap abap 对字符串的操作

    替换字段内容 REPLACE [FIRST /ALL OCCURRENCES OF]<STR1>INTO <STR> WITH <STR2>   DATA STR ...

  2. 从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数

    这一章节我们再上一个章节的基础上加上一个检查订单功能 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1 ...

  3. oracle实现自增id

    --oracle实现自增id --创建一张T_StudentInfo表 create table T_StudentInfo ( "id" integer not null pri ...

  4. hdu1276(士兵队列训练问题) java集合水过

    点击打开链接 有人说这题属于栈或者队列,个人认为说集合应该比較准确点. Problem Description 某部队进行新兵队列训练,将新兵从一開始按顺序依次编号.并排成一行横队,训练的规则例如以下 ...

  5. ES task管理

    Task Management API The Task Management API is new and should still be considered a beta feature. Th ...

  6. Java序列化注意事项

    当父类继承Serializeble接口时,所有子类可以被序列化 子类实现了Serializeble接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),但是在子类中属性仍能正确序列化 如果序列 ...

  7. luogu 1351 联合权值

    联合权值 题目大意 给你一个图,有\(n-1\)条边,距离均为\(1\),每距离为\(2\)的两个点的联合权值为\(W_u \times W_v\),求联合权值的最大值和联合权值总和. solutio ...

  8. (转载)15 个 Android 通用流行框架大全

    15 个 Android 通用流行框架大全 时间:2017-03-20 11:36来源:未知 作者:admin 点击: 2089 次 15 个 Android 通用流行框架大全   1. 缓存 Dis ...

  9. RGB与16进制色互转

      点击进入新版 <前端在线工具站> CSS, JavaScript 压缩YUI compressor, JSPacker...HTML特殊符号对照表PNG,GIF,JPG... Base ...

  10. 快速沃尔什变换(FWT)笔记

    开头Orz hy,Orz yrx 部分转载自hy的博客 快速沃尔什变换,可以快速计算两个多项式的位运算卷积(即and,or和xor) 问题模型如下: 给出两个多项式$A(x)$,$B(x)$,求$C( ...