java web 通过 servlet 给前端设置编码格式
项目结构
├── 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