• javaweb三大组件之servlet


    javaWeb有三大组件:Filter、Servlet、Listener

    jsp有九大内置对象:application、session、request、response、out、page、pagecontent、config、exception

    javaEE三大组件技术:

    Servlet,JSP,EJB
      Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
      Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议Web服务器
      JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
      它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
      EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

    三大框架:spring, structs, hibernate

    Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener)
      * Servlet是用来处理客户端请求的动态资源
      * Servlet的任务有:
        > 获取请求数据
        > 处理请求

        > 完成响应

    Servlet会在接到第一次请求时被创建,也可以在在服务器启动时就被创建,这需要在配置文件<servlet>中添加一条配置信息    <load-on-startup></load-on-startup>,

    标签中添加非负整数即可

      * Servlet接口方法:

    前面三个为生命周期

        > void init(ServletConfig)

    servlet的初始化方法,只在创建servlet实例时候调用一次

        > void service(ServletRequest,ServletResponse)

    servlet的处理请求方法,在servle被请求时,会被马上调用,每处理一次请求,就会被调用一次。ServletRequest类为请求类,ServletResponse类为响应类

        > void destory()

    servlet销毁之前执行的方法,只执行一次,用于释放servlet占有的资源,通常Servlet是没什么可要释放的,所以该方法一般都是空的

        > ServletConfig getServletConfig()

    获取servlet的配置信息的方法,所谓的配置信息就是WEB-INF目录下的web.xml中的servlet标签里面的信息

        > String getServletInfo()

    获取servlet的信息方法

    特性:

    单例,一个类只有一个对象;当然可能存在多个Servlet类!

    线程不安全的!

     

    Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。

    配置文件中对应servlet的部分

      <servlet>
        <servlet-name>AServlet</servlet-name><!-- 此处名称可以随意写 -->
        <servlet-class>edu.AServlet</servlet-class><!-- 此处写类名 -->
      </servlet>


      <servlet-mapping>
        <servlet-name>AServlet</servlet-name><!-- 与上面名称对应 -->
        <url-pattern>/servlet/AServlet</url-pattern><!-- 此处是自动生成的路径,也可自己写 -->
      </servlet-mapping>




     1). 服务器创建Servlet:
      * 当Servlet第一次被请求时,或服务器启动时,服务器会创建Servlet实例。
      * 服务器默认是在servlet第一次被请求时创建Servlet实例,如果希望服务器启动时就创建Servlet实现需要在web.xml中配置
      * 服务器只为一个类型的Servlet创建一个实例对象,所以Servlet是单例的;


      2). 服务器初始化Servlet:
      * 当服务器创建Servlet实例后会马上调用Servlet的init(ServletConfig)方法,完成对Servlet的初始化;
      * init(ServletConfig)只会被调用一次
      * 服务器会在调用init()方法时传递ServletConfig参数
      
      3). 服务器使用Servlet处理请求:
      * 当Servlet被请求时,服务器会调用Servlet的service(ServletRequest,ServletResponse)方法
      * service(ServletRequest,ServletResponse)方法每处理一次请求,就会被调用一次,所以它可能会被调用N次
      * 因为Servlet是单例的,所以可能在同一时刻一个Servlet对象会被多个请求同时访问,所以这可能出现线程案例问题
      * Servlet不是线程案例的,这有助与提高效率,但不能让Servlet具有状态,以免多个线程争抢数据


      4). 服务器销毁Servlet
      * 服务器通常不会销毁Servlet,通常只有在服务器关闭时才会销毁Servlet
      * 服务器会在销毁Servlet之前调用Servlet的destory()方法
      * 可以在destory()方法中给出释放Servlet占有的资源,但通常Servlet是没什么可要释放的,所以该方法一般都是空的

  • 相关阅读:
    JS 表单submit() 提交无效的问题
    thinkphp中连接oracle时封装的方法无法用
    Struts2 开发流程(转)
    oracle wm_concat(column)函数的使用(转)
    js点击按钮后显示时间自动减少提示
    Windows Server 2008 R2安装过程
    Spring学习之旅(1) 第一个Controller
    Groovy系列 Groovy集合
    Groovy系列 安装Groovy
    VMWare实现共享目录
  • 原文地址:https://www.cnblogs.com/shenhaha520/p/8580675.html
Copyright © 2020-2023  润新知