代码结构如下:
$:~/hotel.com/ROOT #
index.jsp
WEB-INF
classes
hello
HelloFilter.class HelloServlet.class
src
hello
HelloFilter.java HelloServlet.java
web.xml
其中web.xml配置
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
helloFilter
hello.HelloFilter
helloFilter
/hello
HelloServlet
hello.HelloServlet
HelloServlet
/hello
HelloServlet.java代码如下
package hello;
import java.util.Vector;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
}
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doPost(req, res);
}
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String out = "Hello You";
PrintWriter writer = res.getWriter();
writer.write("
");writer.write(out);
writer.write("");
} // doPost
}
HelloFilter.java代码如下
package hello;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class HelloFilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Filter 初始化");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
System.out.println("拦截 URI="+request.getRequestURI());
PrintWriter writer = res.getWriter();
writer.write("");
chain.doFilter(req, res);
writer.write("");
}
@Override
public void destroy() {
System.out.println("Filter 结束");
}
}
编译运行效果如下
javac -classpath .:/root/apache/apache-tomcat-6.0.37/lib/servlet-api.jar:/usr/share/java/servlet.jar *.java
/usr/share/tomcat6/bin/catalina.sh start
curl 127.0.0.1:8080/hello
tail -f /var/log/tomcat6/catalina.out
拦截 URI=/hello