zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【java web篇】Servlet体系结构与urlPatten配置

JAVA配置WebServlet 体系结构
2023-09-27 14:26:52 时间

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:java 小白到高手的蜕变🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

前言

之前讲了servlet的快速入们以及执行流程和生命周期,这节我们就来看看servlet的体系结构以及web开发中基本都一样的路由配置!

Servlet体系结构

关于Servlet的集成体系结构看下图:
请添加图片描述
这张图很清晰的描述了Servlet的体系结构,我们的快速入门是以继承的Servlet体系根接口,而我们的web项目都是用封装好的HttpServlet,下面就来探究一下!

首先看看HttpServlet的书写格式:

@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");
    }

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

在这里插入图片描述
当然,post的请求是要写个html页面来测试的,在webapp下新建a.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post表单</title>
</head>
<body>
<form action="/tomcat-demo/demo2" method="post">
    <input name="username"> <input type="submit">
</form>
</body>
</html>

然后我们探究HttpServlet中问什么要根据请求方式的不同,调用不同的方法?

来看看原始的Servlet接口对get和post请求的处理:

@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    // 根据请求方式的不同进行不同处理
    HttpServletRequest request =  (HttpServletRequest) servletRequest;
    
    // 1.获取请求方式
    String method = request.getMethod();
    // 2.判断
    if("GET".equals(method)){
        // get 处理逻辑
    }else if("POST".equals(method)){
        // post 处理逻辑
    }
}

处理逻辑无非机遇是个判断,没啥麻烦的,但问题是每一个Servlet中你要都这么写,是不是很麻烦,所以HttpServlet就帮我们封装好了doGet()和doPost()方法来分别处理get和post请求!(当然你也可以自己自定义一个类去实现Servlet接口,封装get和post方法!)

我们来看看HttpServlet的源码:
在这里插入图片描述

在这里插入图片描述

应该能看懂,原理和上面说的一模一样!

urlPatten配置

这个web开发中基本都差不多,我不再多说,贴一张图看看就行,同时,Servlet 3.0之后简化了路由配置,现在是使用注解(python中一模一样,只不过叫装饰器),之前是xml的方式配置,比较麻烦,我也不会总结!

在这里插入图片描述

结语

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门