2019独角兽企业重金招聘Python工程师标准>>>
一.文件存放位置
说明:
1.myWebApp是指要发布的web app 名字,在eclipse里面导出成war文件后,myWebApp.war ,可以将此war文件直接放到tomcat的webapp目录下,这是tomcat服务器启动时默认的web项目文件夹。tomcat会自动解压myWebApp.war文件,生成同名文件夹。
2.在eclipse中写项目时,各类文件在eclipse中的存放目录可能会有区别,但是导出后就是按照下面的规则存放的。
二.配置web.xml
1. servlet mapping (servlet映射,即MVC中的control类,一般view层表单提交时,action里面的提交文件不写真实的文件名,SelectBeer.do,一般写成以do为扩展的自定义文件名,.do是约定成俗的,不要纠结这个,也可以去掉扩展,直接写成SelectBeer,反正只是个名称)
<servlet>
<servlet-name> Beer(自定义,主要是一个钩子的作用) </servlet-name>
<servlet-class>com.example.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> Beer </servlet-name>
<url-pattern>/Beer/SelectBeer.do(当view里的表单提交,并寻找SelectBeer.do文件时,Container 会根据<servlet-name>这里是Beer找到上面关联的<servlet-class>这里是com.example.BeerSelect)</url-pattern>
</servlet-mapping>
注意:当web.xml配置了多个servlet mapping时,一个请求进来后,会先找具体得名字,例如/Beer/SelectBeer.do,先找SelectBeer.do,如果没找到,再匹配目录,例如/Beer/*,目录也没有匹配到时,找相同扩展名的,这里是.dao
2.配置网站默认首页
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
当在浏览器输入一个网址是,服务器在输入的目录下按照<welcome-file-list>列表里面的顺序寻找默认页面,找到后就不再找其他的。
实例:
如上目录:
在浏览器输入http://localhost:8080/MyTestApp/
服务器看到<welcome-file-list>第一个设置的是index.html,于是在MyTestApp目录下寻找index.html,也就是整个web项目中,当没有找到index.html这个页面时,寻找下一下页面default.jsp,如果这个也没找到,一般是显示404页面。
在浏览器输入http://localhost:8080/MyTestApp/search
服务器在search目录下寻找index.html,如果没找到,则找default.jsp,还是没找到就显示404页面。
3.配置error pages
Declaring a catch-all error page
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorPage.jsp</location>
</error-page>
Declaring an error page for a more explicit exception
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/arithmeticError.jsp</location>
</error-page>
404错误
<error-page>
<error-code>404</error-code>
<location>/notFoundError.jsp</location>
</error-page>
4.servlet initialization
servlet一般是在客户端发起第一次请求时初始化,这种情况下,第一个用户访问时会比较慢。如果我们希望在部署web项目时就初始化servlet,以解决这个问题。可以在web.xml里面配置。
<servlet>
<servlet-name>KathyOne</servlet-name>
<servlet-class>foo.DeployTestOne</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
说明:<load-on-startup>中的数字只要大于0,则表示字部署时就初始化servlet,这个数字的大小并不表示要初始化的servlet的数量,有时候有很多个servlet要被初始化,数字小的小load,只是代表顺序。