1.容器是如何处理请求资源路径的?
比如,在浏览器地址栏输入http://ip:port/appname/abc.html,容器如何处理?
step1.容器默认会认为访问的是一个Servlet,所以容器会查看web.xml中有没有匹配的Servlet 有三种匹配方式:
精确匹配:
url-pattern>的值必须等于请求路径。比如说,对于上述请求,值必须是“/abc.html”
通配符匹配:
使用“*”匹配任意的零个或者多个字符。比如
/*
/demo/*
后缀匹配:
使用“*.”开头,后接一个后缀,用来匹配所有以该后缀结尾的请求。比如
*.do
*.action
step2.如果没有匹配的Servlet,则容器会查找对应的文件
2.如何让一个Servlet处理多种请求?
step1.使用后缀匹配,比如
*.do
step2.分析请求资源路径,进行不同的处理
//step1.获得请求资源路径
String uri = request.getRequestURI();
System.out.println("uri:" + uri);
//step2.分析请求资源路径,进行不同的处理
String path =
uri.substring(
uri.lastIndexOf("/"),
uri.lastIndexOf("."));
System.out.println("path:" + path);
if("/list".equals(path)) {
System.out.println("处理用户列表请求");
}else if("/add".equals(path)) {
System.out.println("处理添加用户请求");
}
3.过滤器
(1)什么 是过滤器?
Servlet规范当中定义的一种特殊的组件,用于拦截Servlet容器的调用过程。
Servlet规范当中定义的一种特殊的组件,用于拦截Servlet容器的调用过程。
容器启动之后,会立即创建过滤器实例,只会创建一个实例。
容器在创建好过滤器实例之后,接下来会调用过滤器的init方法
该方法只执行一次,容器会将FilterConfig对象作为参数传递过来,该对象提供了一些实用方法,比如读取初始化参数的方法。
注:
容器收到请求之后,会先调用过滤器,再调用Servlet。
* 注(了解):
* ServletRequest是HttpServletRequest的父接口
* ServletResponse是HttpServletResponse的父接口
(2)如何写一个过滤器?
step1.写一个java类,实现Filter接口。
step2.在接口方法当中,实现拦截处理逻辑。
step3.配置过滤器。(web.xml)