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中指定一个类来处理。也就是实现了浏览器写上某个地址,就找到了你写的类。

以上两点一起构成了“找到你”这个问题

 

--未完待续

 

posted @ 2016-09-04 09:39  DavieTiming  阅读(173)  评论(0编辑  收藏  举报