java web 通过 servlet 给前端设置编码格式

发布于:2025-08-01 ⋅ 阅读:(22) ⋅ 点赞:(0)

项目结构


├── 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


网站公告

今日签到

点亮在社区的每一天
去签到