浩浩学编程JavaWeb-01Servlet

    科技2026-02-02  3

    JavaWeb笔记

    1.servlet篇

    JavaWeb笔记1.tomcat2.servlet生命周期3.ServletConfig4. ServletContext

    1.tomcat

    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

    2.servlet生命周期

    当浏览器访问 Servlet 的时候, Tomcat 会查询当前 Servlet 的实例化对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执⾏第 3 步。调用 init 初始化方法调用 service 方法完成业务操作关闭 Tomcat 会调用destory 方法 释放当前对象所占用的资源

    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对象..."); }; }

    3.ServletConfig

    该接⼝是⽤来描述 Servlet 的基本信息的。

    getServletName() 返回 Servlet 的名称,全类名(带着包名的类名)

    getInitParameter(String key) 获取 init 参数的值(web.xml)

    getInitParameterNames() 返回所有的 initParamter 的 name 值,⼀般⽤作遍历初始化参数

    4. ServletContext

    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"); }
    Processed: 0.021, SQL: 10