[急!!!!] servlet 过滤器问题

rongyunsheng rongyunsheng 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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

...全文
评论 10
收藏 已收藏
分享
返回顶部
rongyunsheng
Web 开发 81,108 成员 341,721 内容