Servlet学习笔记
Posted 救赎之道就在其中
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet学习笔记相关的知识,希望对你有一定的参考价值。
在这里记录最重要的要点
1,tomcat-->conf-->server.xml里面的东西是什么?(tomcat怎么知道“谁”去处理客户端来的请求?)
最主要的是一个依赖的控制,换句话说什么servlet(比如某个继承了HttpServlet的类)要装配在这个tomcat容器(具体是Context容器)里面在这个文件里面添加代码就可以了。
1 <Context debug="0" docBase="/Users/Davie/Documents/workspace/mySpring/WebContent" path="/chess" reloadable="true"/>
这句代码就是把我写的一个servlet类装配在tomcat容器里面。装配了之后,每次tomcat启动的时候都会解析server.xml,从而得到一个“映射关系”。
比如URL大致形式如下:http://hostname: port /contextpath/servletpath
其中的contextpath就是在server.xml里面写的(在这里是/chess这个路径),就把这个URL映到:/Users/Davie/Documents/workspace/mySpring/WebContent
这个地址。
2,工程里面的web.xml是什么?有什么用?(这个项目到底谁去处理具体的httpRequest?)
在工程里面有个很“著名”的xml文件:WebContent-->WEB-INF-->lib-->web.xml(具体操作系统,eclipse,tomcat版本不同会有不同)
简单来说,之前的映射是告诉服务器,URL里面的contextpath指定了“那个工程”来处理我的request的话,接下来的问题是:一个工程可以里面有很多Servlet。那么,谁又去处理哪个servletpath呢?
看一看典型的web.xml部署:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 id="WebApp_ID" version="3.1" metadata-complete="true"> 6 <display-name>mySpring</display-name> 7 <servlet> 8 <servlet-name>Foo</servlet-name> 9 <servlet-class>code.MyServlet</servlet-class> 10 </servlet> 11 <servlet-mapping> 12 <servlet-name>Foo</servlet-name> 13 <url-pattern>/TheServlet</url-pattern> 14 </servlet-mapping> 15 </web-app>
简单来说,第一个<servlet>标签是告诉tomcat,我有一个servlet叫Foo,它具体对应与我的code.MyServlet这个类(以后这个Servlet的消息都让这个类去处理)。第二个<servlet-mapping>标签是实现URL和servlet的映射:你URL里面写的servletpath(见上文)就可以映射到某个Servlet。这个地方要注意<servlet-name>必须一样。最终的效果是:URL中指定一个类来处理。也就是实现了浏览器写上某个地址,就找到了你写的类。
以上两点一起构成了“找到你”这个问题
--未完待续
以上是关于Servlet学习笔记的主要内容,如果未能解决你的问题,请参考以下文章