Servlet的部署描述符

Http请求到来时,Servlet容器如Tomcat需要分发请求到Servlet,然后由Servlet处理请求逻辑
显然,Servlet容器需要识别部署在其中的Servlet对象,Servlet的部署描述符正是起到此标识作用

一个Servlet Web应用程序部署到Tomcat时的目录结构为:
TOMCAT_DIR/webapps/+$app_name
    +$=WEB-INF
        +$=classes
        +$=lib
        =web.xml
        +images +css +js +json +xml +txt +doc +excel +jsp +html +...
        index.jsp index.html ...
    +images +css +js +json +xml +txt +doc +excel +jsp +html +...
    index.jsp index.html ...

+表示目录,$表示必需,=表示固定命名
app_name为应用程序名
WEB-INF下包括程序类文件目录classes、三方库目录lib、web配置文件web.xml以及所有只能通过应用程序间接访问的静态资源
WEB-INF外的静态资源可以直接通过url路径访问
    
Servlet的部署描述符可以配置在web.xml中,也可以直接注解在Servlet类头,Tomcat在启动时都能识别这些标记

项目的web.xml主要用以配置项目的Welcome_Pages欢迎页、Filter过滤器、Listener监听器、Servlet描述符、会话超时时间等
项目的web.xml并不是必需的,原因在于web.xml提供的功能不是每个项目都需要的,而且有其它更简单的办法来使用这些功能--xml文件太繁琐了
TOMCAT_DIR/conf目录下有作用于全局web应用web.xml文件,当一个web项目要启动时,Tomcat会首先加载全局web.xml文件,然后再加载项目的web.xml文件
Tomcat的启动和运行逻辑,不在本文讨论范围之内

一个Java Web项目完全可以不需要web.xml,尤其是使用Spring框架时
Spring对上述各项配置进行了默认实现,并通过各种各样的注解的方式开放给开发者定制自己的过滤器、监听器等功能,最样板的代码则奉行"约定大于配置"的统一思想
除了各种注解,Spring提供了org.springframework.web.WebApplicationInitializer接口以实现web.xml所提供的功能
实际使用中,无论是Spring还是SpringBoot,根本不会再使用这些古老的约定,开发者更多的还是使用注解来简单而又高效地完成所需的功能

一个前后端分离的Spring Web应用程序部署到Tomcat时的目录结构已经简化为:
TOMCAT_DIR/webapps/+$app_name
    +$=WEB-INF
        +$=classes
        +$=lib
与此同时,应用程序中也不再需要用户定义各种各样的Servlet类,对比Servlet的历史,这是一个巨大的进步

回归正题,Servlet的部署描述符在web.xml中的配置格式为:
    <servlet>
        <servlet-name>XxxServlet</servlet-name>
        <servlet-class>full-class-path-of-XxxServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>XxxServlet</servlet-name>
        <url-pattern>/xxx</url-pattern>
    </servlet-mapping>
    ...
    <servlet>
        <servlet-name>XyyServlet</servlet-name>
        <servlet-class>full-class-path-of-XyyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>XyyServlet</servlet-name>
        <url-pattern>/yyy</url-pattern>
    </servlet-mapping>
在Servlet类头注解的格式为:
@WebServlet(name="XxxServlet",urlPatterns = {"/xxx"})
public class XxxServlet extends HttpServlet

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值