6.部署Web应用

欲穷千里目,更上一层楼。

王之涣·《登鹳雀楼》

一、基于IDEA的JavaWeb项目的目录结构

在这里插入图片描述

  • src文件夹下用于存放Java代码、图片等资源文件
  • web文件夹下存放HTML页面等
  • WEB-INF文件夹下用于存放部署描述文件(该文件必须命名为web.xml且必须存放在这个地方)
  • 除了WEB-INF文件夹之外,web文件夹下的其它内容都可以通过浏览器地址栏直接访问
  • 以上目录结构是开发时的目录结构,当在IDEA中启动Tomcat时会自动将JavaWeb项目部署至Tomcat,部署时的目录结构与上面的目录结构类似

二、DD中配置Servlet映射

三种元素

  1. 以斜线开头,扩展名可有可无
<url-pattern>/Test/Test.test</url-pattern>
  1. 以斜线开头,以一个“/”+“*”结束
<url-pattern>/Test/*</url-pattern>
  1. 以“ * ”开头,“*”后面必须有一个点加扩展名(如.test)
<url-pattern>*.test </url-pattern>
  • 容器会按以上顺序查找匹配
  • 如果一个请求与多个匹配,容器会选择最长的匹配

三、DD中配置欢迎文件

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
  • 可以为整个网站定义一个默认页面,也可以为各个目录配置默认页面。如上所示,当在浏览器地址栏中输入一个不完整的地址后,容器会从< welcome-file-list >列出的第一个欢迎文件开始,选择找到的第一个匹配欢迎文件
  • 所有的欢迎文件都放在一个< welcome-file-list >中
  • < welcome-file >中的文件不以“/”开头

四、DD中配置错误界面

  1. 配置一个“普遍”型错误页面,应用于Web应用中的所有资源
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/errorDealOne.html</location>
</error-page>

2.为更明确的异常配置一个错误页面

<error-page>
    <exception-type>java.lang.AbstractMethodError</exception-type>
    <location>/errorDealTwo.html</location>
</error-page>
  • 只有存在AbstractMethodError异常时才会调用这个错误页面,如果既配置了这个错误页面有配置了上面的“普遍型”错误页面,只要不是AbstractMethodError,其他异常都会调用errorDealOne.html
  • < exception-type >中可以声明java.lan.Error、运行时异常和所有受查异常,但是必须使用完全限定类名
  1. 根据Http状态码配置错误页面
<error-page>
    <error-code>404</error-code>
    <location>/notFound.html</location>
</error-page>
  • 以上配置了一个响应的状态码是“404”时调用的错误页面
  • 可以通过程序生成错误码(状态码),如:

response.sendError(HttpServletResponse.SC_FORBIDDEN);

上面的代码与下面这行代码是一样的

response.sendError(403);

五、DD中配置Servlet初始化

如果希望在服务器启动时便加载Servlet,而不是等到第一个请求到来时才加载,可以在DD中做如下配置:

<servlet>
    <servlet-name>startServlet</servlet-name>
    <servlet-class>com.example.StartServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
  • 只要< load-on-startup >中的数字非负就意味着要在服务器启动时加载
  • 若有多个Servlet需要在服务器启动时加载,加载顺序取决于< load-on-startup >中的数字,数字越小加载顺序越靠前
  • 如有多个Servlet的< load-on-startup >数字一样,则加载顺序取决于声明这些Servlet的顺序

六、DD中声明< mime-mapping >

在DD中可以配置扩展名和MIME类型之间的映射,如:

<mime-mapping>
    <extension>mp4</extension>
    <mime-type>video/mp4</mime-type>
</mime-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值