(1) Servlet - 1

来源:互联网 发布:java开源crm系统 编辑:程序博客网 时间:2024/05/20 09:07

开发 Servlet 有三种方式:

  1. 实现 Servlet 接口
  2. 继承 GenericServlet 抽象类 service 是抽象方法
  3. 继承 HttpServlet 抽象类 实现了 service ,虽然是抽象类,但是没有抽象方法,需要被继承

继承体系:
Servlet 是接口,开发需要实现接口中的所有方法。
    |
    +– GenericServlet 抽象类,实现了 Servlet 接口,
     abstract void service(ServletRequest req, ServletResponse res)
      { 抽象方法需要自己实现 }
    |
    +– HttpServlet 抽象类,继承 GenericServlet,默认实现了里面的
     抽象方法,只需要重写 doGet doPost 即可。这两个 do 方法
     其实就是对 Servlet 中的 service 方法进行了封装。

方式一:实现 Servlet 接口

public class Servlet_1 implements Servlet {                                                 // 初始化 Servlet ,就是把该 Servlet 装载到内存中,只执行一次。             public void init(ServletConfig config) throws ServletException {             }                                                                                                                     // 销毁该Servlet,从内存中清除掉,只调用一次。                                             public void destroy() {                                                                                     }                                                                                                                         // 得到 ServletConfig 对象                                                                                  public ServletConfig getServletConfig() {                                                               return null;                                                                                         }                                                                                                                     // 得到Servlet信息。                                                                                     public String getServletInfo() {                                                                              return null;                                                                                                         }                                                                                                                         // 是服务函数,业务逻辑代码写到这里,该函数每次都被调用。                             public void service(ServletRequest req, ServletResponse res)                               throws ServletException, IOException {                                                             }                                                                                                                                }      

方式二:继承 GenericServlet 接口
重写 service( ) 方法

方式三:继承 HttpServlet 接口
重写 doPost( ) doGet( ) 方法

注意:
MyEclipse 中是没有 Servlet 规范的,Myeclipse 中的插件导入了关于 JavaEE 的包并设置 classpath
这里写图片描述

Servlet 的配置:

为什么 Servlet 需要配置?
浏览器访问 Tomcat 服务器时,是和 Web 服务模块打交道。
Web 服务模块根据用户的请求,去 Servlet 容器找到对应的资源文件。
配置文件的用处就是帮助 Web 服务器找到对应的资源文件。

配置方法:

<servlet>     <!-- 注册一个Servlet -->    <!-- 给 Servlet 取一个名字,可以随意起,但是必须要保证和下面的配置一样 -->    <servlet-name>Demo1</servlet-name>    <!-- Servlet 的位置 -->    <!-- 项目下的 Servlet 文件位置,包名 . 文件名,不要加.java -->    <servlet-class>Servlet_Test_1.Servlet_1</servlet-class></servlet><servlet-mapping>    <!-- 根据注册的 Servlet 进行映射 -->    <!-- 给 Servlet 取一个名字,但是必须要保证和下面的配置一样 -->     <servlet-name>Demo1</servlet-name>    <!-- URL 的访问路径 -->    <!-- 根据注册的 Servlet 进行映射 -->    <url-pattern>/ABC</url-pattern></servlet-mapping><!-- 一个已经注册的Servlet可以有多个映射 --><servlet-mapping>    <!-- 根据注册的 Servlet 进行映射 -->    <!-- 给 Servlet 取一个名字,但是必须要保证和下面的配置一样 -->     <servlet-name>Demo1</servlet-name>    <!-- URL 的访问路径 -->    <!-- 根据注册的 Servlet 进行映射 -->    <url-pattern>/DEF</url-pattern></servlet-mapping>

映射通配符:
① *.扩展名  没有斜杠!
例如 *.do

<servlet>    <servlet-name>First</servlet-name>    <servlet-class>Test01.Demo1</servlet-class></servlet><servlet-mapping>    <servlet-name>First</servlet-name>    <url-pattern>*.do</url-pattern></servlet-mapping>// http://localhost/ServletDemo1/Demo1.do 访问即可

② 以 / 开头,同时 /* 结尾
例如 /a/*

<servlet>    <servlet-name>First</servlet-name>    <servlet-class>Test01.Demo1</servlet-class></servlet><servlet-mapping>    <servlet-name>First</servlet-name>    <url-pattern>/a/*</url-pattern></servlet-mapping> // 访问时,/a 下的资源都访问这个文件

映射通配符优先级:
① 谁的匹配度高,谁就命中
② *.do 的优先级最低

0 0
原创粉丝点击