下载地址: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. java-集合类(二)

    使用场景 1.多线程 (1)在jdk1.5之前原始的集合类中,仅仅有vector.stack.hashtable.enumeration等是线程安全的,其它的都是非线程安全的. 非线程安全的集合在多线 ...

  2. m_Orchestrate learning system---十八、mo项目的启示是什么

    m_Orchestrate learning system---十八.mo项目的启示是什么 一.总结 一句话总结:多看教程,体统看教程的学, 完全不懂的话百度的作用也不大 多学点,可以节约后面的超多时 ...

  3. [JZOJ NOIP2018模拟10.21]

    考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...

  4. POJ 3269 中位数

    题意: 思路: 这道题坑也不少.. 你准备好脑洞了么? 首先 要认真审题 题目中有说:"没有两头牛的吃草位置是相邻的" 这句话让我们省了很多的事儿 (Discuss里有的大神就入了 ...

  5. 利用@keyframe及animation做一个页面Loading时的小动画

    前言 利用@keyframe规则和animation常用属性做一个页面Loading时的小动画. 1  @keyframe规则简介 @keyframes定义关键帧,即动画每一帧执行什么. 要使用关键帧 ...

  6. HDU 1166 敌兵布阵【线段树 单点更新】

    题意:给出n个数,a1,a2,a3,,,,,an,再给出一些操作 add i  j 表示给第i个节点增加j sub i  j 表示给第i个节点减少j query i j 表示询问第i个节点到第j个节点 ...

  7. 高阶函数-lambda表达式

    #2.6 map()# 第一个参数传入一个函数,,第二个参数为一个可迭代对象li_1 = (1,3,5,7)def funcA(x): return x*xm1 = map(funcA,li_1)pr ...

  8. 条件变量本质-Problem statement-while not( P ) do skip

    条件变量相当于订阅-发布机制: 或者相当于同步的通知机制: 订阅和发布具有先后顺序:所以需要互斥量来维护顺序. 顺序不对,存在信号丢失问题. Problem statement[edit] For m ...

  9. Dapper Dapper-Extensions

    之前公司在开发项目的时候有用到过Dapper 仓储 以及IOC Castel .最近新项目上想使用上这些技术,决定新学习一下. 看了很多资料,发现几个比较容易菜鸟的我理解的,整理下来,找时间好好整理一 ...

  10. 在javascript中对于this指向的再次理解

    总所周知,function () {}函数体内的this对象指向的是调用该函数的对象,那么我们看一下这个例子 <script> var length = 3; function fn () ...