求助!一个过滤器的问题.
要求:一个Login的Servlet,用来显示登陆的用户名. 再这之前,会先显示一个过滤器,它要求输入用户名,然后将用户名发送给Login,最后由Login将用户名显示出来,打出提示信息为: "欢迎"+username 这样的内容.但到了chain.doFilter(req,resp); 这步骤似乎出了些问题,代码如下:
Login:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public final class Login extends HttpServlet {
public void service(ServletRequest req,ServletResponse resp)
throws ServletException,IOException {
req.setCharacterEncoding("gb2312");
String user = req.getParameter("user");
resp.setContentType("text/html;charset=gb2312");
PrintWriter out = resp.getWriter();
out.println("欢迎您"+user);
out.close();
}
}
过滤器:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public final class FilterTest2 implements Filter {
public void init(FilterConfig parm1) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
resp.setContentType("text/html;charset=gb2312");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>过滤器登陆页面</title></head><body>");
out.println("<form action=Login method=get>");
out.println("<p>请输入用户名:");
out.println("<input type=text name=user><p>");
out.println("<input type=submit value=提交>");
out.println("<input type=reset value=重填>");
//chain.doFilter(req,resp); 这里注释掉后就可以正常运行
out.close();
}
public void destroy() {
}
}
关键的一步,chain.doFilter(req,resp); 把注释去掉后,输入http://localhost:8080/ch10/Login会显示错误页面:
HTTP Status 404 - /ch10/Login
--------------------------------------------------------------------------------
type Status report
message /ch10/Login
description The requested resource (/ch10/Login) is not available.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
web.xml主要内容如下:
<filter>
<filter-name>filtertest2</filter-name>
<filter-class>FilterTest2</filter-class>
</filter>
<filter-mapping>
<filter-name>filtertest2</filter-name>
<url-pattern>/Login</url-pattern>
</filter-mapping>