Servlet:Servlet的基本使用

一、Servlet快速入门

          1、基本概念:运行在服务器端的小程序,Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则, 在使用的时候我们自定义一个类,实现Servlet接口,复写方法。

          2、执行原理:当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径,并查找web.xml文件,是否有对应的<url-pattern>标签体内容。当有对应的映射关系的时候,则在找到对应的<servlet-class>全类名,tomcat会将字节码文件加载进内存,并且创建其对象,并调用其方法。

步骤:

          ** 创建一个java ee项目,并且新建一个类,并实现Servlet接口(public class ServletDemo1 implements Servlet),并实现接口中的抽象方法。

          ** 配置Servlet,在web.xml中写入以下代码:

<servlet>
    <servlet-name>demo1</servlet-name>
    <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
</servlet>

//Servlet资源路径的映射        
<servlet-mapping>
    <servlet-name>demo1</servlet-name>
</servlet-mapping>

          3、生命周期

            **  init()方法:当Servlet被创建的时候执行,只执行一次。(默认情况下,第一次被访问的时候,Servlet被创建。通过在<servletr>标签体中的<load-on-startup>标签改变Servlet的创建时机,第一次被访问的时候创建,则设置标签的内容为负数,当设置为0或者是正整数的时候代表服务器启动的被创建)

            **  service()方法:主要用于提供服务,可以被执行多次,每次访问Servlet的时候,service方法都会被调用一次。

            **  destroy()方法:主要用于释放资源,只会执行一次,Servlet被销毁的时候执行,当服务器正常关闭的时候才会执行destroy方法,在Servlet销毁之前执行,释放资源。

package cn.yxy.servlet1;

import javax.servlet.*;
import java.io.IOException;
public class ServletDome implements Servlet{
    /*
    * 初始化方法
    * init方法只会被执行一次,在servlet被创建的时候
    * */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("我是初始化方法");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /*
    * 提供服务的方法
    * 默认情况下,每一次servlet被访问时执行,可以执行多次
    * */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我是提供服务的方法");
    }

    @Override
    public String getServletInfo() {
        return null;
    }
    /*
    * 销毁方法
    * 在服务器正常关闭的情况下执行,执行一次
    * */
    @Override
    public void destroy() {
        System.out.println("我是销毁方法");
    }
}

          4、Servlet3.0
             Servlet3.0支持注解配置,可以不需要web.xml了。在创建javaEE项目的时候,选择Servlet的版本为3.0以上的,定义一个Servlet类,并实现Servlet接口。复写所有方法。在类上面使用@WebServlet注解,进行配置资源路径。里面的资源路径的名字一定要以/开头。@WebServlet(urlPatterns = "/hh")或者@WebServlet( "/hh")

//@WebServlet(urlPatterns = "/hh") 可以设置它的资源路径,或者设置它的value值,也可以直接写资源路径名
    @WebServlet("/hh")
public class ServletDome1 implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init...............");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service................");
    }

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

    @Override
    public void destroy() {
        System.out.println("destroy...................");
    }
}

            ** Servlet的体系结构 : Servlet(接口)——  GenericServlet (抽象类)—— HttpServlet(抽象类); GenericServlet(将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象,定义Servlet类时,可以继承GenericServlet,实现service()方法即可);HttpServlet(是对http协议的一种封装,简化操作一些,继承HttpServlet,可以复写doGet/doPost方法)

@WebServlet("/hb")
public class ServletDome2 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我是谁。。。。。。。。。。。。。。。");
    }
}


            ** Servlet相关配置:urlpartten是Servlet访问路径,一个Servlet可以定义多个访问路径,如:@WebServlet({"/d4","/dd4","/ddd4"}); 路径定义规则(/xxx:路径匹配;/xxx/xxx:多层路径,目录结构; *.do:扩展名匹配)

//@WebServlet("/go")
    @WebServlet({"/go","/to"})//如果用到*代表用什么路劲都可以,*是通配符,代表任意字符
public class ServletDome3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是doget方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是都post方法");
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值