传递数据的方式:
get | 地址栏拼接 | 明文 | 不安全 | 数据量小 |
post | 请求体 | 密文 | 安全 | 数据量大 |
get:
由服务器优先处理地址栏中的数据 然后再交给控制器
设置服务器 位置:Tomcat——>conf——>server.xml(配置端口)
post:
在请求到达控制器之前设置编码——过滤器
通过自定义编码过滤器完成编码设置,新建一个CharacterEncodingFilter类:
package com.tjcu.filter;
import javax.servlet.*;
import java.io.IOException;
//字符编码过滤器
public class CharacterEncodingFilter implements Filter {
private String encoding = null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding= filterConfig.getInitParameter("aa");
System.out.println(encoding);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
//设置字符编码
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
//放行请求
filterChain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
web.xml:
<web-app>
<!--编码过滤器-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.baizhi.filter.CharacterEncodingFilter</filter-class>
<!–局部初始化参数 用于配置当前的编码格式–>
<init-param>
<param-name>aa</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Servlet组件执行顺序 LIstener——>Filter——>Servlet——>....
spring有自带的过滤器,只需在web.xml中配置
web.xml:
<web-app>
<!--编码过滤器-->
<filter>
<filter-name>charsetEncode</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>charsetEncode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>