SpringMVC之springmvc原始api,请求中文乱码问题
先搞一波效果图

1.Controller
package com.tz.controller; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import com.tz.domain.Course; @Controller
public class RequestController {
/**
* @PathVariable("user"):获取路径中的值/handler/{user}
* @RequestParam("user"):获取请求参数/hander/{user}?user=coco
*
* @param userName
* @return
*/
@RequestMapping("/handle")
public String handler(@RequestParam(value="user",required=false) String userName){
//userName = request.getParameter("user");
System.out.println(userName);
return "success";
} @RequestMapping("/handle2")
public String handler02(@RequestParam(value="user",required=false,defaultValue="你没有带参数") String userName,
@RequestHeader(value="User-Agent",required=false) String user_Agent,
@CookieValue("JSESSIONID") String js){
//userName = request.getParameter("user");
System.out.println(userName);
System.out.println(user_Agent);
System.out.println(js);
return "success";
} /**
* springmvc可以在参数上写servlet常用的api
* HttpServletRequest
* HttpServletResponse
* Httpsession
*
* InputStream:request.getInputStream();
* OutputStream:response.getOutputStream();
* Reader:request.getReader();
* Writer:response.getWriter();
*
* 请求:客户端-->服务端(客户端显示乱码)
* 修改tomcat配置文件
* GET有效
* <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
* 第一次获取请求参数之前:request.setCharacterEncoding("UTF-8");
*
* 响应:服务端-->客户端(服务端显示乱码)
* reponse.setContentType("text/html;charset=utf-8");
* @param c
* @return
*/
@RequestMapping("/addCourse")
public String addCourse(Course c){//springMVC会自动为我们定义的类型进行赋值
/**
* 1.将对象中的每一个属性从request参数中尝试取出来,并进行封装
* request.getParameter("参数名");如果有值,就会取出来封装到实体类的属性中(调用set方法)
*/
System.out.println(c);
return "success";
} @RequestMapping("/handle04")
public String handle04(HttpSession session,HttpServletRequest request){
session.setAttribute("session","session域");
request.setAttribute("request","request域");
return "success";
} }
2.配置文件web.xml(最重要的就是设置那个字符编码过滤器)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>springmvc_Day01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
指定springmvc配置文件的位置
<param-value>classpath:springmvc.xml</param-value>
</init-param> -->
<!-- 如果在web.xml不指定文件位置,也会找默认的文件
/WEB-INF/xxx-servlet.xml
-->
<!-- 启动加载时期 -->
<!-- servlet是当服务器启动的时候加载创建对象,值越小,代表优先级越高,就越先创建对象 -->
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param> -->
<!-- 如果在web.xml中找不到文件位置,也会默认找文件
/WEB-INF/xxx-servlet.xml
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
<!--
/和/*都是用来拦截所有请求,但是/*的范围更大,还会拦截到*.jsp请求,一旦拦截,则访问jsp页面就不会显示了
/也会拦截所有请求,但是不会拦截.jsp,可以保证jsp页面访问正常 *.do *.action *.hah
/:不拦截jsp *.jsp
/*:拦截jsp
-->
</servlet-mapping> <!-- 配置字符编码过滤器 保证该过滤器在所有的过滤器之前,避免请求后拦截不了
最好在第一个
-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- encoding:指定解决请求乱码
forceRequestEncoding:指定请求与响应的编码集格式为eccoding
forceResponseEncoding
-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param> </filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- reset风格的请求
get 查询
put 请求修改
delect删除
post新增
-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<!-- 这里将.jsp也过滤掉 -->
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>
SpringMVC之springmvc原始api,请求中文乱码问题的更多相关文章
- 尚硅谷面试第一季-09SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理呢
目录结构: 关键代码: web.xml <filter> <filter-name>CharacterEncodingFilter</filter-name> &l ...
- Spring-解决请求中文乱码问题
解决spring请求中文乱码问题 1.web.xml添加编码拦截器 <filter> <filter-name>CharacterEncoding</filter-nam ...
- 使用httpclient post请求中文乱码解决办法
使用httpclient post请求中文乱码解决办法 在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码 ...
- get请求与post请求中文乱码问题的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...
- 解决Post请求中文乱码问题
解决Post请求中文乱码问题 req.setChracterEncoding()要在获取请求参数前调用才有效,不然还是乱码
- SpringMVC如何解决POST请求中文乱码问题,GET的又如何处理呢?
在web.xml中 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-c ...
- 解决springmvc使用ResponseBody注解返回json中文乱码问题
spring版本:4.2.5.RELEASE 查看“org.springframework.http.converter.StringHttpMessageConverter”源码,中有一段说明: B ...
- 【SpringMVC】一次处理项目中文乱码的经历
一次处理项目中文乱码的经历 背景 今天把旧服务器上的项目转移到新服务器上,结果返回的json中的中文乱码了,觉得很奇怪,因为新服务器和旧服务器都是TX云,也不会有太大区别呀,于是乎开始了为期半天的蛋疼 ...
- SpringMVC中 解决@ResponseBody注解返回中文乱码
问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...
随机推荐
- JavaSE--【JAVA】unicode为12288字符
转载:http://blog.csdn.net/zfpigpig/article/details/8186470 今天做一个导入数据功能时发现一个问题,就是一个unicode为12288的字符显示为空 ...
- nodejs服务后台持续运行三种方法
一.利用 forever forever是一个nodejs守护进程,完全由命令行操控.forever会监控nodejs服务,并在服务挂掉后进行重启. 1.安装 forever npm install ...
- VMware Horizon view 7安装视频教程
1.教程介绍1.1::通过本教程起到抛砖引玉效果,希望各位喜爱VMware产品的朋友受益良多. 1.2::以下提供的任何软件仅供学习交流使用. 2.视频教程2.1::ESXI安装视频 链接:https ...
- 17.3.13---sys.argv[]用法
1------sys.argv[]是用来获取命令行参数, sys.argv[0]表示代码本身文件路径,因此要从第二个即sys.argv[1]开始去参数 例如创建一个文件: import sys pri ...
- cf F. Shovels Shop
https://codeforces.com/contest/1154/problem/F 给定m个折扣 每个折扣的{x,y}的意思是每次购买如果买到确切的x只铲子就其中的最便宜的y只铲子免付: 先贪 ...
- 893C. Rumor#谣言传播(赋权无向图&搜索)
题目出处:http://codeforces.com/problemset/problem/893/C 题目大意:一个城中有一些关系圈,圈内会传播谣言,求使每个人都知道谣言的最小花费 #include ...
- Linux服务器性能查看命令
一.uptime命令 [root@#test~]# uptime15:26:42 up 101 days, 18:44, 3 users, load average: 0.18, 0.22, 0. ...
- Mysql_常规操作
001.数据库 全局操作 # 连接数据库: # mysql -h主机地址 -u用户名 -p(登陆用户密码) # 修改用户密码 mysqladmin # mysqladmin -u root ...
- 序列化模块ModelSerializer
课程准备 配置:settings.py INSTALLED_APPS = [ # ... 'rest_framework', ] DATABASES = { 'default': { 'ENGINE' ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)求解迷宫问题
用下面这个简单的迷宫图作为例子: OXXXXXXX OOOOOXXX XOXXOOOX XOXXOXXO XOXXXXXX XOXXOOOX XOOOOXOO XXXXXXXO O为通路,X为障碍物. ...