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方法

  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/cwstd/p/14126983.html
Copyright © 2011-2022 走看看