|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。js|servlet|编码|成绩利用filter来改动request的编码在后面的文章内里,我们会商了在tomcat下的jsp和servlet的字符编码成绩!
晓得当没有指定request的编码的时分,从客户端失掉的数据是iso-8859-1编码的(request.getParameter()失掉传送的参数值);
可是我们怎样来改动request的编码呢?
办法有良多种!
好比:在getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request,response);之前修正
request的编码,那末在jsp/jsptoserv/hello.jsp中失掉的参数值就是制订的编码的字符。
本文我们利用Filter来修正request的编码!
1)起首编写filter类:
packagemyFilter;
importjava.io.IOException;
importjavax.servlet.*;
publicclassChangeCharsetFilterimplementsFilter{
protectedStringencoding=null;/////要制订的编码,在web.xml中设置
protectedFilterConfigfilterConfig=null;
publicvoiddestroy(){
this.encoding=null;
this.filterConfig=null;
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
throwsIOException,ServletException{
if(request.getCharacterEncoding()==null){
Stringencoding=getEncoding();////失掉指定的编码名字
if(encoding!=null)
request.setCharacterEncoding(encoding);////设置request的编码
}
chain.doFilter(request,response);///无机会实行下一个filter
}
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");///失掉在web.xml中设置的编码
}
protectedStringgetEncoding(){
return(this.encoding);///失掉指定的编码
}
}
2。编纂web.xml文件
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<!DOCTYPEweb-app
PUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>myFilter.ChangeCharsetFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>//////指定编码为GB2312
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>////////关于一切的request改动其编码
</filter-mapping>
</web-app>
///
3。
写一个a.jsp
<%@pagecontentType="text/html;charset=GB2312"%>
<html>
<head></head>
<body>
<%
Stringname=request.getParameter("name");///原本这里失掉字符是iso-8859-1编码的,不克不及间接
在Console中输入的,可是如今改动了request的编码体例,此时的name的编码是GB2312,以是能准确在Console中显现的。
System.out.println(name);
%>
<formaction="a.jsp"method="post">
<inputtype="text"name="name">
<inputtype="submit">
</form>
<%=name%>
</body>
</html>
完!
关于中文处置的成绩就写这些了!
在1995年5月23日以“Java”的名称正式发布了。 |
|