JavaWeb(一) .Servlet详解

Servlet 是什么?

我们对servlet的了解实在javaweb阶段了解的,当我们学习到了框架,后来好像就不怎么接触它,其实框架的原理还是来调用servlet.

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

Servlet和Web服务器的关系

Web服务器,有好几种,如我们现在常见的tomcat ,它是一个容器,Servlet对象不是我们创建的,是Web服务器创建的,Web服务器里面有各种各样的Servlet(不是指同一Serlvet有好几个,根据java语言的特点,java不会有同一作用的类,而是有许多功能不同的Servlet),当我们在浏览器访问网站,就是通过Web服务器,来创建Servlet,然后Servlet获取请求,做出响应,返回给我们数据、界面,有点像我们打10086,Web服务器就像是我们的这个移动网,能够让我们把电话打出去,客服人员就像Servlet对我们的请求做出响应。

创建Servlet

创建Servlet我们有三种方法
一、实现javax.servlet.Servlet接口

二、继承javax.servet.GenericServlet类

三、继承javax.servlet.http.HttpServlet类(常用)
在Java中我们知道,儿子一般都比父类强 ,我们一般都常用第三个方法来创建Servlet,因为它更简便,功能更强大。但此处我先用第一个方法来讲解。因为实现Servlet接口,是最底层的Servlet.

首先我们来创建一个JavaWeb项目。
在这里插入图片描述
点击next 然后命名 点击finish就行
然后配置一下tomcat
在这里插入图片描述
在这里插入图片描述
选在tomcat Add就完事了
在这里插入图片描述
接下来配置一下启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后就OK了,

我们现在来创建一个AServlet类并实现了Servlet接口
我么实现了5个方法。
下面将一一来讲解这个5个方法

/**
 * AServlet
 * @author xclam
 * @date 2020/2/25
 */
public class AServlet 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");

    }

我们首先要创建我们的Servlet对象,可我说了,我们不创建Servlet对象Web服务器来创建这个对象,我们知道当我们启动tomcat 在浏览器地址栏中输入localhost:8080就可以访问tomcat的默认界面,我们如何来把路径绑定到Servlet中呢?
我们来配置一下web.xml ,详细看代码注释
在这里插入图片描述

<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的名称  随便设置
        <servlet-name>AServlet</servlet-name>
        //servlet类的位置 (com.xxx.xxx.xxxServlet) 
        <servlet-class>AServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
    // 名称必须是上面设置过的名称
        <servlet-name>AServlet</servlet-name>
        //地址栏的映射
        <url-pattern>/aaa</url-pattern>
    </servlet-mapping>
</web-app>

好了我们启动tomcat .然后在地址栏中访问
在这里插入图片描述
我们来看控制台,当我们访问这个地址的时候,我们的servlet对象就被创建起来,执行init()方法,service()方法,
在这里插入图片描述
当我们再次访问的时候就会发现控制台又会执行一次service()方法。当我们停止tomcat的时候,控制台中又打印了destroy()中的语句。所以我们得出结论。

Servlet的生命周期

init() 初始化 只在Servlet对象刚被创建的时候执行,而且只执行一次。
service()当我们向servlet发送请求的时候执行,我们发送一次请求就执行一次。可以说我们的业务一般都在这个方法里面
destory() 释放资源,当我的servlet对象被销毁的时候执行,只执行一次。

下面我们来配置一下Servlet的初始化变量

<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>AServlet</servlet-name>
        <servlet-class>AServlet</servlet-class>
        <init-param>
            <param-name>aaa</param-name>
            <param-value>yyy</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/aaa</url-pattern>
    </servlet-mapping>
</web-app>

配置完成后我们在init()方法中来引用它
在这里插入图片描述
运行tomcat,向Servlet发起请求。控制台中打印出来我们的初始化变量
在这里插入图片描述
这是因为当tomcat创建Servlet对象时,在执行init()之前会创建ServletConfig对象,ServletConfig中有我们Servlet的配置信息,刚刚的初始变量就是从ServletConfig中获取的。

下面我们来讲一下Servlet中的其他两个方法getServletConfig() 和getServletInfo()

getServletConfig() 用来获取ServletConfig对象 (servlet的配置信息)

getServletInfo() 它提供有关 servlet 的信息,如作者、版本、版权。

暂时就先写到这里吧,写的比较仓促,嘿嘿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值