get请求与post请求发送普通参数
文章目录
1.使用postman发送get请求, 发送普通参数数据:
上面是编写的后端控制器
上面是用postman发送的get请求到后端, 因为我使用的是tomcat7, 所以get请求也是会乱码
可以看到, 对于普通参数, 即使有多个, 我们也可以是直接同名写到形参位置, 直接会注入到形参中
2.使用postman发送post请求, 也是发送普通参数
springmvc(web3.0), 我们要如何解决中文乱码问题?
- springmvc(web3.0)是没有配置文件的, 是配置类, 所以我们只需要在配置类中注册一个字符编码过滤器就可以了, 和以前的解决方式基本是相同的, 但是springmvc(现在应该称之为springweb)中为我们提供好了字符编码过滤器, 我们直接使用就可以, 使用的时候只需要设置编码字符集就可以了
只需要在springmvc的主配置类中重写一个getServletFilters()方法即可:
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[]{};
}
//这里就不用我们手动创建AnnotationConfigWebApplicationContext(web容器对象)并且将SpringMVC容器注册到web容器中了,而是仅仅给一个SpringMVC配置文件
//这些事情都会在底层由框架帮我们做好
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
protected String[] getServletMappings() {
return new String[]{"/"};
}
//注册过滤器
@Override
protected Filter[] getServletFilters() {
//使用Springmvc为我们提供好的字符编码过滤器即可
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
//设置编码字符集为UTF-8
characterEncodingFilter.setEncoding("UTF-8");
return new Filter[]{characterEncodingFilter};
}
}
编码过滤器是spring-web这个jar包中的, 这个也就是springmvc依赖
注意: 编码过滤器只是解决了post请求乱码, 至于get请求乱码, 因为现在tomcat8已经处理了, 所以并没有处理, 还有, 如果发现响应乱码, 也是正常, 响应乱码也没有处理, 响应乱码主要是因为原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过 response的 setCharacterEncoding(String charset) 设置response的编码
- 其实不管是输入流还是响应流, Java中默认编码都是ISO8859-1, 而spirngmvc.jar包中的编码过滤器只解决了输入流的编码设置(也就是request.setCharacterEncoding(String charset)), 也就是只解决了post请求乱码
- 大家都默认设置去测试, 我们自己可以抓包之后去看响应头中的content-type是不是ISO8859-1, 相信大家也就明白了