【SpringMVC从看懂到看开】5 - 乱码问题

10 处理乱码

10.1 乱码问题

  1. 编写一个控制器
@Controller
public class EncodingController {
    @RequestMapping("/ec/t")
    public String tester(@RequestParam("name")String name, Model model){
        model.addAttribute("msg",name);
        return "e";
    }
}
  1. 编写相应的jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>${msg}</h1>

</body>
</html>
  1. 编写index.jsp主页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="/ec/t" method="post">
    <input type="text" name="name">
    <input type="submit" value="提交"/>
  </form>
  </body>
</html>
  1. 测试
    在这里插入图片描述在这里插入图片描述可以看到页面跳转了,但却乱码了
    这在post方式上常见,在get方式上却少见
    解决乱码的问题我们可以使用过滤器,一种是自定义过滤器,一种是使用SpringMVC提供的过滤器

10.2 自定义过滤器

  1. 自定义一个过滤器EncodingFilter,实现Filter
package com.cap.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author cap
 */
public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setCharacterEncoding("UTF-8");

        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}
  1. 在web.xml注册在过滤器
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>com.cap.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  1. 测试
    在这里插入图片描述

10.3 SpringMVC提供的过滤器

  1. 直接在web.xml上使用SpringMVC提供的过滤器
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  1. 结果可得:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Cap220590/article/details/107387596