Web应用配置文件和目录

web部署描述符

<servlet>
    <!-- Servlet在web部署描述符中名称,可以自定义但要求唯一 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- 具体处理请求和响应的Servlet,要求完整路径名 -->
    <servlet-class>isgod.niezhic.servlet.HelloServlet</servlet-class>
    <!-- 该节点不存在时(默认值为 -1 ),
         表示该Servlet在web容器启动的时候是不加载的,
         声明该标签并定义大于0的值就是为了使该Serlvet在web容器启动的时候就加载,
         数字的大小表示不同Servlet加载的顺序,
         当数字大小一致的时候则依照在web.xml中定义的顺序加载-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <!-- 要求和相对应的servlet-name一致 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- 定义当前资源路径名 -->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
web部署描述符中定义URL
一个请求的URL实际上由三个部分组成:contextPath + servletPath + pathInfo,可以使用HttpServletRequest的getRequestURL()来获取
contextPath可以使用HttpServletRequest的getContextPath()来获取
servletPath可以使用HttpServletRequest的getServletPath()来获取,但是当URL模式为 /* 和 "" 的时候,getServletPath()取得路径为空字符串
pathInfo可以使用HttpServletRequest的getPathInfo()来获取,没有额外路径信息时返回null

常见的URL模式:

1. 以 / 开头以 /* 结尾的模式,如 /account/* 表示访问帐户目录下中的资源文件: /account/open、/account/close
2. 以 *. 开头的模式,如 *.view 表示处理所有以view结尾请求
3. 完全匹配模式,如 /tester/test 表示URL中除了请求参数部分必须是 /tester/test

示例Servlet代码,如下:
/**
 * 请求URL路径解析
 */
public class URLPathServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        // 完整的请求URL路径,输出:http://localhost:8080/learnServlet/url/path/233
        out.println(request.getRequestURL() + "<br/>");
        // 当前环境根路径,输出:/learnServlet
        out.println(request.getContextPath() + "<br/>");
        // 处理Servlet路径,输出:/url/path
        out.println(request.getServletPath() + "<br/>");
        // 额外路径信息,输出:/233
        out.println(request.getPathInfo() + "<br/>");
    }
}

WEB-INF目录

1. 该目录名称固定,放置在该目录中的文件对外界是封闭的,客户端无法直接获取这些资源,只有通过处理相应Servlet的请求来获取
2. web.xml:web应用的部署表述文件,名称固定,路径也一定是在WEB-INF中

web-fragment.xml

在Servlet3.0中,如果一个JAR文件中有使用标注的Servlet,Web容器也可以加载该类
在Servlet3.0中,Web应用可以使用JAR来进行模块化部署,不仅是Servlet,监听器、过滤器等都可以定义在JAR文件中
在JAR文件中的Serlvet、监听器、过滤器等也拥有自己的部署表述符,那就是web-fragment.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-fragment xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                  http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
              version="3.0">

</web-fragment>
web-fragment.xml的根标签是<web-fragment></web-fragment>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一个Web应用是一个Web服务器上众多资源的集合,它包括了servlets,HTML页面,类,和其它组成一个完整应...
    Lucky_Micky阅读 1,775评论 0 2
  • 本章聊一聊ServletContext 3.0规范中定义的注解以及在web应用中使用的框架和库的可插拔性的提升。 ...
    Lucky_Micky阅读 6,135评论 0 3
  • 一.手动构建Web应用 手动建立一个Web应用,一般按照以下步骤执行: 在任意目录下新建一个文件夹,这里以webD...
    to0simple阅读 821评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,010评论 6 342