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. 在conf\Catalina\localhost创建任意名称的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() { } }