部署Web应用
欲穷千里目,更上一层楼。
王之涣·《登鹳雀楼》
一、基于IDEA的JavaWeb项目的目录结构

- src文件夹下用于存放Java代码、图片等资源文件
- web文件夹下存放HTML页面等
- WEB-INF文件夹下用于存放部署描述文件(该文件必须命名为web.xml且必须存放在这个地方)
- 除了WEB-INF文件夹之外,web文件夹下的其它内容都可以通过浏览器地址栏直接访问
- 以上目录结构是开发时的目录结构,当在IDEA中启动Tomcat时会自动将JavaWeb项目部署至Tomcat,部署时的目录结构与上面的目录结构类似
二、DD中配置Servlet映射
三种元素
- 以斜线开头,扩展名可有可无
<url-pattern>/Test/Test.test</url-pattern>
- 以斜线开头,以一个“/”+“*”结束
<url-pattern>/Test/*</url-pattern>
- 以“ * ”开头,“*”后面必须有一个点加扩展名(如.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中配置错误界面
- 配置一个“普遍”型错误页面,应用于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、运行时异常和所有受查异常,但是必须使用完全限定类名
- 根据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>

被折叠的 条评论
为什么被折叠?



