浩浩学编程JavaWeb-01Servlet

JavaWeb笔记

1.tomcat

  1. tomcat 目录架构

    bin: 存放各个文件下启动和停止 Tomcat 服务脚本文件

    conf:存放各种 Tomcat 服务器配置文件

    lib:存放 Tomcat 服务器所需要的 jar

    logs:存放Tomca 服务运行日志

    temp:Tomcat 运行时临时文件

    webapps:存放允许客户端访问的资源

    work:存放 Tomcat 将 JSP 转换后的 Servlet 文件

  2. Servlet 简介

    1 servlet:

    Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。

    2 servlet 功能:

    1. 创建并返回基于客户端 请求 HTML 页面。
    2. 与数据进行通信

    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,映射需要开发者⼿动配置,有两种配置⽅式。

  1. 基于 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>
  1. 基于注解的方式
@WebServlet("/demo01")
public class myservlet implements Servlet {
    
}

上述两种配置⽅式结果完全⼀致,将 demo2 与 HelloServlet 进⾏映射,即在浏览器地址栏中直接访问demo 就可以映射到 HelloServlet。

地址栏后面输入: /demo01 或 /demo02

2.servlet生命周期

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

servlet 生命周期方法: 无参构造函数,init,service,destory

  1. 无参构造只调用一次,用于创建对象(最先执行)
  2. init 只调用一次 用于初始化对象
  3. service 调用N次,执行N次业务方法
  4. 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");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值