private String encoding = null;
改成:
private String encoding = "UTF-8";
改成:
private String encoding = "UTF-8";
解决方案 »
- apache-tomcat-6.0.20启动问题?
- 对进入网站的链接进行统计,统计是从baidu,还是在google点击进入网站的?
- 学Servlet的过程中一个非常奇怪的问题
- eclipse中文显示问题?怎么输入中文都是“口口口”字样?
- 使用InstallShield制作jSP安装程序
- 通过Apache为什么不能直接执行Servlet,在线等待
- 请问在JSP中连接sql server而不用数据源的方法应如何实现?
- 同时提交两个表单时如何获取其中一个表单的所有元素值?
- 请问做javabean都需要注意什么问题?
- 关于多个servlet Filter过滤器嵌套执行顺序的一个小问题
- jsp页面中对话框处理问题
- jsp调用servlet1,servlet1中调用另一个servlet2,然后取得数据,传回servlet1,然后servlet1再返回到jsp页面
LZ已经设置了在web.xml里,我发现的确很难,我也弄了半天,可是没弄出来,Sorry
另外<url-pattern>/filter </url-pattern> 你是想过滤/filter目录下的文件吗
到filter中的值乱码表示你在传进来之前就是乱码
在jsp页面没有使用编码所致
不行再试下GBK 或者gb2312
可能有两种情况,首先你的提交页面设置的不是utf-8格式的,可能是GBK也可能是GB2312,这样就UTF-8就不能对上传参数解码。
还有一个可能就是你的提交方式是get提交,而不是post提交,get提交和post提交的处理方式是不同的,post可以用request.setCharacterEncoding(encoding); 的方式进行字符解码,但是get提交不行,以为get提交是在链接后面直接挂上一个xxx=xxx的提交方式。所以要自己手动转码,对于这一点你可以自己手动实现转码(这是比较牛的一种做法),还有就是到网上下专门的转码包,这种包可以是java包,也可以是js控件。
// TODO Auto-generated method stub
encoding = filterConfig.getInitParameter("encoding");
}
这方法,那到不能读?里面是放字符串啊,而且名字也一样,怎么会没读到呢?请指明是哪错了,谢谢!!!
<body>
<form action="<%=request.getContextPath()%>/filter">
请输入你的用户名:
<input type="text" name="username">
请输入你的密码:
<input type="password" name="userpass">
<input type="submit" value="过滤">
</form>
</body>怎么回说没读到呢?难道是我还不对?另外再回复5楼的大哥,我在JSP文件都设置了"UTF-8"编码的格式,下面给出代码看看:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%我是在MYECLIPSE系统设置了使用"UTF-8"编码格式的,应该不会有错!!还有,就你说的"另外 <url-pattern>/filter </url-pattern> 你是想过滤/filter目录下的文件吗"这句话,请问是什么意思,我是初学者,不是很懂,这个"<url-pattern>"里面到底放的是一个随意写的URL地址(通过这个URL找到FILTER),还是需要过滤的目录啊?如果是后者,请仔细给我讲一下,具体是什么意思!!
例如你设置了一个servlet
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>org.spiniper.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/myproject/Test</url-pattern>
</servlet-mapping>
再设置一个过滤器
<filter>
<filter-name>FilterTest</filter-name>
<filter-class>org.spiniper.FilterTest</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterTest</filter-name>
<url-pattern>/myproject/Test</url-pattern>
</filter-mapping>
那么当你通过/myproject/Test路径访问Test这个servlet资源的时候,就会先执行FilterTest来处理请求。
这是一种单一的过滤模式,也就是说这个过滤器只有在用户访问/myproject/Test路径的时候,过滤器才会执行,如果访问的是/myproject/Test1或者/Test,那么过滤器就不会执行了。
那么如何让过滤器截取所有请求呢,其实只要这样设置“<url-pattern>/*</url-pattern>”,那么所有请求都会被截取
如果你只是想截取/myproject开头路径的所有请求你只要这样配置<url-pattern>/myproject/*</url-pattern>就可以截取/myproject路径下的所有请求了。还可以截取以某某后缀结尾的请求<url-pattern>*.html</url-pattern>。
一般来说过滤器是用来进行安全验证和信息拦截的,当然也可以用来实现业务逻辑。过滤器是一个非常好用的东西,非常强大。
"这句话,如果这样设置,那过滤器就可以过滤全部的网页请求,包括什么.HTML .JSP什么的,反正全部都给过滤了,你是这意思吗?第二,你说的"如果你只是想截取/myproject开头路径的所有请求你只要这样配置 <url-pattern>/myproject/* </url-pattern>就可以截取/myproject路径下的所有请求了。"这句话,我还没怎么看懂,主要集中在"/myproject"和"myproject/*"这里我认为这两个URL是可以随便写的,什么叫截取/myproject路径下的所有请求啊?我的理解是在<url-pattern>里写的URL对应到上面的<filter-name>里的名字,在从这个名字找到<filter-class>里的类路径,那如果是这样的话,截取/myproject路径的所有请求是什么意思?
url因为确定是iso-8859-1字符,包含中文,还是按iso-8859-1把中文截断,最后就乱了。
<url-pattern>/myproject/* </url-pattern>这样设置的想过和上面差不多,只是它截取的是 <http://xxx.xxx.xxx:8080/myproject/下所有请求,如果上下文根是/test,那么就截取http://xxx.xxx.xxx:8080/test/myproject/下所有请求。