加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SpringMVC-乱码问题

发布时间:2020-12-15 01:15:53 所属栏目:大数据 来源:网络整理
导读:乱码问题 目录 乱码问题 1. 使用原生filter解决 1. 前端jsp 2. 编写controller 3. 编写过滤器 4. 注册过滤器 2. 使用SpringMVC提供的过滤器实现 1. 使用原生filter解决 1. 前端jsp %-- Created by IntelliJ IDEA. User: Wang Date: 2020/9/9 Time: 9:30 To c

乱码问题

目录
  • 乱码问题
    • 1. 使用原生filter解决
      • 1. 前端jsp
      • 2. 编写controller
      • 3. 编写过滤器
      • 4. 注册过滤器
    • 2. 使用SpringMVC提供的过滤器实现

1. 使用原生filter解决

1. 前端jsp

<%--
  Created by IntelliJ IDEA.
  User: Wang
  Date: 2020/9/9
  Time: 9:30
  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 action="/e/t1" method="post">
    <input type="text" name="name">
    <input type="submit">
</form>

</body>
</html>

2. 编写controller

package com.wang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class EncodingController {

    //过滤器解决乱码
    @PostMapping("/e/t1")
    public String test(String name,Model model) {

        System.out.println(name);
        model.addAttribute("msg",name);

        //返回的地址为转发的地址
        return "test";
    }
}

3. 编写过滤器

package com.wang.filter;

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

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() {

    }
}

4. 注册过滤器

<filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.wang.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

注意,此处url-pattern要写为/*,这是由于要拦截所有的东西

spring配置中则写/,这是由于如果拦截了.jsp,会继续将jsp中的跳转的url继续拦截,当找不到controller时会报404错误!

2. 使用SpringMVC提供的过滤器实现

在web.xml中配置

<!--配置SpringMVC的乱码过滤-->
<filter>
    <filter-name>encoding</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>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

注意,这是由于要拦截所有的东西

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读