zoukankan      html  css  js  c++  java
  • 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() {
    
        }
    }
  • 相关阅读:
    【BZOJ】【1412】【ZJOI2009】狼和羊的故事
    【POJ】【2987】Firing
    【BZOJ】【1324】王者之剑
    【POJ】【2125】Destroying the Graph
    bzoj4870: [Shoi2017]组合数问题(DP+矩阵乘法优化)
    bzoj3810: [Coci2015]Stanovi(记忆化搜索)
    bzoj2120: 数颜色(BIT套主席树+set/分块)
    bzoj2144: 跳跳棋(二分/倍增)
    bzoj4552: [Tjoi2016&Heoi2016]排序(二分+线段树)
    bzoj4773: 负环(倍增floyd)
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/13851385.html
Copyright © 2011-2022 走看看