JavaWeb过滤器解决中文乱码问题
javaweb项目实现过滤器Filter解决前端表单提交的信息出现的中文乱码问题Javaweb三大组件是:Servlet,Filter,Listener。1、ServletServlet作为中转处理的容器,连接了客户端和服务器端的信息交互和处理。2、Filter拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response,实现开发者想得到的功能。3、Listener。
·
前言
Javaweb三大组件是:Servlet,Filter,Listener。
1、Servlet
Servlet作为中转处理的容器,连接了客户端和服务器端的信息交互和处理。
2、Filter
拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response,实现开发者想得到的功能。
3、Listener
Listener就是监听器,监听主要是对ServletContext,HttpSession,ServletRequest这三大域对象的创建和销毁事件监听,还有就是对域对象属性的操作监听,当监听这些事件发生是就会进行一些适当的操作。
提示:此次编写javaweb项目解决get和post请求的中文乱码问题
项目结构:
一、创建过滤器的类
示例:EncodingFilter.class
二、实现接口
1.EncodingFilter implements Filter
提示: 实现的接口
代码如下(示例):
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 {
// 强转
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("UTF-8") ;
response.setContentType ("text/html; charset=UTF-8") ;
filterChain.doFilter(request, response) ;
}
@Override
public void destroy() {
}
}
查看很多码友在设置的时候没有强转,但是我的没有强制之前是不行的,强制之后就可以了,各位看官因码而异。
2.web.xml注册过滤器
代码如下(示例):
<filter>
<filter-name>encoding</filter-name>//自定义的名字
//基本改这一个位置即可
<filter-class>com.yyl.utils.EncodingFilter</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>
//<url-pattern>标签里的 "/*" 是全路径过滤,之后在开发的时候可以根据需求更改的功能了
//在csdn的编译器默认视为注释
3. 重新运行项目即可
效果图:
前端表单提交
后台打印
更多推荐
已为社区贡献1条内容
所有评论(0)