第五节 Servlet原理
5.1 web服务器内部操作
Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会有如下操作:

5.2 Mapping问题
1.一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.一个Servlet可以对应多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello4</url-pattern>
</servlet-mapping>
3.一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4.默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5.指定一些后缀或前缀
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.mjj</url-pattern>
</servlet-mapping>
注意:*之前不能加映射的路径,也就是“/”或者任意请求路径,如“hello/”
典例:创建一个Error的类,用来处理网页“404”的情况


注册servlet
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.mjj.servlet.Error</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
编写对应的Error.class

这里有一个优先级问题:
指定了固有的映射路径优先级最高,如果找不到这个路径,就会走默认的处理请求
这个时候我们再去访问,显示的“404”页面就会变成我们自己写的内容:

若是访问存在的,指定的映射路径,会正常显示内容:

|