jsp-登录案例
Posted Vodka~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp-登录案例相关的知识,希望对你有一定的参考价值。
/*
* 后台登录功能步骤:
* -接收客户端的请求(参数包含用户信息)
* 1.判断用户所有信息是否填写完整:
* -如果参数为空:
* 通过消息模型对象返回结果(设置状态,提示哪些参数为空,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 2.判断用户填写信息是否存在于数据库:
* -如果用户对象为空:
* 通过消息模型对象返回结果(设置状态,提示哪些参数为空,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 3.判断用户填写的信息是否完全符合:
* -如果用户对象有信息出错:
* 通过消息模型对象返回结果(设置状态,提示哪些参数出错,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 如果相等,表示登录成功,跳转到登录页面,并且将用户信息设置到Session作用域。
* 4.controller层(接收请求,响应结果):
* -接收客户端请求(接收参数:姓名,密码)
* -调用service层的方法,返回消息模型对象
* -将消息模型对象设置到不同的作用域中
* -请求转发跳转到登录页面
* service层(业务逻辑层):
* -判断参数是否为空:如果为空,则将状态码,提示信息,回显信息设置到消息模型对象,并返回该对象
* -调用Dao层(mapper层):该类实现了数据操作的接口的各种方法
* mapper层:
* 定义对应接口,并且由mapper文件实现接口里的所有方法
* */
//LoginServer.java
在这里插入代码片@WebServlet(urlPatterns = {"/MainServer"})
public class LoginServer extends HttpServlet {
private SqlSession ss = mybatisConnect.StartSqlSession();
@Override
protected void service(HttpServletRequest req, HttpServletResponse res){
/*
* 后台登录功能步骤:
* -接收客户端的请求(参数包含用户信息)
* 1.判断用户所有信息是否填写完整:
* -如果参数为空:
* 通过消息模型对象返回结果(设置状态,提示哪些参数为空,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 2.判断用户填写信息是否存在于数据库:
* -如果用户对象为空:
* 通过消息模型对象返回结果(设置状态,提示哪些参数为空,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 3.判断用户填写的信息是否完全符合:
* -如果用户对象有信息出错:
* 通过消息模型对象返回结果(设置状态,提示哪些参数出错,回显数据),将消息模型对象设置到request作用域,
* 请求转发跳转到登录页面,return
* 如果相等,表示登录成功,跳转到登录页面,并且将用户信息设置到Session作用域。
* 4.controller层(接收请求,响应结果):
* -接收客户端请求(接收参数:姓名,密码)
* -调用service层的方法,返回消息模型对象
* -将消息模型对象设置到不同的作用域中
* -请求转发跳转到登录页面
* service层(业务逻辑层):
* -判断参数是否为空:如果为空,则将状态码,提示信息,回显信息设置到消息模型对象,并返回该对象
* -调用Dao层(mapper层):该类实现了数据操作的接口的各种方法
* mapper层:
* 定义对应接口,并且由mapper文件实现接口里的所有方法
* */
try {
// 设置请求头解码编码方式
req.setCharacterEncoding("UTF-8");
res.setHeader("content-type","text/html;charset=utf-8");
String UserAccount = req.getParameter("UserAccount");
String UserName = req.getParameter("UserName");
String UserPassword = req.getParameter("UserPassword");
String UserAge = req.getParameter("UserAge");
UserMapper UM = ss.getMapper(UserMapper.class);
UserInfo User = UM.GetUserByID(UserAccount);
System.out.println(User);
HttpSession hs = req.getSession();
hs.setAttribute("UserAccount",UserAccount);
hs.setAttribute("UserName",UserName);
hs.setAttribute("UserAge",UserAge);
hs.setAttribute("UserPassword",UserPassword);
if(User == null || !User.getUserPassword().equals(UserPassword)){
hs.setAttribute("Msg","用户不存在或信息填写错误");
res.sendRedirect("Validation.jsp");
}
if(User.getUserAccount().equals(UserAccount) && User.getUserPassword().equals(UserPassword)){
res.sendRedirect("Index.jsp");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//RegisterServer.java
@WebServlet(urlPatterns = {"/RegisterServer"})
public class RegisterServer extends HttpServlet{
private String UserAccount;
private String UserName;
private String UserAge;
private String UserPassword;
SqlSession sql = mybatisConnect.StartSqlSession();
@Override
protected void service(HttpServletRequest req, HttpServletResponse res){
// 设置请求头解码编码方式
try {
req.setCharacterEncoding("UTF-8");
res.setHeader("content-type","text/html;charset=utf-8");
} catch (Exception e) {
e.printStackTrace();
}
//将注册用户的信息添加到一个对象,再将该对象添加到消息模型中
UserInfo UI = new UserInfo();
UserAccount = req.getParameter("UserAccount");
UserName = req.getParameter("UserName");
UserPassword = req.getParameter("UserPassword");
UserAge = req.getParameter("UserAge");
UI.setUserAccount(UserAccount);
UI.setUserName(UserName);
UI.setUserAge(UserAge);
UI.setUserPassword(UserPassword);
System.out.println(UI.getUserPassword());
// 存进数据库,并提交事务
UserMapper UM = sql.getMapper(UserMapper.class);
UM.AddUser(UI);
sql.commit();
// 再将消息模型对象添加到request作用域,再定向转发到Login页面
MsgModule MsgM = new MsgModule();
MsgM.setOb(UI);
System.out.println();
HttpSession ss = req.getSession();
ss.setAttribute("UserAccount",UserAccount);
ss.setAttribute("UserName",UserName);
ss.setAttribute("UserAge",UserAge);
ss.setAttribute("UserPassword",UserPassword);
try {
res.sendRedirect("Validation.jsp");
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<form id="Register" method="post" action="RegisterServer">
账号:<input id="UserAccount" name="UserAccount" type="text"/> <br>
姓名:<input id="UserName" name="UserName" type="text"/> <br>
年龄:<input id="UserAge" name="UserAge" type="text"/> <br>
密码<input id="UserPassword" name="UserPassword" type="password"/> <br>
<button type="button" id="Regist">注册</button> <br>
<span id="WarningBar" style="font-size: 15px; color:red"></span>
</form>
</body>
<%--引入jQuery文件--%>
<script src="/jquery/dist/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" >
//自定义一个判断当前字符是否为空的函数
function IsEmpty(str) {
if(str == null || str.trim() === ""){
return true;
}else{
return false;
}
}
//封装juquery获取ID元素信息值的方法
function GetIDNodeVal( NodeName){
return $( "#"+ NodeName ).val();
}
//注册信息是否填写完整
$("#Regist").click(()=>{
var UserAccount = GetIDNodeVal("UserAccount");
var UserName = GetIDNodeVal("UserName");
var UserAge = GetIDNodeVal("UserAge");
var UserPassword = GetIDNodeVal("UserPassword");
if(IsEmpty(UserAccount)){
$("#WarningBar").html("账号不能为空!");
}
if(IsEmpty(UserName)){
$("#WarningBar").html("用户名不能为空!");
}
if(IsEmpty(UserAge)){
$("#WarningBar").html("年龄不能为空!");
}
if(IsEmpty(UserPassword)){
$("#WarningBar").html("密码不能为空!");
}
$("#Register").submit();
})
</script>
</html>
//Validation.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入所需要的标签库--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="v"%>
<html>
<head>
<title>登录页面</title>
<style>
.FormValidation{
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
/*background-color: #00ffff;*/
margin-left: 500px;
margin-top: 200px;
width: 300px;
height: 300px;
}
</style>
</head>
<body>
<div class="FormValidation" >
<form action="MainServer" method="post" id="FormValidation">
Account:<input type="text" name="UserAccount" id="UserAccount" value="${UserAccount}"> <br>
NickName:<input type="text" name="UserName" id="UserName" value="${UserName}"> <br>
Age:<input type="text" name="UserAge" id="UserAge" value="${UserAge}"> <br>
Password:<input type="password" name="UserPassword" id="UserPassword" value="${UserPassword}"> <br>
<button id="SubmitButton" type="button">Submit</button> <br>
<button id="RegisterButton" type="button">Register</button> <br>
<span id="WarningBar" style="color:#ff0000">${Msg}</span>
</form>
</div>
</body>
<%--引入jQuery文件--%>
<script src="/jquery/dist/jquery.min.js"/>" type="text/javascript"></script>
<script type="text/javascript">
//提交按钮绑定监听事件
$("#SubmitButton").click(()=>{
let UserName = $("#UserName").val();
let UserAccount = $("#UserAccount").val();
let UserPassword = $("#UserPassword").val();
let UserAge = $("#UserAge").val();
if(IsEmpty(UserAccount)){
$("#WarningBar").html("账号不能为空!");
}
if(IsEmpty(UserName)){
$("#WarningBar").html("用户名不能为空!");
}
if(IsEmpty(UserAge)){
$("#WarningBar").html("年龄不能为空!");
}
if(IsEmpty(UserPassword)){
$("#WarningBar").html("密码不能为空!");
}
if(!IsEmpty(UserAccount) && !IsEmpty(UserAccount) && !IsEmpty(UserAccount) && !IsEmpty(UserAccount)){
$("#FormValidation").submit();
}
});
//注册按钮绑定监听事件
$("#RegisterButton").click(()=>{
window.location.href ="/Register.jsp";
});
//自定义一个判断当前字符是否为空的函数
function IsEmpty(str) {
if(str == null || str.trim() === ""){
return true;
}else{
return false;
}
}
</script>
</html>
//Index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页面</title>
</head>
<body>
<h1>欢迎${UserName}登录到本网站!</h1>
</body>
</html>
//mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jd以上是关于jsp-登录案例的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段