JavaWeb之Servlet核心技术

本文详细介绍了Servlet的基本概念、编程步骤,包括实现Servlet接口、继承GenericServlet和HttpServlet的方式,并探讨了Servlet的生命周期。此外,还展示了如何使用注解简化Servlet配置,帮助开发者更好地理解和运用Servlet进行Web开发。
摘要由CSDN通过智能技术生成

一、Servlet的基本概念

  • Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写的服务器端程序,换句话说,Servlet就是运行在服务器上的Java类。
  • Servlet用来完成B/S架构下客户端请求的响应处理,也就是交互式地浏览和生成数据,生成动态Web内容。

二、Servlet的编程步骤

1.建立一个Java Web Application项目并配置Tomcat服务器。
2.自定义类实现Servlet接口或者继承GenericServlet抽象类和HttpServlet抽象类,并重写service()方法。
3.将自定义类的信息配置到web.xml文件并启动项目。配置方式如下

 <!--    配置servlet-->
    <servlet>
        <!--        ServletDemo01是servlet类的别名-->
        <servlet-name>ServletDemo01</servlet-name>
        <!--        cn.xuguowen.servlet.ServletDemo01路径包含真实的servlet类名-->
        <servlet-class>cn.xuguowen.servlet.ServletDemo01</servlet-class>
    </servlet>
    <!--    映射servlet-->
    <servlet-mapping>
        <!--        ServletDemo01是servlet类的别名,与上述名称必须相同-->
        <servlet-name>ServletDemo01</servlet-name>
<!--        /ServletDemo01是供浏览器访问地址-->
        <url-pattern>/ServletDemo01</url-pattern>
    </servlet-mapping>
  • 在浏览器上访问的方式是:
http://localhost:8080/工程路径/url-pattern的内容

三、自定义类实现Servlet接口

1.自定义ServletDemo01类实现Servlet接口,并重写接口中的所有抽象方法
public class ServletDemo01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("浏览器成功访问了ServletDemo01这个类");
    }

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

    @Override
    public void destroy() {

    }
}
2.配置web.xml方式
<!--    配置servlet-->
    <servlet>
        <!--        ServletDemo01是servlet类的别名-->
        <servlet-name>ServletDemo01</servlet-name>
        <!--        cn.xuguowen.servlet.ServletDemo01路径包含真实的servlet类名-->
        <servlet-class>cn.xuguowen.servlet.ServletDemo01</servlet-class>
    </servlet>
    <!--    映射servlet-->
    <servlet-mapping>
        <!--        ServletDemo01是servlet类的别名,与上述名称必须相同-->
        <servlet-name>ServletDemo01</servlet-name>
<!--        /ServletDemo01是供浏览器访问地址-->
        <url-pattern>/ServletDemo01</url-pattern>
    </servlet-mapping>
3.在浏览器中访问该servlet

四、自定义类继承GenericServlet抽象类

1.自定义ServletDemo02类继承GenericServlet抽象类,并重写抽象类中的抽象方法
public class ServletDemo02 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("继承GenericServlet类实现Servlet程序!");
    }
}
2.配置web.xml
	<servlet>
        <servlet-name>ServletDemo02</servlet-name>
        <servlet-class>cn.xuguowen.servlet.ServletDemo02</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletDemo02</servlet-name>
        <url-pattern>/ServletDemo02</url-pattern>
    </servlet-mapping>
3.在浏览器访问该servlet并查看控制台的输出信息

五、自定义类继承HttpServlet抽象类(开发中推荐使用)

1.自定义类继承HttpServlet抽象类,并重写抽象类中的抽象方法
public class ServletDemo03 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("继承HttpServlet的方式实现Servlet程序!推荐以后的开发中使用这种方式!");
    }
}
2.配置web.xml
<servlet>
        <servlet-name>ServletDemo03</servlet-name>
        <servlet-class>cn.xuguowen.servlet.ServletDemo03</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletDemo03</servlet-name>
        <url-pattern>/ServletDemo03</url-pattern>
    </servlet-mapping>
3.在浏览器访问该servlet并查看控制台的输出信息

六、Servlet的生命周期

Servlet的生命周期

  • 代码验证
/**
 * @author 徐国文
 * @create 2021-08-27 20:14
 *  Servlet的生命周期:
 *          多次请求ServletDemo04之后,发现
 *              1.无参构造方法执行了一次,当第一次请求ServletDemo04时调用构造方法创建Servlet实例
 *              2.init()方法也执行一次,当创建好Servlet实例之后立即调用该方法实现初始化操作
 *              3.service()方法被多次调用。每次请求都会调用service()方法
 *              4.destory():只被调用一次,当该Servlet实例所在的Web应用被卸载前调用该方法释放资源
 */
public class ServletDemo04 extends HttpServlet {
    /**
     * 无参构造方法
     */
    public ServletDemo04() {
        System.out.println("创建ServletDemo04对象");
    }

    /**
     * 初始化方法
     * @throws ServletException
     */
    @Override
    public void init() throws ServletException {
        System.out.println("初始化ServletDemo04。。。");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("继承HttpServlet的方式实现Servlet程序!推荐以后的开发中使用这种方式!");
    }

    /**
     * 销毁方法
     */
    @Override
    public void destroy() {
        System.out.println("销毁ServletDemo04。。。");
    }
}

七、使用注解的方式配置Servlet

1.在IDEA中直接创建Servlet,不需要自定义类实现接口或者继承的方式实现Servlet编程。
在这里插入图片描述

2.在该类头部的注解信息处配置servlet的访问路径,最后访问即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值