zoukankan      html  css  js  c++  java
  • Servlet学习

    Server applet

    概念:运行在服务器端的小程序

    • Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。

    • 将来我们自定义一个类,实现Servlet接口,复写方法。

      package com.jplus.action;
      
      import javax.servlet.*;
      import javax.servlet.http.HttpServlet;
      import java.io.IOException;
      
      public class ServletDemo implements Servlet {
          @Override
          public void init(ServletConfig servletConfig) throws ServletException {
      
          }
      
          @Override
          public ServletConfig getServletConfig() {
              return null;
          }
      //提供服务
          @Override
          public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
              System.out.println("hello Servlet!");
          }
      
          @Override
          public String getServletInfo() {
              return null;
          }
      
          @Override
          public void destroy() {
      
          }
      }
      
    • 配置Servlet

      在web.xml中配置

      <!-- 配置Servelt -->
          <servlet>
              <servlet-name>Demo</servlet-name>
              <servlet-class>com.jplus.action.ServletDemo</servlet-class>
          </servlet>
          <servlet-mapping>
              <servlet-name>Demo</servlet-name>
              <url-pattern>/Demo</url-pattern>
          </servlet-mapping>
      

    执行原理

    1. 当服务器接收到客户端浏览器请求后,会解析请求URL路径,获取访问的Servlet的资源路径
    2. 查找web.xml文件,是否有对应的标签体内容
    3. 如果有,则在找到对应的全类名
    4. tomcat会将字节码文件加载进内存,并创建其对象
    5. 调用其方法

    Servlet中的生命周期

    1. 被创建:执行init方法,只执行一次

      • Servlet什么时候被创建

        默认情况:在第一次被访问时候被创建

        可以配置web.xml,改变创建的时机

        <servlet>
                <servlet-name>Demo</servlet-name>
                <servlet-class>com.jplus.action.ServletDemo</servlet-class>
                <!--指定Servlet创建时机
                1.第一次被访问时创建 <load-on-startup>负数
                2.服务器启动的时候被创建 <load-on-startup>0或正数
                -->
                <load-on-startup>5</load-on-startup>
            </servlet>
        
      • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的

        多个用户同时访问,可能存在线程安全问题

        解决:不要再Servlet中定义成员变量,定义成员变量,不要修改值。

    2. 提供服务:执行service方法,执行多次

      每次访问Servlet时,Service方法都会被调用一次

    3. 被销毁:执行destroy方法,只执行一次

      • Servlet被销毁时执行。服务器关闭时,Servlet被销毁
      • 只有服务器正常关闭时,才会执行destroy方法
      • destroy方法在Servlet被销毁之前执行,一般用于释放资源

    Servlet3.0

    注解配置

    1. 选择Servlet的版本3.0以上,可以不创建web.xml

    2. 定义一个类,实现Servlet接口

    3. 复写方法

    4. 使用注解

      @WebServlet(“资源路径”)

    IDEA与Tomcat相关配置

    1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
    2. 工作空间项目和tomcat部署的web项目不一样,Tomcat访问的是“Tomcat部署的web项目”,Tomcat部署的web项目,对应着工作空间项目,web目录下的所有资源。
    3. WEB-INF文件夹一下的文件访问不到
    4. Tomcat项目怎么断点调试,点IDEA里面的“小虫子”

    Servlet的体系结构

    Servlet - -接口

    GenericServlet - -抽象类

    将Servlet接口中其他方法做了默认空实现,只将service( )方法作为抽象,

    将来定义Servlet类时,可以继承GenericServlet,实现service( )方法即可

    HttpServlet - -抽象类

    定义类继承HttpServlet

    复写doGet/doPost方法

  • 相关阅读:
    深入理解node.js异步编程:基础篇
    js里的回调函数
    nodejs 访问网站并操作xpath
    Linux 对比两个文本的交集和差集(comm)
    Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function
    POJ 3134
    Spark Streaming中的操作函数分析
    Storm新特性之Flux
    POJ 题目2823 Sliding Window(RMQ,固定区间长度)
    广工2016校赛决赛
  • 原文地址:https://www.cnblogs.com/cwstd/p/14126983.html
Copyright © 2011-2022 走看看