项目结构
├── src\
│ └── com\
│ └── zhang\
│ ├── filter\
│ │ ├── EncodingFilter.java
│ │ └── LoginFilter.java
│ └── servlet\
│ └── LoginServlet.java
└── web\
├── WEB-INF\
│ ├── lib\
│ └── web.xml
├── index.jsp
└── login.jsp
- 请求过滤 :通过LoginFilter实现登录状态验证
- 字符编码处理 :EncodingFilter统一请求响应编码
- 登录流程 :LoginServlet 演示登录表单提交和验证逻辑
后端过滤器
package com.zhang.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
//@WebFilter(filterName = "EncodingFilter")
public class EncodingFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("EncodingFilter编码过滤器初始化");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("编码过滤器的逻辑处理");
//设置编码方式
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, resp);
System.out.println("编码过滤器执行完成");
}
public void destroy() {
System.out.println("编码过滤器被销毁");
}
}
package com.zhang.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
//@WebFilter(filterName = "LoginFilter")
public class LoginFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("登陆过滤器初始化");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("登陆过滤器处理逻辑");
HttpSession session = ((HttpServletRequest) req).getSession();
if (session.getAttribute("user")==null){
((HttpServletResponse)resp).sendRedirect("login.jsp");
}else{
chain.doFilter(req, resp);
}
System.out.println("登陆过滤器处理逻辑完成");
}
public void destroy() {
System.out.println("登陆过滤器销毁");
}
}
package com.zhang.servlet;
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 java.io.IOException;
//@WebServlet(name = "LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("loginServlet的处理过程");
response.getWriter().write("登陆成功");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
web配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 设置编码方式过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.zhang.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 登陆过滤器 -->
<filter>
<filter-name>login</filter-name>
<filter-class>com.zhang.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.zhang.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
</web-app>
前端页面
用到的jar
jsp-api.jar
servlet-api.jar
访问
http://localhost/login.jsp
http://localhost/login.do