前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Servlet 技术

Servlet 技术

作者头像
一个风轻云淡
发布2022-11-15 17:07:22
3510
发布2022-11-15 17:07:22
举报
文章被收录于专栏:java学习java

a)什么是 Servlet

1、Servlet 是 JavaEE 规范之一。规范就是接口

2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。

3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。

b)手动实现 Servlet 程序

1、编写一个类去实现 Servlet 接口

2、实现 service 方法,处理请求,并响应数据

3、到 web.xml 中去配置 servlet 程序的访问地址

Servlet 程序的示例代码

代码语言:javascript
复制
public class HelloServlet implements Servlet {

/**
* service 方法是专门用来处理请求和响应的

* @param servletRequest

* @param servletResponse

* @throws ServletException
* @throws IOException
*/

@Override

public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws

ServletException, IOException {
System.out.println("Hello Servlet 被访问了");
}
}

web.xml 中的配置: 

代码语言:javascript
复制
<?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 标签给 Tomcat 配置 Servlet 程序 -->

    <servlet>

        <!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->

        <servlet-name>HelloServlet</servlet-name>

        <!--servlet-class 是 Servlet 程序的全类名-->

        <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
    </servlet>

    <!--servlet-mapping 标签给 servlet 程序配置访问地址-->

    <servlet-mapping>

        <!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个 Servlet 程序使用-->

        <servlet-name>HelloServlet</servlet-name>

        <!--url-pattern 标签配置访问地址 <br/>
        / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 <br/>
        /hello 表示地址为:http://ip:port/工程路径/hello <br/>
        -->

        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

 常见的错误 1:url-pattern 中配置的路径没有以斜杠打头。

常见错误 2:servlet-name 配置的值不存在: 

常见错误 3:servlet-class 标签的全类名配置错误: 

 c)url 地址到 Servlet 程序的访问

 d)Servlet 的生命周期

1、执行 Servlet 构造器方法

2、执行 init 初始化方法 第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。

3、执行 service 方法 第三步,每次访问都会调用。

4、执行 destroy 销毁方法 第四步,在 web 工程停止的时候调用。

e)GET 和 POST 请求的分发处理

代码语言:javascript
复制
public class HelloServlet implements Servlet {

    /**
     * service 方法是专门用来处理请求和响应的

     * @param servletRequest

     * @param servletResponse

     * @throws ServletException
     * @throws IOException
     */

    @Override

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3 service === Hello Servlet 被访问了");

        // 类型转换(因为它有 getMethod()方法)

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        // 获取请求的方式

        String method = httpServletRequest.getMethod();

        if ("GET".equals(method)) {
            doGet();
        } else if ("POST".equals(method)) {
            doPost();
        }
    }

    /**
     * 做 get 请求的操作

     */

    public void doGet(){
        System.out.println("get 请求");
        System.out.println("get 请求");
    }

    /**
     * 做 post 请求的操作

     */

    public void doPost(){
        System.out.println("post 请求");
        System.out.println("post 请求");
    }
}

 f) 通过继承 HttpServlet 实现 Servlet 程序

一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

1、编写一个类去继承 HttpServlet 类

2、根据业务需要重写 doGet 或 doPost 方法

3、到 web.xml 中的配置 Servlet 程序的访问地址

代码语言:javascript
复制
public class HelloServlet2 extends HttpServlet {

/**
* doGet()在 get 请求的时候调用

* @param req

* @param resp

* @throws ServletException
* @throws IOException
*/

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
System.out.println("HelloServlet2 的 doGet 方法");
}

/**
* doPost()在 post 请求的时候调用

* @param req

* @param resp

* @throws ServletException
* @throws IOException
*/

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
System.out.println("HelloServlet2 的 doPost 方法");
}
}

web.xml 中的配置:  

代码语言:javascript
复制
<servlet>
    <servlet-name>HelloServlet2</servlet-name>
    <servlet-class>com.atguigu.servlet.HelloServlet2</servlet-class>
</servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>

 g)使用 IDEA 创建 Servlet 程序

菜单:new ->Servlet 程序

配置 Servlet 的信息: 

h)Servlet 类的继承体系 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • a)什么是 Servlet
  • b)手动实现 Servlet 程序
    • Servlet 程序的示例代码
      • web.xml 中的配置: 
      •  c)url 地址到 Servlet 程序的访问
      •  d)Servlet 的生命周期
      • e)GET 和 POST 请求的分发处理
      •  f) 通过继承 HttpServlet 实现 Servlet 程序
      •  g)使用 IDEA 创建 Servlet 程序
      • h)Servlet 类的继承体系 
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档