通过过滤器Filter设置登录访问
当登录过则可以持续访问登录页,否则需要进行登录
package com.msb;
//过滤器编写
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.FileFilter;
import java.io.IOException;
/*任何.do资源都要过滤*/
@WebFilter(urlPatterns = "/*")
public class Filter implements javax.servlet.Filter {
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
//过滤
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req =(HttpServletRequest) servletRequest;
HttpServletResponse resp =(HttpServletResponse) servletResponse;
String requestURI = req.getRequestURI();
System.out.println(requestURI);
//如果访问登录页面直接放行
//requestURI获取请求资源如果包含logon.jsp字符,放行
if (requestURI.contains("logon.jsp")||requestURI.contains("servletDemo.do")){//免登录访问资源
filterChain.doFilter(req,resp);
return;
}else {
//登录过的话从Session中获取资源
HttpSession session = req.getSession();
Object user = session.getAttribute("user");
//如果不为空的话放行
if(null!= user){
filterChain.doFilter(req,resp);
}else {
//没有登陆过需要进行登录
resp.sendRedirect("logon.jsp");
}
}
}
//销毁
@Override
public void destroy() {
}
}
servlet提交信息设置
package com.msb;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(urlPatterns = "/servletDemo.do")
public class servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("用户名:"+username);
System.out.println("密码"+password);
User user = new User(username,password);
HttpSession session = req.getSession();
session.setAttribute("user",user);
resp.sendRedirect("index.jsp");
}
}
<%--
Created by IntelliJ IDEA.
User: tomel
Date: 2022/5/29
Time: 7:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form method="post" action="servletDemo.do" >
用户名:<input type="text" name="username" >
密码:<input type="password" name="password">
提交<input type="submit">
</form>
</body>
</html>
<%--
内容页
Created by IntelliJ IDEA.
User: tomel
Date: 2022/5/29
Time: 7:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
welcome to my new page
</body>
</html>