• Servlet及Tomcat介绍


    1.Tomact部署

    * 部署项目的方式:
    1. 直接将项目放到webapps目录下即可。
    * /hello:项目的访问路径-->虚拟目录
    * 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
    * war包会自动解压缩

    2. 配置conf/server.xml文件
    在<Host>标签体中配置
    <Context docBase="D:hello" path="/hehe" />
    * docBase:项目存放的路径
    * path:虚拟目录

    3. 在confCatalinalocalhost创建任意名称的xml文件。在文件中编写
    <Context docBase="D:hello" />
    * 虚拟目录:xml文件的名称

    2.基本Servlet配置

    自己总结的执行流程:
    * 简单生命周期: * 1.请求http://localhost:8080/demo1。 * 2.在配置文件 web.xml 的url-pattern 中查找/demo1的url配置。 * 3.没有返回404,找到根据servlet-name找对应servlet-class。 * 4.反射加载servlet-class中配置的类,执行实现Servlet接口的service方法 * * intt方法只执行一次,可以知道该类为单例模式。只创建了一个类对象

    web.xml配置

    <?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_3_1.xsd"
             version="3.1">
        <!--Servlet配置 名字 加载类-->
        <servlet>
            <servlet-name>demo1</servlet-name>
            <servlet-class>cn.web.servlet.ServletDemo1</servlet-class>
            <!--指定Servlet的创建时机
                1.第一次被访问时,创建
                    * <load-on-startup>的值为负数
                2.在服务器启动时,创建
                    * <load-on-startup>的值为0或正整数
            -->
    
            <load-on-startup>-5</load-on-startup>
        </servlet>
    
        <!--名字 加载url-->
        <servlet-mapping>
            <servlet-name>demo1</servlet-name>
            <url-pattern>/demo1</url-pattern>
        </servlet-mapping>
    </web-app>

    服务代码:

    package cn.web.servlet;
    
    import javax.servlet.*;
    import java.io.IOException;
    
    
    /*
    * 简单生命周期:
    * 1.请求http://localhost:8080/demo1。
    * 2.在配置文件 web.xml 的url-pattern 中查找/demo1的url配置。
    * 3.没有返回404,找到根据servlet-name找对应servlet-class。
    * 4.反射加载servlet-class中配置的类,执行实现Servlet接口的service方法
    *
    * intt方法只执行一次,可以知道该类为单例模式。只创建了一个类对象
    * */
    public class ServletDemo1 implements Servlet {
        /*
        * 项目启动或类加载时候运行一次
        * */
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("执行init方法");
        }
    
        @Override
        public ServletConfig getServletConfig() {
            System.out.println("执行getServletConfig方法");
            return null;
        }
    
        /*
        * 请求接口
        * */
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("执行service方法");
        }
    
        @Override
        public String getServletInfo() {
            System.out.println("执行getServletInfo方法");
            return null;
        }
    
        /*
        * 类销毁,服务正常关闭的时候执行
        * */
        @Override
        public void destroy() {
            System.out.println("执行destroy方法");
        }
    }

    3.在3.0以后注解配置

    自己总结:
    * 简化web.xml配置,直接通过注解加载 3.0后引入 * 加载方式: * 1.请求http://localhost:8080/demo2。 * 2.在类中查找标记WebServlet的注解,并且urlPatterns为demo2的类,注解默认value及为urlPatterns * 3.找到了即加载改类,并创建实例。(这个过程一般都缓存起来)

    服务代码:

    package cn.web.servlet;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    
    /*
    * 简化web.xml配置,直接通过注解加载 3.0后引入
    * 加载方式:
    * 1.请求http://localhost:8080/demo2。
    * 2.在类中查找标记WebServlet的注解,并且urlPatterns为demo2的类,注解默认value及为urlPatterns
    * 3.找到了即加载改类,并创建实例。(这个过程一般都缓存起来)
    *
    * */
    @WebServlet("/demo2")
    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("执行service方法");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
  • 相关阅读:
    利用python做矩阵的简单运算(行列式、特征值、特征向量等的求解)
    numpy.linalg.svd函数
    梯度裁剪(Clipping Gradient):torch.nn.utils.clip_grad_norm
    tf.matmul()报错expected scalar type Float but found Double
    1283 最小周长
    1182 完美字符串
    1091 线段的重叠
    1090 3个数和为0
    1087 1 10 100 1000
    1083 矩阵取数问题
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/13851385.html
Copyright © 2020-2023  润新知