zoukankan      html  css  js  c++  java
  • servlet笔记

    1.Servlet的定义:

    01. 狭隘上说 javax.servlet.Servlet的接口!
    02. 通常认为 一个类实现了Servlet接口,那么这个类就是servlet!

    2.Servlet的作用:

    01.获取用户的请求 ===》我们就知道用户想做什么
    02.调用相应的service层方法 ===》完成用户想要的操作
    03.根据结果,返回给用户响应

    注意点: servlet本身不做业务逻辑处理!

    3.Servlet的实现:

    01.实现Servlet接口
    02.继承GenericServlet
    03.继承HttpServlet 常用的!

    HttpServlet==》GenericServlet==》Servlet接口


    4.Servlet的生命周期 单例多线程

    01.客户端发送请求到Servlet
    02.首先判断这个Servlet的实例是否存在!如果没有创建把Servlet加载到内存中
    03.Servlet实例化==》init()初始化Servlet
    04.再根据用户的请求方式,由service()来派发到不同的方法处理请求(doGet(),doPost())
    05.服务器关闭,执行destroy()销毁servlet


    5.注意点: (初始化的时机)
    01. 我们通常认为用户不请求servlet,它就不会初始化!
    02. 程序启动时加载servlet!

    6.<!-- 配置我们创建的servlet -->
    <servlet>
    <servlet-name>s</servlet-name>
    <servlet-class>cn.bdqn.servlet.MyServlet1</servlet-class>
    </servlet>


    <!-- 用户访问的名称 -->
    <servlet-mapping>
    <servlet-name>s</servlet-name>
    <url-pattern>/MyServlet1</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>s</servlet-name>
    <url-pattern>/MyServlet2</url-pattern>
    </servlet-mapping>


    注意点:
    01.servlet节点下面的servlet-name不允许重复!
    02.一个servlet节点可以被多个servlet-mapping所对应!


    7.load-on-startup 设置服务器启动的时候加载我们的servlet
    值必须是一个正整数! 值越小优先级越高!
    如果值相等,优先级是按照servlet-mapping的顺序执行!


    serlvet3.0 给我们提供了注解!来解决我们web.xml文件中配置servlet的问题!
    就是把我们web.xml中的配置放到了 各自的servlet中!

    8.参数

    <!-- 设置全局变量 -->
    <context-param>
    <param-name>username</param-name>
    <param-value>我是全局的参数!</param-value>
    </context-param>


    <!-- 取全局变量 -->

    public void init(ServletConfig config) throws ServletException {
    System.out.println("======================执行了 init() 方法");
    System.out.println(config.getServletContext().getInitParameter(
    "username"));
    }



    <!-- 设置局部变量 -->
    <servlet>

    <servlet-name>s</servlet-name>
    <servlet-class>cn.bdqn.servlet.Servlet2</servlet-class>
    <!-- 注意放的位置 -->
    <init-param>
    <param-name>name</param-name>
    <param-value>我是局部的参数</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>

    </servlet>

    <!-- 取局部变量 -->

    public void init(ServletConfig config) throws ServletException {
    System.out.println("======================执行了 init() 方法");

    System.out.println(config.getInitParameter("name"));

    }

    8.代码

    配置web.xml中的servlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        
        <!--配置servlet -->
        <servlet> <!-- 定义servlet -->
          <servlet-name>myServlet</servlet-name>
          <servlet-class>cn.bdqn.servlet.MyServlet</servlet-class>
        </servlet>
        
        <servlet-mapping>
          <servlet-name>myServlet</servlet-name>
          <url-pattern>/jsp/</url-pattern>  <!-- 控制用户的请求路径 -->
        </servlet-mapping>
        <!-- 
        url-pattern的四种匹配模式       / 代表项目的根目录
        01.精确匹配               /myServlet   ==>  localhost:8080/项目名/myServlet
        02.全局匹配  /*   匹配到项目下的 所有请求
           localhost:8080/项目名/sasasa  能匹配
           localhost:8080/项目名/1234  能匹配
        03.后缀匹配      *.do  前面不管输入的是什么,但是必须有.do
        04.目录匹配   /jsp/*    ===》localhost:8080/项目名/jsp/随便输入
         -->
        
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    /**
    * shift +alt +s 重写 父类的方法
    */
    public class MyServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
    System.out.println("MyServlet进行了 init初始化**********************");
    /**
    * userName 这个参数仅限于我们当前的servlet使用
    * 问题?
    * 我想所有的servlet都能拿到这个userName???
    * 怎么办?
    * 设置全局的初始化参数,让所有servlet共享!
    System.out.println("初始化的参数值是:" + config.getInitParameter("userName"));
    */
    System.out.println(config.getServletContext().getInitParameter(
    "userName"));
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet进行了 service派发器**********************");
    super.service(req, resp); // 必须是调用父类的service
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet进行了 doGet**********************");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet进行了 doPost**********************");
    }

    @Override
    public void destroy() {
    System.out.println("MyServlet进行了 destroy 销毁**********************");
    }

    }

    /**
    * 测试
    * 全局初始化参数
    */
    public class MyServlet2 extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
    System.out.println("MyServlet2进行了 init初始化**********************");
    System.out.println(config.getServletContext().getInitParameter(
    "userName"));
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet2进行了 service派发器**********************");
    super.service(req, resp); // 必须是调用父类的service
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet2进行了 doGet**********************");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("MyServlet2进行了 doPost**********************");
    }

    @Override
    public void destroy() {
    System.out.println("MyServlet2进行了 destroy 销毁**********************");
    }

    }

  • 相关阅读:
    量子力学与广义相对论的统一——用广义相对论解释海森堡测不准原理 Unification of Quantum Mechanics and General Relativity: Explaining Heisenberg Uncertainty Principle with General Relativity
    用光的微粒说和广义相对论来解释衍射现象 Explanation of Diffraction Phenomenon by Particle Theory of Light and General Relativity
    质量能量等效的泛化--物理学定律方程与等效原理的对应关系 Generalization of Mass-Energy Equivalence--Corresponding Relations between Equations of Physical Laws and Equiva
    关于质能等效的两个思想实验 Two Ideological Experiments on Mass-Energy Equivalence
    购物商城Web开发第十七天
    购物商城Web开发第十六天
    购物商城Web开发第十五天
    购物商城Web开发第十四天
    购物商城Web开发第十三天
    暑假周总结二
  • 原文地址:https://www.cnblogs.com/lyb0103/p/7291372.html
Copyright © 2011-2022 走看看