JavaEE学习日志(五十): servlet对象详解,web.xml配置文件详解

20 篇文章 1 订阅
3 篇文章 0 订阅

JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇)

Servlet

Servlet是运行在服务器端的Java程序,也是JavaEE十三规范中的一个规范。

规范理解为就是接口interface

实现步骤:

  1. 创建类,实现接口Servlet
  2. 重写接口中全部的抽象方法
  3. 通知Tomcat服务器,运行实现类(去web.xml编写配置文件)

Servlet快速入门

  1. 实现接口Servlet
  2. 重写抽象方法,6个

JavaEE使用的类和接口,由Tomcat提供

import javax.servlet.*;
import java.io.IOException;

/*
    实现Servlet程序快速入门
    实现接口Servlet
    重写抽象方法,6个

    JavaEE使用的类和接口,Tomcat提供
 */
public class QuickStartServlet implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /*
        方法service
        参数:ServletRequest 接收客户端提交的数据
             ServletResponse 向客户端响应数据对象
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("快速入门");
        servletResponse.getWriter().print("aaa");//获取流对象,返回值PrintWriter
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

编写配置文件
在这里插入图片描述
运行Tomcat,在浏览器中输入地址

在这里插入图片描述
在这里插入图片描述

Servlet技术概述

Servlet是JavaEE技术平台的规范,只能运行在Web服务器。

作用:接收请求,进行响应

广义的Servlet:Servlet接口所以的实现类
狭隘的Servlet:专门指的是Servlet接口

Servlet程序执行原理

在这里插入图片描述

Servlet生命周期

Servlet对象什么时候生,什么时候死

生命周期相关的三个方法:init,service,destroy

  • init(ServletConfig config) Servlet对象的初始化方法,对象被创建时调用。
    Servlet对象什么时候被创建
  1. Servlet默认第一次访问的时候,被创建
  2. Tomcat服务器启动的时候创建对象,需要修改web.xml(一般不用)
<!--
            配置的是Servlet对象启动的优先级
            理论上可以写任意整数:数字越小,启动的优先级越高
-->
<load-on-startup>5</load-on-startup>
  • service(request,response) 客户端访问一次,执行一次
  • destory() Servlet对象销毁之前被调用
    Servlet对象什么时候被销毁
  1. 停止Tomcat服务
  2. Web项目从服务器中移除掉

Servlet的web.xml配置

	<servlet>
        <!--name,定义名字,随意写,一般写类名前缀-->
        <servlet-name>path</servlet-name>
        <!--class 配置类的全名,反射-->
        <servlet-class>com.itheima.servlet.PathServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--name 必须和上面的name相同-->
        <servlet-name>path</servlet-name>
        <!--url-pattern 配置的是浏览器访问的虚拟路径-->
        <!--完全匹配-->
        <url-pattern>/path</url-pattern>
    </servlet-mapping>

url-pattern的配置

  • 完全匹配
    /abc:浏览器地址栏必须写/abc,大小写也不能错
  • 目录匹配
    /aaa/bbb/*:浏览器地址栏可以写/aaa/bbb/任意
  • 后缀名匹配
    *.abc:浏览器地址栏可以写 任意.abc

注意:目录匹配和后缀名匹配不能同时使用

Tomcat的全局web.xml

tomcat目录中/conf/web.xml 是全局配置文件,所有的web项目都使用。自己写的web.xml只有你自己的项目使用。
当全局配置web.xml和自己的web.xml冲突,就听自己的

一、当找不到自己项目中的servlet时,执行默认的servlet,报出404错误页面
在这里插入图片描述
在这里插入图片描述

二、session对象的超时时间为30分钟

<session-config>
        <session-timeout>30</session-timeout>
</session-config>

三、

<mime-mapping>
        <extension>dv</extension>
        <mime-type>video/x-dv</mime-type>
</mime-mapping>

extension:扩展名,给人看的文件名
mine-type:文件类型,给浏览器看的

四、欢迎页面

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Idea创建servlet

在这里插入图片描述
继承的方式创建:继承HttpServlet

public class MyServlet extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
  • doPost方法对应了客户端浏览器的提交方式POST
  • doGet方法对应了客户端浏览器的提交方式GET

无论:是POST提交,还是GET,统一处理,都使用doGet

public class MyServlet extends HttpServlet {
    /*
        doPost方法对应了客户端浏览器的提交方式POST
        无论:是POST提交,还是GET,统一处理,都使用doGet
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //调用doGet
        doGet(request,response);
    }
    /*
            doGet方法对应了客户端浏览器的提交方式GET
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().print("MyServlet Run");
    }
}

继承HttpServlet的原理

在这里插入图片描述

ServletConfig对象

ServletConfig对象,表示的是Servlet配置对象
有一个Servlet程序,出现对应的ServletConfig对象

获取ServletConfig对象:

  • init方法参数(ServletConfig servletConfig),调用者是Tomcat引擎,所以ServletConfig对象也是由Tomcat引擎创建。
  • 父类中定义了方法ServletConfig getSevletConfig()
public class ConfigServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
            通过父类的方法getServletConfig()获取ServletConfig对象
            ServletConfig是接口
            org.apache.catalina.core.StandardWrapperFacade@5b21f320是实现类(Tomcat中)
         */
        ServletConfig config = getServletConfig();
        System.out.println(config);//org.apache.catalina.core.StandardWrapperFacade@5b21f320

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

ServletConfig对象能做什么:

  • 获取Servlet的名字,String getServletName()
    <servlet-name>config</servlet-name>
  • 获取Servlet的初始化参数,String getInitParameter("键名")
    <servlet>
        <servlet-name>config</servlet-name>
        <servlet-class>com.itheima.servlet.ConfigServlet</servlet-class>
        <init-param>
            <param-name>heima</param-name>
            <param-value>java</param-value>
        </init-param>
    </servlet>
public class ConfigServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
            通过父类的方法getServletConfig()获取ServletConfig对象
            ServletConfig是接口
            org.apache.catalina.core.StandardWrapperFacade@5b21f320是实现类(Tomcat中)
         */
        ServletConfig config = getServletConfig();
        System.out.println(config);//org.apache.catalina.core.StandardWrapperFacade@5b21f320
        //获取Servlet名字
        String name = config.getServletName();
        System.out.println(name);
        //获取Servlet初始化参数
        String value = config.getInitParameter("heima");
        System.out.println(value);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

在这里插入图片描述

  • 获取ServletContext对象,getServletContext()返回Servlet上下文对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值