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() {

    }
}
原文地址:https://www.cnblogs.com/zhuyapeng/p/13851385.html