springmvc返回参数和处理中文乱码

springmvc返回参数

创建一个maven项目,导入jar包,在web创建jsp包,包中创建jsp页面

	<context:component-scan base-package="com.lanou"></context:component-scan>
    <!--内部视图资源解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

/jsp/acount.jsp页面中的内容

this is acount.jsp <br>
    <hr>
    ${username}

返回数据的几种形式

一、通过modelandView返回

http://localhost:8080/arAcount?id=121&username=张三&password=123

    @RequestMapping("/arAcount")
    public ModelAndView addArAccount(@RequestParam(required = false) Integer id, String username, Double money, ModelAndView modelAndView){
        System.out.println(id + "..." + username + "-----" + money);
        modelAndView.setViewName("account");//页面
        //request返回
        modelAndView.addObject("username",username);//返回数据
        return modelAndView;
    }
二、使用Model对象返回数据

方法返回值 String 代表返回的页面信息 Model中添加传递的数据
http://localhost:8080/backtrack

	@RequestMapping("/backtrack")
    public String backtrack(Model model){
        model.addAttribute("username","周瑜");
        return "account";
    }
三、使用Map对象返回数据

方法返回值 String 代表返回的页面信息
在acount.jsp页面中加上

${age}

http://localhost:8080/backtrack1

    @RequestMapping("/backtrack1")
    public String backtrack1(Map<String, Object> map){
        map.put("username","小乔");
        map.put("age",26);
        return "account";
    }

四、通过ajax 返回json数据

方法返回值 String 代表返回的json字符串

	@RequestMapping(value = "/backtrack2")
    @ResponseBody
    public String backtrack2(){
        return JSON.toJSONString("张三0001");
    }

处理中文乱码

JSON乱码

方式一 (produces = “text/json;charset=utf-8”)

出现乱码 “??0001”,可以做如下配置

	@RequestMapping(value = "/backtrack2",produces =  "text/json;charset=utf-8")
    @ResponseBody
    public String backtrack2(){
        return JSON.toJSONString("张三0001");
    }

但这配置只对当前方法有效,其他的还是就会乱码!!!
比如下面这个还是会乱码

  //http://localhost:8080/backtrack4
   
    @RequestMapping("/backtrack4")
    @ResponseBody
    public String backtrack4(){
        return JSON.toJSONString("张三0001");
    }
方式二 在配置文件中配置

在配置文件中配置

<!--  解决返回json数据乱码问题-->
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                    <value>text/plain;charset=UTF-8</value>
                    <value>application/xml;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

mvc:annotation-driven 注意导入的是这个"http://www.springframework.org/schema/mvc",我刚开始导错了找了半天

POST乱码处理

简单的测试
比如在jsp文件中创建add.jsp

<form action="/arAcount" method="post">
    id:<input type="text" name="id" value=""></br>
    username:<input type="text" name="username" value=""></br>
    money:<input type="text" name="money" value=""></br>
    <input type="submit" value="保存账户">
</form>

可以看到会乱码
在这里插入图片描述
此时在web.xml中配置

<!--post请求中文乱码问题解决方案-->
<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>
        <init-param>
           <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

此时重启服务器再来运行代码可以看到
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring MVC中,POST请求参数出现乱码的问题通常是由于字符编码不一致导致的。为了解决这个问题,可以按照以下步骤进行处理: 1. 首先,在你的Spring MVC配置文件中添加一个字符编码过滤器。在web.xml文件中添加以下代码: ```xml <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> ``` 这将确保所有请求都使用UTF-8编码。 2. 如果你正在使用Spring Boot,你可以在application.properties或application.yml文件中添加以下配置: ```properties spring.http.encoding.charset=UTF-8 spring.http.encoding.force=true spring.http.encoding.enabled=true ``` 3. 确保发送请求的页面或客户端也使用相同的字符编码。例如,在HTML页面中,可以通过以下方式设置编码: ```html <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ``` 4. 如果以上步骤都没有解决问题,你可以尝试在处理请求的方法上添加`@RequestMapping`注解,并指定`produces`和`consumes`属性。例如: ```java @RequestMapping(value = "/yourEndpoint", produces = "application/json; charset=UTF-8", consumes = "application/x-www-form-urlencoded; charset=UTF-8") public String handleRequest(@RequestParam("param") String param) { // 处理请求参数 ... } ``` 这样可以确保请求和响应都使用UTF-8编码。 希望这些步骤能够帮助你解决Spring MVC请求参数POST出现乱码的问题!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值