如何开发一个servlet

步骤:

  1. 编写java类,继承HttpServlet
  2. 重写doGet和doPost方法
  3. Servlet程序交给服务器运行

    3.1servlet程序的class码拷贝到WEB-INF/classes目录

    3.2在web.xml文件中进行配置

注意:在eclipse neon2.0中,servlet直接生成已经不再需要配置web.xml文件,但是如果不使用2.0的功能,使用web.xml配置的servlet依然可以运行。

配置web.xml文件的写法:

1 <!-- 配置一个servlet -->
 2 <!-- servlet的配置 -->
 3 <servlet>
 4     <!-- servlet的内部名称,自定义。尽量有意义 -->
 5     <servlet-name>FirstServlet</servlet-name>
 6     <!-- servlet的类全名:包名+类名 -->
 7     <servlet-class>com.maodoer.test.FirstServlet</servlet-class>
 8 </servlet>
 9 
10 <!-- servlet的映射配置-->
11 <servlet-mapping>
12     <!-- servlet的内部名称,一定要和上面的内部名称一致 -->
13     <servlet-name>FirstServlet</servlet-name>
14     <!-- servlet的映射路径(访问servlet的路径) -->
15     <url-pattern>/first</url-pattern>
16 </servlet-mapping>

问题:访问URL http://localhost:8080/day10_web/first

前提:tomcat服务器启动时,首先加载webapps中的每隔web应用的web.xml配置文件。

http://:http协议

localhost:到本地的hosts文件中查找是否存在该域名对应的ip地址

8080:找到tomcat服务器

/day10_web:在tomcat的webapps目录下找到day10的目录

/first:资源名称

1)在day10的web.xml中查找是否有匹配的url-pattern的内容(/first)

2)如果找到匹配的url-pattern,则使用当前的servlet-name的名称到web.xml文件职工查询是否有相同名称的servlet配置

3)如果找到,则取出对应的servlet配置信息中的servlet-class内容,字符串:com.maodoer.test.FirstServlet

通过反射:

a)构造FirstServlet的对象

b)然后调用FirstServlet里面的方法

 

Servlet的映射路径:

        url      浏览器输入

精确匹配:  /first      http://localhost:8080/day10_web/first

      /maodoer/first  http://localhost:8080/day10_web/maodoer/first

 

模糊匹配:  /*        http://localhost:8080/day10_web/任意字符

      /itcast/*      http://localhost:8080/day10_web/itcast/任意字符

      *.后缀名      http://localhost:8080/day10_web/任意路径.后缀名  

      *.html(伪静态)   http://http://localhost:8080/day10_web/ergrep.html 

注意:

1)url-pattern一定以/开头或者以*开头。

2)不能同时使用两种模糊匹配,例如/itcast/*.do

3)当输入的url有多个servlet同时被匹配的情况下:

  3.1精确匹配优先(长的最像优先被匹配)

  3.2以后缀名结尾的模糊匹配级优先级最低 

 

Servlet缺省路径

servlet的缺省路径是在tomcat服务器内置的一个路径。该路径对应的是一个DefaultServlet(缺省Servlet)。这个缺省的Servlet的作用适用于解析web应用的静态资源文件。

tomcat--》config--》web.xml文件

问题:URL输入http://localhost:8080/day10_web/index.html如何读取文件?

1)到day10_web应用下的web.xml文件查找是否有匹配的url-pattern。

2)如果没有匹配的url-pattern,则交给tomcat内置的DefalutServlet进行处理。

3)DefalutServlet程序到day10_web项目的根目录下查找是否存在一个名称为index.html的静态文件。

4)如果找到该文件,则读取该文件的内容,返回浏览器。

5)如果找不到该文件,则返回404错误。

 

结论:先找动态资源,再找静态资源。