zoukankan      html  css  js  c++  java
  • Servlet入门

    概念:运行在服务器端的小程序。Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。程序员定义一个类,实现Servlet接口,复写方法。

    快速入门:

    1. 创建JavaEE项目

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

      public class ServletDemo1 implements Servlet {
      }
      
    3. 复写Servlet接口的所有方法

      import javax.servlet.*;
      import java.io.IOException;
      
      public class ServletDemo1 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() {
      
          }
      }
      
      
    4. 在web.xml文件中配置Servlet

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0">
      
          <servlet>
              <servlet-name>demo1</servlet-name>
              <servlet-class>cn.itest.web.ServletDemo1</servlet-class>
          </servlet>
          <servlet-mapping>
              <servlet-name>demo1</servlet-name>
              <url-pattern>/demo1</url-pattern>
          </servlet-mapping>
      
      </web-app>
      

    执行原理

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

    Servlet的生命周期

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

      • Servlet什么时候被创建?

      • 默认情况下,第一次被访问时,Servlet被创建。

      • 可以通过配置web.xml文件中标签,配置执行Servlet的创建时机。

        第一次被访问时创建:的值为负值

        在服务器启动时创建:的值为0或正整数

      • init方法只执行一次,说明Servlet在内存中只有一个对象,即Servlet是单例的。

        • 多个用户同时访问时,可能存在线程安全问题。
        • 解决:尽量不要在Servlet中定义成员变量,即使定义了成员变量,也不要修改值。
    2. 提供服务:执行service方法,执行多次

      • 每次访问Servlet时,service方法都会被调用一次。
    3. 被销毁:执行destroy方法,只执行一次

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

    Servlet3.0:

    • 好处:支持注解配置,可以不在web.xml文件中配置

    • 步骤:

      Step1: 创建JavaEE项目,选择Sevrlet3.0以上版本,可以不创建web.xml文件。

      Step2: 定义一个类,实现Servlet接口。

      Step3: 复写Servlet接口的所有方法。

      Step4: 在类上使用@WebServlet注解,进行配置:@WebServlet("资源路径")

    IDEA与tomcat的相关配置

    1. IDEA会为每一个tomcat部署的项目单独创建一份配置文件
      • 查看控制台的log:"C:UsersGodFriend.IntelliJIdea2019.1system omcatTomcat_9_0_20_ServletTest"
    2. 工作空间项目和tomcat部署的web项目
      • tomcat真正访问的是“tomcat部署的web项目”,“tomcat部署的web项目”对应着”工作空间项目“的web目录下的所有资源
      • WEB-INF目录下的资源不能被浏览器直接访问
      • 断点调试:使用“小虫子”启动(debug启动)

    Servlet体系结构

    ​ Servlet ---- 抽象接口

    ​ | 继承

    ​ GenericServlet ---- 抽象接口

    ​ | 继承

    ​ HttpServlet ---- 类

    • GenericServlet : 将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象。定义Servlet类时,可以以继承GenericServlet接口,实现service()方法即可。
    • HttpServlet : 对http协议的一种封装,简化操作
      • 定义类,继承HttpServlet
      • 复写doGet/doPost方法

    Servlet相关配置

    • urlpattern : Servlet访问路径
      • 一个Servlet可以定义多个访问路径:@WebServlet({"/d2","/dd2","/ddd2"})
      • 路径定义规则:
        • /xxx
        • /xxx/xxx : 多层路径,目录结构
        • *.do
  • 相关阅读:
    [liu yanling]常用的测试工具
    [liu yanling]软件测试的过程
    [liu yanling]测试方法
    [Buffalo] 一些SQL函数
    [Stephen]C#中调用C++动态链接库
    [Jacky] 解决Ext.Net GridPanel 选择的行数据刷新后不能获取最新值
    [Tommas] dateadd() 函数用法
    [Tommas] UNION 和 UNION ALL 的区别
    文件I/O编程
    分房问题
  • 原文地址:https://www.cnblogs.com/godfriend/p/11175557.html
Copyright © 2011-2022 走看看