zoukankan      html  css  js  c++  java
  • 2. 编写与设置Servlet

    开发环境的准备与使用

    开发环境如下:

    • Java 8

    • Tomcat 8.0

    • Eclipse Java EE

    Servlet API 封装在 Tomcat 目录的 lib 子目录中的 servlet-api.jar

    Servlet API 架构

    public class HttpServlet extends GenericServlet {
      	getAllDeclaredMethods(Class<?>)
        HttpServlet()
        doDelete(HttpServletRequest, HttpServletResponse)
        doGet(HttpServletRequest, HttpServletResponse)
        doHead(HttpServletRequest, HttpServletResponse
        doOptions(HttpServletRequest, HttpServletResponse)
        doPost(HttpServletRequest, HttpServletResponse)
        doPut(HttpServletRequest, HttpServletResponse)
        doTrace(HttpServletRequest, HttpServletResponse)
        getLastModified(HttpServletRequest)
        maybeSetLastModified(HttpServletResponse, long)
        service(HttpServletRequest, HttpServletResponse)
        service(ServletRequest, ServletResponse)
    }
    
    public abstract class GenericServlet implements Servlet, ServletConfig {
      	GenericServlet()
        destroy()
        getInitParameter(String)
        getInitParameterNames()
        getServletConfig()
        getServletContext()
        getServletInfo()
        getServletName()
        init()
        init(ServletConfig)
        log(String)
        log(String, Throwable)
        service(ServletRequest, ServletResponse)
    }
    
    public interface Servlet {
      	init(ServletConfig)
      	destroy()
        service(ServletRequest, ServletResponse)
    	getServletConfig()
    	getServletInfo()
    }
    
    public interface HttpServletRequest extends ServletRequest {
      	...
    }
    
    public interface HttpServletResponse extends ServletResponse {
      	...
    }
    

    在 Servlet 的 API 定义中, Servlet 是个接口,定义了 Servlet 生命周期的 init()destory() 方法,以及提供服务的 service() 方法。GenericServlet 实现了 Servlet 接口,不过它直接将 sevice() 标示为 abstractGenericServlet还实现了 ServletConfig 接口,将容器初始化 Servlet 调用 init() 时传入的 ServletConfig 封装起来。真正在 service() 方法中定义了 HTTP 请求基本处理流程的时 HttpServlet,而 doGet()doPost() 中传入的参数是 HttpServletRequestHttpServletResponse,而不是通用的 ServletRequestServletResponse

    @WebServlet

    @WebServlet(
    	name="Hello",
      	urlPatterns={"/hello.view"},
      	loadOnStartup=1
    )
    

    web.xml

    在 Web 应用程序的 WEB-INF 目录中,建立一个 web.xml 文件定义 Servlet 相关信息

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>cc.openhome.HelloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloUser.view</url-pattern>
    </servlet-mapping>
    

    文件组织

    Web 容器要求应用程序部署时,必须遵循某个结构

    WEB-INF
    	|- web.xml
    	|- lib
    	|	|- xxx.jar
    	|- classes
    		|- xxx.class
    

    WEB-INF

    名称固定,位于根目录下,对外界封闭(客户端无法通过 HTTP 的任何方式直接访问到 WEB-INF 中的文件或目录)

    web.xml

    Web 应用程序部署描述文件,位于 WEB-INF 根目录下

    lib

    防止 jar 包

    classes

    编译后的 .class 文件

  • 相关阅读:
    2013=730 胆子要大,敢想敢做
    2013=7=30 自增量的浅谈
    2013=7=29 nyist 13题
    2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
    2013=7=22
    2013=7=23 超级阶梯
    机器人写诗项目——递归神经网络(RNN)
    和程序员在一起是怎样的体验
    和程序员在一起是怎样的体验
    人工智能数学基础——线性代数
  • 原文地址:https://www.cnblogs.com/okadanana/p/5932265.html
Copyright © 2011-2022 走看看