Servlet不用再学了?扯淡!!!

之前看到有的公众号主说 JSP/Servlet 不用学了,真是惊到我了。。。。。。天下之大,无奇不有。Servlet 是前后端交互的基石,不学 Servlet 你永远不知道前端请求是如何发送到后端的,你也不知道 Web 容器的工作机制是怎样的。这里我先给大家讲一下Servlet的一些基本原理。
                   

1.servlet的作用

servlet的作用是实现动态web,Tomcat10之后的servlet依赖包不是javax

javax.servlet,而是jakarta.servlet。如果导入javax.servlet服务器会报500 xxservlet 不存在。需要更新为以下依赖。

<dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
</dependency>

<dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
</dependency>

httpServlet和servlet的关系如下图:

在这里插入图片描述

2.servlet原理及配置

2.1原理图

在这里插入图片描述
免费领取资料
2.2 配置及源码
在查看servlet源码的过程中,发现HttpServlt中请求最终都会指向错误,因此必须继承HttpServlet重写对应的请求方法。

报错代码:

首先在web.xml中配置servlet的路径及映射,如下:

继承了HttpServlet类的子类代码,直接使用父类的doGet

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("test 的 servlet");
        super.doGet(req, resp);
    }

响应结果:

在这里插入图片描述

修改web.xml中servlet类为重写了doGet方法的类

配置:

免费领取资料
代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello Servlet!</h1>");
        out.println("Method: " + request.getMethod());
        out.println("Request URI: " + request.getRequestURI());
        out.println("Protocol: " + request.getProtocol());
        out.println("PathInfo: " + request.getPathInfo());
        out.println("Remote Address: " + request.getRemoteAddr());
        out.println("</body>");
        out.println("</html>");
    }

输出:

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。 可以的话请给我一个三连支持一下我哟,我们下期再见

免费领取资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值