JAVAWEB学习文章索引点击这里
效果:进入主页,判断是否登录,如果没有登录则可点击跳转到登录页面,如果登录了,就显示欢迎,并且有注销选项。登陆后,判断账号密码,是否正确,若正确则写入session、cookie,并返回主页,如果不正确返回登录页面,并提示登录错误。如果点击注销按钮,修改cookie,清除掉session中内容。正确登陆后,关闭浏览器,重新打开浏览器,直接访问主页url,发现可以直接显示登录成功页面。
注意事项:确保浏览器打开了cookie功能,并且关闭浏览器后不会自动清除cookie
主页:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>Insert title here</title>
</head>
<body>
<c:choose>
<c:when test="${empty sessionScope.user}">
<a href="${pageContext.request.contextPath}/login.jsp">请进行登录</a>
</c:when>
<c:otherwise>
欢迎你,${sessionScope.user.username}。
<a href="${pageContext.request.contextPath }/LogoutServlet">注销</a>
</c:otherwise>
</c:choose>
</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>Insert title here</title>
</head>
<body>
${requestScope.errMsg}
<hr/>
<form method="post" action="LoginServlet">
账号:<input name="username" value="abc"/><br/>
密码:<input name="password" value="123"/><br/>
自动登录<input name="isauto" type="radio" value="${60*60*24}"/>
<input type="submit" value="登录">
</form>
</body>
</html>
登录处理
package com.servlet;
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 com.bean.User;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取传递过来的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String isauto = request.getParameter("isauto");
//判断是否正确
if("abc".equals(username) && "123".equals(password)) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
//如果需要自动登录,为其配置cookie
if(isauto != null) {
Cookie cookie = new Cookie("autologin", username+"-"+password);
cookie.setMaxAge(Integer.parseInt(isauto));
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}
response.sendRedirect(request.getContextPath()+"/index1.jsp");
}
else {
//账号密码不正确,请求转发到登录页面
request.setAttribute("errMsg", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
注销处理
package com.servlet;
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;
@WebServlet("/LogoutServlet")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//清除掉session
request.getSession().removeAttribute("user");
//修改掉客户端的cookie
Cookie cookie = new Cookie("autologin", "aaa");
cookie.setPath(request.getContextPath());
cookie.setMaxAge(0);
response.addCookie(cookie);
//重定向到index
response.sendRedirect(request.getContextPath()+"/index1.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
主页过滤器
package com.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.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import com.bean.User;
@WebFilter("/index1.jsp")
public class AuLoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
//获取cookie
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
String autologin = null;
for(int i = 0; i < cookies.length; i++) {
//寻找需要的cookie
if("autologin".equals(cookies[i].getName())) {
autologin = cookies[i].getValue();
String[] parts = autologin.split("-");//字符串切割
String username = parts[0];
String password = parts[1];
//如果账号密码正确,则默认登录了
if("abc".equals(username) && "123".equals(password)) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
}
break;
}
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}