tomcat 目录架构
bin: 存放各个文件下启动和停止 Tomcat 服务脚本文件
conf:存放各种 Tomcat 服务器配置文件
lib:存放 Tomcat 服务器所需要的 jar
logs:存放Tomca 服务运行日志
temp:Tomcat 运行时临时文件
webapps:存放允许客户端访问的资源
work:存放 Tomcat 将 JSP 转换后的 Servlet 文件
Servlet 简介
1 servlet:
Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。
2 servlet 功能:
创建并返回基于客户端 请求 HTML 页面。与数据进行通信3 如何使用servlet:
Servlet 本身是⼀组接⼝,⾃定义⼀个类,并且实现 Servlet 接⼝,这个类就具备了接受客户端请求以及 做出响应的功能
package com.hou.myservlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; public class ServletTset implements Servlet { //实现Servlet 接⼝ @Override public void init(ServletConfig var1) throws ServletException{ }; @Override public ServletConfig getServletConfig(){ return null; }; @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException{ String id=servletRequest.getParameter("id"); //在网页地址栏后面输入 ?id=100 System.out.println("我是Servlet,我已经接收到客户端发来的请求,参数是:"+id);//在控制台输出 servletResponse.setContentType("text/html;charset=UTF-8");//使中文可以正常显示/GBK servletResponse.getWriter().write("我是中文,页面上有显示吗?");//写到页面上 }; @Override public String getServletInfo(){ return null; }; @Override public void destroy(){ }; }浏览器不能直接访问 Servlet ⽂件,只能通过映射的⽅式来间接访问 Servlet,映射需要开发者⼿动配置,有两种配置⽅式。
基于 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_4_0.xsd" version="4.0"> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.lut.myservlet.myservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/demo02</url-pattern> </servlet-mapping> </web-app> 基于注解的方式 @WebServlet("/demo01") public class myservlet implements Servlet { }上述两种配置⽅式结果完全⼀致,将 demo2 与 HelloServlet 进⾏映射,即在浏览器地址栏中直接访问demo 就可以映射到 HelloServlet。
地址栏后面输入: /demo01 或 /demo02
servlet 生命周期方法: 无参构造函数,init,service,destory
无参构造只调用一次,用于创建对象(最先执行)init 只调用一次 用于初始化对象service 调用N次,执行N次业务方法destory 只调用一次,用于销毁当前资源 @WebServlet("/demo01") public class myservlet implements Servlet { public myservlet(){ System.out.println("构造函数:创建了Servlet对象"); } public void init(ServletConfig servletConfig) throws ServletException{ System.out.println("对Servlet对象完成初始化操作..."); }; public ServletConfig getServletConfig(){ return null; }; public void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException{ System.out.println("执行了Servlet对象的业务方法..."); }; public String getServletInfo(){ return null; }; public void destroy(){ System.out.println("释放了Servlet对象..."); }; }该接⼝是⽤来描述 Servlet 的基本信息的。
getServletName() 返回 Servlet 的名称,全类名(带着包名的类名)
getInitParameter(String key) 获取 init 参数的值(web.xml)
getInitParameterNames() 返回所有的 initParamter 的 name 值,⼀般⽤作遍历初始化参数
getServletContext() 返回 ServletContext 对象,它是 Servlet 的上下⽂,整个 Servlet 的管理者
ServletConfig 和 ServletContext 的区别:⼀个是局部对象,⼀个是全局对象
ServletConfig 作⽤于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig,
ServletContext 作⽤于整个 Web 应⽤,⼀个 Web 应⽤对应⼀个 ServletContext,
多个 Servlet 实例对应⼀个ServletContext。
//实现 doGet 和 doSet @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.getWriter().write("helloGet"); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.getWriter().write("HelloPost"); }