读书人

过滤器有关问题!请帮帮!好

发布时间: 2011-12-25 23:21:20 作者: rapoo

过滤器问题!请各位高手帮帮!好急
原意是在表单提交后通过过滤器解决中文乱码在另一个JSP页面中显示注册信息,是一本书上的代码!
在没有加过滤器的时候除了接收注册信息页面有代码后一切都很正常,加了过滤器servlet后,用JB2005编译出现错误信息:
URL: Unable to open location: Document not found on server

过滤器代码如下
package filter;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;

class encodingFilter implements Filter{

public void init(FilterConfig filterConfig)throws ServletException
{
}

public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{

req.setCharacterEncoding( "gb2312 ");
chain.doFilter(req,res);
}
public void destroy()
{
}
}


WEB.XML中的设置如下
<filter>
<filter-name> encodingfilter </filter-name>
<filter-class> filter.encodingFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> encodingfilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>

注册页面userRegist1.jsp如下
<%@ page contentType= "text/html; charset=GBK " %>
<html>
<head>
<title>
新用户注册
</title>
</head>
<body bgcolor= "#ffffff ">
<form method= "POST " action= "acceptUserRegist1.jsp " name= "form1 " >
新用户注册 <br/>
用户名(*): <input type= "text " name= "username " size= "20 "> <br />
密码(*): <input type= "password " name= "userpassword " size= "30 "/>
性别: <input type= "radio " value= "男 " checked name= "sex "/> 男 <input type= "radio " name= "sex " value= "女 " /> 女 <br/>
出生年月: <input type= "text " name= "year " size= "4 " maxlength= "4 "> 年
<select name= "month ">
<option value= "1 " selected> 1 </option>
<option value= "2 "> 2 </option>
<option value= "3 "> 3 </option>
<option value= "4 "> 4 </option>


<option value= "5 "> 5 </option>
<option value= "6 "> 6 </option>
<option value= "7 "> 7 </option>
<option value= "8 "> 8 </option>
<option value= "9 "> 9 </option>
<option value= "10 "> 10 </option>
<option value= "11 "> 11 </option>
<option value= "12 "> 12 </option>

</select> 月
<input type= "text " name= "day " size= "3 " maxlength= "4 " /> 日 <br>
电子邮箱: <input type= "text " name= "E-mail " maxlength= "29 "/>
<br>
家庭住址: <input type= "text " name= "address " size= "20 "/> <br />
<input type= "submit " value= "提交 "/> <input type= "reset " value= "重写 " />
</form>
</body>
</html>

显示注册信息页面acceptUserRegist1.jsp如下
<%@ page contentType= "text/html;charset=gb2312 "%>
<html>
<head>
<title> 接收新用户注册 </title>
</head>
<body>
这是新用户注册所提交的数据
<br />
用户名是:${param.username} <br/>
密码是:${param.userpassword} <br/>
性别是:${param.sex} <br/>
出生年月是:${param.year}${param.month}${param.day} <br/>
电子邮箱是:${param.email} <br/>
家庭住址是:${param.address} <br/>
</body>
</html>

不知道什么原因啊!和参考书上的代码一摸一样,但却会被过滤器屏蔽访问!向各位大哥求救!

[解决办法]
<filter-mapping>
<filter-name> encodingfilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>

把过滤器去了看看.应该是jsp问题.
还有就是/*
肯定要被filter拦截的.
[解决办法]
是不是你的 encodingFilter 不是public,改成public试一下
[解决办法]
up
[解决办法]
web.xml的配置没问题,我的和你的一样,你确认这个没错就行: <filter-class> filter.encodingFilter </filter-class> 。
类声明和你的不同,我的是public的,和3楼说的一样。
照上面说的试试吧

读书人网 >Java Web开发

热点推荐