通過過濾器Filter設定登入訪問
阿新 • • 發佈:2022-05-29
通過過濾器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>