文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring MVC 二 :基于xml配置

2023-08-30 17:51

关注

创建一个基于xml配置的Spring MVC项目。

Idea创建新项目,pom文件引入依赖:

       org.springframework      spring-context      5.2.12.RELEASE              org.springframework      spring-web      5.2.12.RELEASE              org.springframework      spring-webmvc      5.2.12.RELEASE    

在项目的webapp/WEB-INF目录下创建web.xml文件,配置DispatcherServlet:

      dispatcherServlet    DispatcherServlet    DispatcherServlet    org.springframework.web.servlet.DispatcherServlet          contextConfigLocation      classpath:springmvc.xml        1        DispatcherServlet    /*  

注意其中定义了contextConfigLocation:上下文配置文件位置,配置为:classpath:springmvc.xml,指定Spring MVC启动过程中会到指定位置读取该配置文件,所以我们需要配置好springmvc.xml文件。

在项目resource路径下配置springmvc.xml文件:

                                                    

主要是指定Spring MVC的controller的包扫描路径,并指定视图解析器、以及视图后缀为jsp。

最后,创建一个conrolller:

package org.example.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.DispatcherServlet;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class HelloWorldController {    @GetMapping("/hello")    @ResponseBody    public String hello(ModelAndView model){        return "";    }}

我们的目的就是让快速让这个Spring MVC案例跑起来,就不创建jsp文件了,所以在controller中引入了@ResponseBody注解(不加这个注解的话,controller的@GetMapping方法返回String则视图解析器会将其处理为jsp页面)。

项目结构如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MIMttzs9-1693062192086)(/img/bVc9kvX)]

项目启动配置:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c1r1tC9A-1693062192087)(/img/bVc9kvZ)]

启动后,测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwK0dkN5-1693062192087)(/img/bVc9kv1)]

所以,通过idea创建一个基于SpringMVC的项目非常简单,通过以上几步,一个Spring MVC项目就可以正常运行起来了。

接下来我们先简单研究一下以上案例得以正常运行的底层原理。

DispatcherServlet

我们知道Spring MVC是通过一个核心servlet:DispatcherServlet来处理请求的,所以还是从DispatcherServlet入手。

先来看一眼DispatcherServlet类的继承关系:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-laGEnAG5-1693062192087)(/img/bVc9kv7)]

这个类层次结构中,Servlet->GenericServlet->HttpServlet是属于java SDK的内容,来自于javax.servlet.http包,之后的从HttpServletBean到DispatcherServlet是属于Spring Web MVC框架的内容,来自于org.springframework.web.servlet包。

如果不使用Spring Mvc、自己创建Servlet的话,我们的Servlet直接继承HttpServlet即可,其实实现起来也很简单:
1. 创建MyServlet

package org.example.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class MyServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.getWriter().write("");    }}

2.在web.xml中配置MySevlet

      MyServlet    org.example.servlet.MyServlet    1        MyServlet    /my  

3.启动项目,访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dlja33sH-1693062192087)(/img/bVc9kxT)]

其实Spring MVC的工作原理和MyServlet的工作原理类似,MyServlet是通过配置文件找到当前请求URL对应的Servlet,然后再根据请求类型调用Servlet的doGet或者doPost等方法处理请求。Spring MVC处理请求的Servlet是DispatcherServlet,DispatcherServlet根据请求URL匹配HandlerMapping、找到对应的Controller,之后交给HandlerAdapters经过请求参数的匹配、转换之后,通过反射机制调用Controller的对应方法,完成请求的处理。

上述DispatcherServlet的底层处理逻辑,后面我们会逐步细化、深入,从代码层面进行分析。

上一篇 Spring MVC 一 :从MVC & Servlet开始

来源地址:https://blog.csdn.net/weixin_44612246/article/details/132517082

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯