[急!!!!] servlet 过滤器问题
package TestFilter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NoteServlet extends HttpServlet {
public final static String type="text/html;charset=GB2312";
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException {
response.setContentType(type);
ServletOutputStream out=response.getOutputStream();
out.println("<html>");
out.println("<head><title>留言簿</title><body>");
String userName=request.getParameter("userName");
String content=request.getParameter("content");
if(userName!=null){
userName=new String(userName.getBytes("ISO-8859-1"),"GB2312");
content=new String(content.getBytes("ISO-8859-1"),"GB2312");
}
if(content!=null&&!content.equals("")){
out.println("<p><h3>"+userName+"的留言为:"+content+"</h3></p>");
}
out.println("<form action="+request.getContextPath()+"/note method=get />");
out.println("<b>姓名:</b>");
out.println("<input type=text size=10 name=userName><BR>");
out.println("<b>留言:</b><BR>");
out.println("<textArea name=content rows=5 cols=20 wrap></textArea><br>");
out.println("<BR>");
out.println("<input type=submit value='提交'>");
out.println("</form>");
out.println("</body></html>");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException {
doGet(request,response);
}
public void destroy(){
}
}
第二个:
package TestFilter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NoteFilter implements Filter{
private FilterConfig config=null;
private String blackList;
public void init(FilterConfig config){
this.config=config;
blackList=config.getInitParameter("blackList");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,ServletException{
boolean available=false;
String userName=((HttpServletRequest)request).getParameter("userName");
if(userName!=null){
userName=new String(userName.getBytes("ISO-8859-1"),"GB2312");
}
String[]str=blackList.split(",");
for(int i=0;i<str.length;i++){
if(userName.indexOf(str[i])!=-1){
available=true;
break;
}
}
if(userName!=null&&available){
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
out.println("<html><head><title>NoteFilter过滤器</title></head><body>");
out.println("<center><font color=red>对不起"+userName+
"你已经被加入了黑名单,你没有留言权限!!!</font></center>");
out.println("</body><html>");
out.flush();
return ;
}
long before=System.currentTimeMillis();
config.getServletContext().log("NoteFilter:before call chain.doFilter");
chain.doFilter(request, response);
config.getServletContext().log("NoteFilter:after call chain.doFilter");
long after=System.currentTimeMillis();
String name="";
if(request instanceof HttpServletRequest){
name=((HttpServletRequest)request).getRequestURI();
}
config.getServletContext().log("你请求"+name+"所用的时间为"+(after-before));
}
public void destroy(){
config=null;
}
}
web.xml 配置
<?xml version="1.0" encoding="GB2312"?>
<web-app>
<filter>
<filter-name>NoteFilter</filter-name>
<filter-class>/TestFilter.NoteFilter</filter-class>
<int-param>
<param-name>blackList</param-name>
<param-value>张三,王五,赵六</param-value>
</int-param>
</filter>
<filter-mapping>
<filter-name>NoteFilter</filter-name>
<url-pattern>/note</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>NoteServlet</servlet-name>
<servlet-class>/TestFilter.NoteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>noteServlet</servlet-name>
<url-pattern>/note</url-pattern>
</servlet-mapping>
</web-app>
在service.xml 中加入了host 下加入了
<Logger className="arg.apache.catalina.logger.FileLogger"
directory="logs" prefix="practice." sufix=".txt"/>
出现了下面的问题:
Thread [main] (Suspended (exception MalformedByteSequenceException))
UTF8Reader.invalidByte(int, int, int) line: not available
UTF8Reader.read(char[], int, int) line: not available
XMLEntityScanner.load(int, boolean) line: not available
XMLEntityScanner.skipString(String) line: not available
XMLVersionDetector.determineDocVersion(XMLInputSource) line: not available
JAXPConfiguration(XML11Configuration).parse(boolean) line: not available
JAXPConfiguration(XML11Configuration).parse(XMLInputSource) line: not available
SAXParser(XMLParser).parse(XMLInputSource) line: not available
SAXParser(AbstractSAXParser).parse(InputSource) line: not available
Digester.parse(InputSource) line: 1644
ContextConfig.applicationWebConfig() line: 365
ContextConfig.start() line: 1066
ContextConfig.lifecycleEvent(LifecycleEvent) line: 261
LifecycleSupport.fireLifecycleEvent(String, Object) line: 117
StandardContext.start() line: 4252
StandardHost(ContainerBase).addChildInternal(Container) line: 791
StandardHost(ContainerBase).addChild(Container) line: 771
StandardHost.addChild(Container) line: 525
HostConfig.deployDirectory(String, File, String) line: 926
HostConfig.deployDirectories(File, String[]) line: 889
HostConfig.deployApps() line: 492
HostConfig.start() line: 1149
HostConfig.lifecycleEvent(LifecycleEvent) line: 311
LifecycleSupport.fireLifecycleEvent(String, Object) line: 117
StandardHost(ContainerBase).start() line: 1053
StandardHost.start() line: 719
StandardEngine(ContainerBase).start() line: 1045
StandardEngine.start() line: 443
StandardService.start() line: 516
StandardServer.start() line: 710
Catalina.start() line: 578
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
Bootstrap.start() line: 288
Bootstrap.main(String[]) line: 413
...全文
相关推荐
servlet过滤器解决乱码问题
本文将详细介绍如何通过Servlet过滤器来解决这类乱码问题。
servlet过滤器实例经典过滤器
本教程将深入讲解如何配置和使用Servlet过滤器,以及介绍五个经典的过滤器实例。首先,让我们理解Servlet过滤器的基本概念。
java-web -- servlet 拦截器 过滤器使用
过滤器是Java Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,以及在响应返回给客户端之前进行后处理。
java servlet过滤器使用示例
Java Servlet过滤器是一种强大的Web应用组件,它允许开发者在请求到达Servlet之前或之后对其进行控制和处理。作为标准的Java类,过滤器通过实现javax.servlet.Filter
Servlet3.0使用注解标注过滤器(Filter)
#### 二、Servlet过滤器的概念Servlet 过滤器是一种可以在请求到达目标资源之前或响应离开目标资源之后进行处理的组件。它可以用来实现诸如登录验证、编码转换、压缩、加解密等功能。


Web 开发
