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 文件

  • 相关阅读:
    TcxComboBoxProperties下拉框填充
    Delphi用QJSON解析JSON格式的数据 【转】
    Delphi的idhttp报IOHandler value is not valid错误的原因[转]
    RelayCommand
    ViewModelBase && ObservableObject
    MvvmLight ToolKit 教程
    WPF中的数据验证
    MvvmLight ToolKit .Net4.5版本 CanExecute不能刷新界面bug
    微软虚拟学院MVA 字幕获取方法
    WPF Binding INotifyPropertyChanged 多线程 深入理解
  • 原文地址:https://www.cnblogs.com/okadanana/p/5932265.html
Copyright © 2011-2022 走看看