您的当前位置:首页正文

自己实现 SpringMVC 底层机制 系列之搭建 SpringMVC 底层机制开发环境和开发 WyxDispatcherServlet

2024-11-30 来源:个人技术集锦

?个人主页:[尘觉主页](https:///apple_67445472?type=blog)


?个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力??

在csdn获奖荣誉: ?csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ?Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ? 端午大礼包获得者

完成手写功能介绍

  • 核心分发 控制器
  •  Controller 和 Service 注入容器
  •  对象自动装配 
  • 控制器 方法获取参数
  • 视图解析
  • 返回 JSON 格式


?自己实现 SpringMVC 底层机制 系列之搭建 SpringMVC 底层机制开发环境和开发 WyxDispatcherServlet

?搭建 SpringMVC 底层机制开发环境

1、创建 Maven 项目wyx-springmvc [提示: 我们在讲解 手动实现tomcat 时,我们已经使用过,不知道可以看我的博客

2、对 wyx-springmvc 进行配置: 修改 D:\idea_java_projects\wyx-springmvc\pom.xml , 将 1.7 修改成 1.8

<properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.source>1.8</maven.compiler.source>

        <maven.compiler.target>1.8</maven.compiler.target>

</properties>

?提示:

引入需要的基本的 jar 包, 修改 pom.xml

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--引入原生servlet依赖 的jar-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <!--解读
            1. scope标签表示引入的jar的作用范围
            2. provided:表示该项目在打包,放到生产环境的时候,不需要带上servlet-api.jar
            3. 因为tomcat本身是有servlet的jar, 到时直接使用tomcat本身的servlet-api.jar,防止版本冲突
            4. 后面在讲解maven时,还有详细讲解
            -->
            <scope>provided</scope>
        </dependency>

        <!--引入dom4j,解析xml文件-->
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

        <!--引入常用工具类的jar 该jar含有很多常用的类-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>


?实现任务阶段 1- 开发 WyxDispatcherServlet

说明:

编写 WyxDispatcherServlet 充当原生的 DispatcherServlet(即核心控制器)

?分析示意图

 创建WyxDispatcherServlet.java类

public class WyxDispatcherServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {
        super.doGet(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {
        super.doPost(req, resp);
    }
}

创建wyxspringmvc.xml

充当 原生的 applicationContext-mvc.xml 文件 (就是 spring 的容器配置文件  比如指定要扫描 哪些包下的类) 先创建给空的文件

修改web.xml, 完成 WyxDispatcherServlet 的

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <!--配置WyxDispatcherServlet, 作为我们自己的前端控制器-->
  <servlet>
    <servlet-name>WyxDispatcherServlet</servlet-name>
    <servlet-class>com.wyxdu.wyxspringmvc.servlet.WyxDispatcherServlet</servlet-class>
    <!--给WyxDispatcherServlet配置参数,指定要操作的spring容器配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:wyxspringmvc.xml</param-value>
    </init-param>
    <!--WyxDispatcherServlet在tomcat启动时,就自动加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>WyxDispatcherServlet</servlet-name>
    <!--因为WyxDispatcherServlet作为前端控制器,所以需要拦截所有请求,url-pattern配置 /-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

?配置 Tomcat, 完成测试

配置 Tomcat   具体步骤我们在讲解 JavaWeb 时  已经操作过 不知道请看

修改WyxDispatcherServlet.java

public class WyxDispatcherServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {
        System.out.println("WyxDispatcherServlet doGet()被调用");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {
        System.out.println("WyxDispatcherServlet doPost()被调用");
    }
}

启动 Tomcat完成测试

 ?总结

自己实现 SpringMVC 底层机制 系列之搭建 SpringMVC 底层机制开发环境和开发 WyxDispatcherServlet下面就是实现任务阶段 2- 完成客户端浏览器可以请求控制层

?自己实现 SpringMVC 底层机制 核心分发 控制器+ Controller 和 Service 注入容器 + 对象自动装配 + 控制器 方法获取参数 + 视图解析 + 返回 JSON 格式数系列

第一篇->

第二篇->

第三篇->

第四篇->

第五篇->

第六篇->

第七篇->

第八篇->

?热门专栏推荐

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

 ?欢迎大家加入我的社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论?
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读?
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力?

显示全文