0%

DefaultServlet和JspServlet

在tomcat的conf/web.xml中有两个默认的Servlet,DefaultServlet和JspServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>

DefaultServlet

由于url-pattern为/,是默认的Servlet,当客户端请求不能匹配其他所有的Servlet时,由该Servlet处理

主要用于处理静态资源,为了提升服务器性能,对访问文件进行了缓存

JspServlet

负责处理所有的jsp文件请求,其对应的url-pattern为*.jsp和*.jspx,其实Jsp说白了就是一种特殊的Servlet,而JspServlet就是来处理这个特殊的Servlet的

  • 对相应的jsp页面的请求被JspServlet拦截
  • 执行JspServlet的service方法,根据JSP文件生成对应的Servlet的java代码
  • 将java代码编译为java类
  • 构造Servlet实例并执行请求,调用生成的jsp的Servlet类内的_jspService方法

欢迎关注我的其它发布渠道