50,503
社区成员
发帖
与我相关
我的任务
分享
<filter>
<filter-name>LoggerFilter</filter-name>
<filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggerFilter</filter-name>
<url-pattern>LoggerServlet</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>LoggerServlet</servlet-name>
<servlet-class>myfilter.LoggerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoggerServlet</servlet-name>
<url-pattern>/LoggerServlet</url-pattern>
</servlet-mapping>
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>MyFilter</TITLE></HEAD>");
response.setCharacterEncoding("GB2312");
out.println("<BODY>");
out.print("<h1>简单过滤器 Servlet</h1>");
String requestedUri=(String) request.getRequestURI();//获得请求页面的相对路径
String requestedUriAttr=(String) request.getAttribute("URI");
out.print("<b>请求的 URI 为:</b>"+requestedUri+"<br/>");
out.println("<b>请求中的\"URI\"属性值为:</b>"+requestedUriAttr);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain){
long startTime=System.currentTimeMillis();//获取自1970年1月1日到现在的毫秒数
String remoteAddress=request.getRemoteAddr();//获得客户端的IP地址
String remoteHost=request.getRemoteHost();//获得客户端的主机名
HttpServletRequest myReq=(HttpServletRequest) request;
String reqURI=myReq.getRequestURI();//获得请求页面的相对路径
System.out.println(reqURI);
try{
request.setAttribute("URI", reqURI);
filterChain.doFilter(request, response);
}catch(ServletException sx){
filterConfig.getServletContext().log(sx.getMessage());
}catch(IOException iox){
filterConfig.getServletContext().log(iox.getMessage());
}
filterConfig.getServletContext().log("发起请求的 IP 为 "+remoteAddress+"("+remoteHost+"),访问源为 "+reqURI+",耗时 "+(System.currentTimeMillis()-startTime)+"ms");
}
<body>
<h1>欢迎使用第一个过滤器示例</h1>
<a href="/filterproject/LoggerServlet">单击此处查看过滤器的效果</a>
</body>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
public boolean isLoggable(LogRecord record) {
return false;
}