用较为浅显的方式来谈谈Servlet是什么,Servlet有什么作用

Java学了也有一段时间了,今天想来聊聊关于Servlet的一些概念,顺便也是对自己这几天学习的总结吧!

首先来谈谈servlet是什么?
作为一个程序员来说,servlet是必须掌握的一个知识点,至少我认为目前来讲还是非常重要,那么它为什么重要呢?简单来讲,因为前端和后端都离不开它,servlet是用来处理请求和相应的一个工具。所以不管作为前端程序员还是后端程序员,都是需要去了解它的。
那么现在让我们进入正题!
刚才说前端和后端都离不开servlet,可能有些晦涩,我来画张图演示一下就明白了
在这里插入图片描述
简单理一下思路:
1.客户端发送请求到服务器
2.服务器将请求转发给servlet,让servlet去处理请求
3.那么问题来了,servlet是一个接口,它只能去处理自己的接口实现类请求,所以这里它会将request封装成Httpservletrequest,再去处理
4.之后就是在service方法当中去实现我们的业务逻辑,这里是由后端程序员去做

现在我们来搭建一个实现servlet接口的程序,只需要两步
1.编写一个类,实现servlet接口
2.将写好的程序部署到tomcat上

具体步骤:
1.新建一个maven程序,可以直接在创建的时候导入maven-webapp的模板
在这里插入图片描述
2.项目创建完以后等待配置完成
3.找到web.xml文件,将其配置信息改成最新的

<?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"
metadata-complete="true">
</web-app>

4.编写一个普通类,继承Httpservlet接口

public class HelloServlet extends HttpServlet {

    //由于get或者post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入了doGet方法");
        //ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();  // 响应流
        writer.print("Hello Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

值得一提的是为什么这里是Httpservlet接口,而不是servlet接口,实际上servlet的直接接口实现类是GenericServlet,而HttpServlet是继承了GenericServlet的所有方法。这里不细说了,有兴趣的可以自己去看看源码。

5.很重要的一步,在web.xml当中编写映射文件,

<!--    //注册servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.fannnnn.servlet.HelloServlet</servlet-class>
    </servlet>

<!--    Servlet的请求路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

为什么需要这么配置呢?
‘/hello’是hello程序的请求路径,比如服务开启之后客户端访问访问"主机名+端口号"+"/hello”即可访问hello页面
它是一一对应的关系,由/hello定位到servlet-mapping当中的servlet-name,再有servle-name找到对应的servlet-class,便可以访问到我们的资源了。

6.最后一步就是配置tomcat了,在这里不详细说了。

关于servlet,还有一个比较重要的知识点是servletContext,它可以用来处理请求和相应,很有用的东西,有兴趣的朋友可以自己去了解一些。

最后总结:servlet就是一个用来处理客户端发送过来的请求,在接收到请求之后作一些处理,最后生成相应信息由服务端获取,再由服务器返回给客户端。整个流程图如下:
在这里插入图片描述

如果有什么错误的地方,希望大家多多指教!感谢指导

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值