导航:首页 > 净水问答 > 编写过滤器统一编码

编写过滤器统一编码

发布时间:2021-03-13 00:03:48

1. 在HTML页面写一个过滤器,实现传进SERVLET的CLASS文件里面的编码机制统一

在页面的请求里面传递中文时候,会变成乱码,所以每次请求都需要 request.setCharacterEncoding("utf-8");
周睿羊做很麻烦,在web.xml里面写一个添加一个过滤器
<filter>
<filter-name>CharacterFilter</filter-name>
<filter-class>cn.zcq100.util.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

然后建立一个类,实现import javax.servlet.Filter;接口
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chian) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chian.doFilter(request, response);
}
这样每次请求的时候都会先通过这个过滤器过滤。

2. 怎么使用过滤器解决中文乱码

首先有web.xml中配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>net.tom.servlet.filter.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//net.tom.servlet.filter.EncodingFilter是其包和类所在的地址

我给你的DEMO是统一设为utf-8

你可以改一下就可以了

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/********************
* 过滤编码.用于把编码统一为:utf-8
* @author jiangqh
*
*/
public class EncodingFilter implements Filter {

public EncodingFilter() {
}

public void destroy() {

}
/****************
* 过滤方法
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);

}

public void init(FilterConfig arg0) throws ServletException {

}

}

3. 在java中,使用过滤器编码过滤乱码时,过滤器的编码怎么写

public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
if (null != encoding) {
HttpServletRequest request = (HttpServletRequest)srequest;
HttpServletResponse response = (HttpServletResponse)sresponse;

// 对请求进行编码设置
request.setCharacterEncoding(encoding); //把请求用指定的方法编码
response.setContentType("text/html");
response.setCharacterEncoding(encoding); //把返回响应指定 编码方式
System.out.println("------------过滤编码-------------" + encoding);
}
// 把处理权限交给下一个过滤器
chain.doFilter(srequest, sresponse);
}//这是核心方法
正好项目中有用到

4. get请求使用了过滤器修改编码,为什么还是乱码

你对getParameter的修改有问题,去掉编码的转码。Filter运行在Controller之前,Filter已经设置接收编码为utf8了

5. JSP Filter过滤器设置编码问题。。。

importjava.io.IOException;

importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.omg.CORBA.Request;

{

@Override
publicvoiddestroy(){
//TODOAuto-generatedmethodstub

}

@Override
publicvoiddoFilter(ServletRequestreq,ServletResponseres,
FilterChainchain)throwsIOException,ServletException{
//TODOAuto-generatedmethodstub
System.out.println("字符编码过滤器");

HttpServletRequestrequest=(HttpServletRequest)req;
HttpServletResponseresponse=(HttpServletResponse)res;

request.setCharacterEncoding("UTF-8");
chain.doFilter(request,response);
}

@Override
publicvoidinit(FilterConfigconfig)throwsServletException{
//TODOAuto-generatedmethodstub
}

}

以上就是Filter过滤器的代码, 都设置成UTF-8 支持中文, 写好了以上代码之后,要在web.xml文件中进行配置。

6. eclipse web项目的编码过滤器,统一设置成UTF-8

过滤器中的内容:
private static final long serialVersionUID =85757L;

private String encoding;

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {

arg0.setCharacterEncoding(encoding);

arg1.setCharacterEncoding(encoding);

arg2.doFilter(arg0, arg1);

}

public void init(FilterConfig arg0) throws ServletException {

encoding=arg0.getInitParameter("encoding");

}

web.xml文件中 添加过滤器
<filter>
<filter-name>类名</filter-name>
<filter-class>类名全路径(包括包名)</filter-class>
<init-param><!--参数 与过滤器中的encoding对应 encoding的实际值是utf-8-->
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>

7. 编码过滤器可以统一java工程中的编码,但是他是怎么实现的呢

原理:

当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,这个 Filter 就成了 Servlet 容器与该
Servlet 程序的通信线路上的一道关卡,该 Filter 可以对 Servlet 容器发送给 Servlet 程序的请求和 Servlet 程序回送给
Servlet 容器相应进行拦截,可以决定是否将请求继续传递给 Servlet 程序,以及对请求和相应信息是否进行修改。
在一个 web 应用程序中可以注册多个 Filter 程序,每个 Filter 程序都可以对一个或一组 Servlet 程序进行拦截。
若有多个 Filter 程序对某个 Servlet 程序的访问过程进行拦截,当针对该 Servlet 的访问请求到达时,web 容器将把多个 Filter 程序组合成一个 Filter 链(过滤器链)。Filter 链中各个 Filter 的拦截顺序与它们在应用程序的 web.xml 中映射的顺序一致。

实现步骤:
首先编写Filter的实现类程序。
其次,需要把实现的Filter添加到Web应用程序中,也就是说,需要在Web部署描述文件Web.xml中声明该Filter。
最后,将相关联的Filter与应用程序一起打包并部署。

8. 有了filter,还需要在界面上设置编码吗

用Filter吧,它的名字是过滤器,可以批量拦截修改servlet的请求和响应。

我们编写一个EncodingFilter.java,来批量设置请求编码。

package anni; import java.io.IOException;
import javax.servlet.Filter; import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

public void init(FilterConfig config) throws ServletException {}

public void destroy() {}

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

request.setCharacterEncoding("gb2312");
chain.doFilter(request, response);
}

}
在此EncodingFilter实现了Filter接口,Filter接口中定义的三个方法都要在EncodingFilter中实现,其中doFilter()的代码实现主要的功能:为请求设置gb2312编码并执行chain.doFilter()继续下面的操作。
与servlet相似,为了让filter发挥作用还需要在web.xml进行配置。

<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>anni.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

filter标签部分定义使用的过滤器,filter-mapping标签告诉服务器把哪些请求交给过滤器处理。这里的/*表示所有请求,/表示根路径,*(星号)代表所有请求,加在一起就变成了根路径下的所有请求。
这样,所有的请求都会先被EncodingFilter拦截,并在请求里设置上指定的gb2312编码。

9. JSP中文编码 我编写的过滤器似乎没有实现servlet的过滤功能。

额。。。
你是在servlet中直接输出的啊。。
哪有什么jsp页面,还有就是你的过滤器只设置了request编码,有设置response编码麽?
还有就是要将过滤器映射到要过滤的文件。。。。

阅读全文

与编写过滤器统一编码相关的资料

热点内容
沁园净水桶mra1怎么样 浏览:761
为何选择反渗透净水器 浏览:481
小米净化器为什么灯不亮 浏览:741
小米净化器的价格多少 浏览:962
废水站投诉管理 浏览:130
饮水机水反复烧开有什么坏处 浏览:494
超滤膜气密性试验压力 浏览:799
用半透膜把分子或离子从胶体 浏览:927
全国出名的污水处理厂家有哪些 浏览:864
污水处理站运行纪录单 浏览:409
提标改造污水 浏览:857
工业污水膜处理原理 浏览:635
青岛污水排水处理方案设计 浏览:766
什么叫饮水机抑菌 浏览:438
水果皮除水垢 浏览:932
净水器原装带码什么意思 浏览:244
四眼三箱polo怎么换机油滤芯 浏览:339
细胞膜是具有特殊结构和功能的半透膜对吗 浏览:323
为什么要控制污水mvr指标 浏览:722
好的水壶会出现水垢吗 浏览:298