导航:首页 > 净水问答 > jsp过滤器处理中文字符编码

jsp过滤器处理中文字符编码

发布时间:2021-03-09 16:01:41

1. 如何使用过滤器解决jsp乱码

打开web项目,在src中新建一个类,规范一下编程习惯我们就把它放到一个包中去,项目右键新建“class”,包名填写例如“com.test.struts.filters”(习惯是域名反转),文件名首字母大写,例如“SetCharacterEncoding”。下面是类中的代码,实际上就是实现了Filter接口,重写了一下doFilter函数。

packagecom.test.hibernate.filters;

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;{


/*(non-Javadoc)
*@seecom.sun.net.httpserver.Filter#doFilter(com.sun.net.httpserver.HttpExchange,com.sun.net.httpserver.Filter.Chain)
*/
publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestrequest=(HttpServletRequest)srequest;
HttpServletResponseresponse=(HttpServletResponse)sresponse;

//注意这里请求和响应都强制转化了一下
request.setCharacterEncoding("UTF-8"); //设置请求编码“UTF-8”比较通用
response.setCharacterEncoding("UTF-8"); //设置相应编码
chain.doFilter(srequest,sresponse);//转发请求
}

publicvoiddestroy(){
//TODOAuto-generatedmethodstub

}

publicvoidinit(FilterConfigarg0)throwsServletException{
//TODOAuto-generatedmethodstub

}

}

web配置文件配置filter文件,打开web.xml文件,在<web-app></web-app>之间加入如下配置,<filter></filter>是设置类路径的,<filter-mapping></filter-mapping>是用来映射指定路径文件到filter的。

<filter>
<filter-name>setEncoding</filter-name>
<filter-class>com.test.struts.filters.SetCharacterEncodingFilter</filter-class>
<!--这里还可以使用初始变量
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
再在SetCharacterEncoding.java的定义一个privateStringencoding=null;
在init函数中加一句this.encoding=filterConfig.getInitParameter("encoding");
-->
</filter>
<filter-mapping>
<filter-name>setEncoding</filter-name><!--这个名称和上面的要相同-->
<url-pattern>/*</url-pattern><!--所有文件-->
</filter-mapping>

配置完后运行一下项目就不再看到那烦人的乱码了!

2. 对付jsp乱码的乱码过滤器要怎么添加啊

正常页面间传输 把编码统一 utf-8 或 gbk 其实不会出现乱码问题。
如果在数据库提取数据传给页面,可能会出现乱码问题。这时可在struts中设置编码。
或加一个过滤器。过滤器具体操作如下:
1:在你写JAVA类的地方新建个 类。filter 内容:
package com.yourcompany.filter;

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 filter implements Filter{

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 {
}

}
2:在web.xml添加 映射文件(注:<filter-class>写你过滤器类的路径</filter-class>)
<filter>
<filter-name>fileter</filter-name>
<filter-class>com.yourcompany.filter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>fileter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.如还有不明白的 HI我

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

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

4. 关于java过滤器解决中文乱码的

因为你袭遗漏了重要的一步。正确的方法如下:

if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//传递给下一个过滤器
chain.doFilter(request,response);

5. JSP过滤器过滤中文乱码

response.setContentType("text/html;charset=gbk");试试、过滤器有时候也不管用的。你要的话,请追问。。

6. jsp用过滤器解决中文乱码问题的方法

定义一过滤器,实现Filtter接口
public
class
EncodingFilter
implements
Filter
{
@Override
public
void
destroy()
{
//
TODO
Auto-generated
method
stub
}
@Override
public
void
doFilter(ServletRequest
req,
ServletResponse
resp,
FilterChain
chain)
throws
IOException,
ServletException
{
//
TODO
Auto-generated
method
stub
HttpServletRequest
request=(HttpServletRequest)req;
HttpServletResponse
response=(HttpServletResponse)resp;
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(req,
resp);
}
@Override
public
void
init(FilterConfig
filterConfig)
throws
ServletException
{
//
TODO
Auto-generated
method
stub
}
}
web.xml文件中,配置过滤器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>pers.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上这篇jsp用过滤器解决中文乱码问题的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

7. 如何配置Filter过滤器处理JSP中文乱码

注意问题:在学习用selvert的过滤器filter处理中文乱码时,在filter配置初始化时用了utf-8处理中文乱码,而在提交的jsp页面中却用了gbk。虽然两种都可以出来中文乱码,但是却造成了处理乱码的格式不一致。所以编译出错。
解决方法:所有地方都用utf-8或gbk

//过滤器类
CharactorFilter.jsp
package cn.com.Filter;
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 CharactorFilter implements Filter { //继承Filter类
//字符编码
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
}
//传递给下一个过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//获取初始化参数
encoding=filterConfig.getInitParameter("encoding");
}
public void destroy() {
// TODO Auto-generated method stub
encoding=null;
}
}

web.xml
<filter> <!--注意这里是filter,不要配置成servlet-->
<filter-name>CharactorFilter</filter-name> <!--过滤器名称-->
<filter-class>cn.com.Filter.CharactorFilter</filter-class> <!--过滤器的完整类名-->
<init-param> <!--初始化参数-->
<param-name>encoding</param-name> <!--参数名称-->
<param-value>utf-8</param-value> <!--参数值-->
</init-param>
</filter>
<filter-mapping> <!--过滤器映射-->
<filter-name>CharactorFilter</filter-name><!--过滤器名称-->
<url-pattern>/*</url-pattern><!--URL映射,给所有页面处理乱码-->
</filter-mapping>

8. jsp页面中文乱码,怎么解决

jsp页面也需要设置转码的:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
response.setContentType("text/html;charset=UTF-8");

处理文件:(.java)
转码的三种方法:
1、 接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
2、在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。
这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
3、为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。

9. 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文件中进行配置。

10. jsp页面经过滤器过滤后中文成为乱码

统一使用utf-8试试看

阅读全文

与jsp过滤器处理中文字符编码相关的资料

热点内容
液相用溶剂过滤器 浏览:674
纳滤水导电率 浏览:128
反渗透每小时2吨 浏览:162
做一个纯净水工厂需要多少钱 浏览:381
最终幻想4回忆技能有什么用 浏览:487
污水提升器采通 浏览:397
反渗透和不发渗透净水器有什么区别 浏览:757
提升泵的扬程 浏览:294
泽德提升泵合肥经销商 浏览:929
饮水机后盖漏水了怎么办 浏览:953
小型电动提升器 浏览:246
半透膜和细胞膜区别 浏览:187
废水拖把池 浏览:859
十四五期间城镇污水处理如何提质增效 浏览:915
怎么测试空气净化器的好坏 浏览:519
提升泵是干嘛的 浏览:744
布油做蒸馏起沫咋办 浏览:252
广州工业油烟净化器一般多少钱 浏览:204
喜哆哆空气净化器效果怎么样 浏览:424
油烟净化器油盒在什么位置 浏览:582