简介:
创建login.jsp提交用户名和密码,创建ASerlet进行用户名和密码的校验,创建source1.jsp、source2.jsp作为访问界面,流程如下;
AServlet:
package demoServlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("出生啦!!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 获取用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
// 获取session
HttpSession session = req.getSession();
// 校验用户名和密码
if("cdml".equals(username)) { // 判断用户名
if("qwe".equals(password)) { // 判断密码
// 用户名和密码都正确,设置用户名和密码
session.setAttribute("username", username);
session.setAttribute("password", password);
// 设置Cookie
Cookie cookie = new Cookie("username", username);
cookie.setMaxAge(60*60*24); // cookie有效时间为一天
resp.addCookie(cookie); // 添加cookie
// 重定向
resp.sendRedirect("/day0421_session/jsp/source1.jsp");
}else {
// 设置错误密码
req.setAttribute("password", password);
// 转发
req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);
}
}else {
// 设置错误用户名
req.setAttribute("username", username);
// 转发
req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);
}
}
}
login.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<div align="center">
<%
/*
读取名为username的cookie
*/
Cookie[] cookies = request.getCookies();
String uname = "";
if (cookies != null) {
for (Cookie c : cookies) {
if ("username".equals(c.getName())) {
uname = c.getValue();
out.print("<h1>您上次登录的账号是:" + c.getValue() + "</h1><br/>");
break;
}
}
}
%>
<form action="/day0421_session/AServlet" method="post">
用户名: <input type="text" name="username" value=<%=uname %>><br />
密码 : <input type="text" name="password"><br />
<input type="submit" value="提交">
</form>
<font color="red"><b>
<%
Object username = request.getAttribute("username");
Object password = request.getAttribute("password");
String nousername = (String) request.getAttribute("nousername");
if (username != null) {
out.print("<br/>用户名:" + username.toString() + " 错误!!<br/>请重试!!!");
} else if (password != null) {
out.print("<br/>密码:" + password.toString() + " 错误!!<br/>请重试!!!");
}
if (nousername != null) { // 不为空则跨过了登录界面
if ("ture".equals(nousername)) { // 跨过了登录界面
out.print("请先登录!");
}
}
%>
</b></font>
</div>
</body>
</html>
source1.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>页面一</title>
</head>
<body>
<div align="center">
<h1>成功登录</h1>
<%
Object username = session.getAttribute("username");
if (username != null) { // 用户名不为空
out.print("欢迎您!用户:" + username + ", 早上好!");
}else{ // 用户名为空
request.setAttribute("nousername", "ture"); // 设置越界信息
request.getRequestDispatcher("/jsp/login.jsp").forward(request, response); // 转发,不是重定向是因为越界信息设置在request上的,所以需要转发将request传递过去
}
%>
<br/> <a href="<c:url value='/jsp/source2.jsp'/>"><b>GO TO the source2</b></a>
</div>
</body>
</html>
source2.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>source2</title>
</head>
<body>
<div align="center">
<h1>成功登录</h1>
<%
Object username = session.getAttribute("username");
if (username != null) { // 用户名不为空
out.print("欢迎您!用户:" + username + ", 早上好!这里是source2!");
}else{ // 用户名为空
request.setAttribute("nousername", "ture"); // 设置越界信息
request.getRequestDispatcher("/jsp/login.jsp").forward(request, response); // 转发,不是重定向是因为越界信息设置在request上的,所以需要转发将request传递过去
}
%>
</div>
</body>
</html>
输入预定的账号密码:cdml、qwe
点击提交:
也可以转到source2.jsp页面,提示:source2.jsp页面使用的EL表达式,需要导入指定的包
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)