Servlet工作原理
1、浏览器、Web服务器、Servlet之间的关系
Servlet是由Web服务器调用的,当Web服务器收到浏览器的请求后会:
2、Mapping(请求映射路径)
-
一个Servlet可以指定一个映射路径
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
-
一个Servlet可以指定多个映射路径
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello3</url-pattern> </servlet-mapping>
-
一个Servlet可以指定通配映射路径
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping>
-
默认请求路径(会覆盖webapp下的index.jsp不建议使用)
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
-
指定一些前缀或后缀
<!--可以自定义后缀实现映射 注:*前不能加映射的路径否则服务器启动会报错 如:hello/*.zhang --> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>*.zhang</url-pattern> </servlet-mapping>
-
优先级问题
指定了固有路径优先级最高,如果找不到就会走默认的处理请求:
<!--自定义404--> <servlet> <servlet-name>ServletError</servlet-name> <servlet-class>com.zhang.servlet.ErrorServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletError</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>