MVC框架模式与SpringMVC框架

MVC框架模式与SpringMVC框架1 框架与设计模式框架 设计模式这两个概念很容易被人混淆 但其实这两者之间还是存在差别的 框架通常是代码重用 而设计模式是设计重用 nbsp 设计模式是对反复出现的问题的解决方案的描述 是一种思想用于处理细节的 比框架更加抽象 框架是已经用代码实现的 可以执行也可以复用 设计模式是比框架更小的元素 一个框架往往会包含一个或者多个设计模式 框架总是针对某一特定领域的 而设计模式则可以适用于各个

1. 框架与设计模式

2. MVC框架模式

模型:表示企业数据和业务规则。在MVC的3个部件中,模型拥有最多的处理任务。被模型返回的数据是独立的,与数据格式无关。这样的一个模式能够为多个视图提供数据,这样一来模型的代码只需要写一次便能够被多个视图重用,减少了代码的重复性。

控制器:接受用户的输入并调用相应的模型和视图来完成用户的需求,所以当用户点击web页面中的超链接和发送表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并根据请求来调用哪个模型去处理请求,然后在决定用哪个视图来显示返回的数据。

3. SpringMVC框架

3.1 SpringMVC简介

springMVC框架是基于Java的实现了MVC框架模式的请求驱动类型的轻量级框架。前端控制器是DispatcherServlet接口实现类,映射处理器是HandlerMapping接口实现类,视图解析器是ViewResolver接口实现类,页面控制器是Controller接口实现类。SpringMVC的工作流程图如下:

MVC框架模式与SpringMVC框架

3.2 SpringMVC框架中的接口

DispatcherServlet接口:Spring提供的前端控制器,所有的请求都是由它来进行分发。在DispatcherServlet将请求分发到对应的Controller之前,需要借助Spring提供的HandlerMapping才能定位到相应的Controller.

HandlerMapping接口:完成客户请求到Controller的映射。

ViewResolver接口:根据ModelAndView对象在web应用查找view视图,并将model中是数据传入到view视图中进行渲染。

3.3 SpringMVC框架优势

3.4 SpringMVC常用注解

1、@Controller

@Controller public class TestController {} @Controller("test") public class TestController {} 
 
  • 1
  • 2
  • 3
  • 4
  • 5

@Controller注解在一个类上,表明该类是一个SpringMVC Controller对象。分发处理器将会扫描使用了该注解的类的所有方法,并检测该类中的方法是否使用了@RequestMapping注解。@Controller注解只是定义一个控制器,@RequestMapping注解的方法才是真正处理请求的处理器。单单使用了Controller注解还不能说明该类就是SpringMVC的控制器,因为这个时候Spring还无法获取该类,我们可以通过如下两种方式将@Controller注解的控制器类交给spring进行管理:

//方法一 //在SpringMVC配置文件中定义MyController的bean对象 <bean class="com.host.app.web.controller.MyController"/> //方法二 //在SpringMVC配置文件中告诉Spring去哪里扫描@Controller注解的Controller对象 <context:component-scan base-package="com.host.app.web.controller"/> 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2、@RequestMapping

value:指定请求的实际地址,指定的地址可以是URL Template模式;

method:指定请求的方法类型;

consumes:指定请求提交的内容类型(Content-Type),例如application/json,text/html;

produces:指定返回的内容类型,仅当请求头部中Accept包含指定类型时方法才进行处理;

params:请求中必须包含某些参数时,方法才进行处理;

headers:请求header中必须包含某些指定的header值,方法才进行处理;

3、@Resource和@Autowired

@Resource和@Autowired的不同点:

@Autowired注解是由spring提供的,需要导入org.springframework.beans.factory.annotation.Autowired,只按照byType进行注入。在默认情况下,它要求依赖的对象必须存在,如果允许null,可以通过属性required设置为false进行设置。如果我们需要辅助通过byName进行装配bean,我们可以结合@Qualifier注解一起使用。

@RequestMapping(value="/users/{user}/roles/{role}") public void getUserAndRole(@PathVariable("user") String user,@PathVariable("role")String role){ System.out.println(user+" : "+role); } 
 
  • 1
  • 2
  • 3
  • 4
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232797.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置

    【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置目录1、前言2、树莓派4B有什么特色?3、树莓派新手准备4、烧录RaspbianBuster系统到MicroSD卡开启SSH及配置无线连接5、启动安装树莓派系统启动树莓派6、树莓派的基本配置6.1系统配置6.2更改apt软件源与系统源6.3更改pip源6.4安装远程桌面6.5安装中文字体1、前言对于很多程序员而言,树莓派如今…

    2022年6月12日
    76
  • pytorch安装、环境搭建及在pycharm中的设置

    pytorch安装、环境搭建及在pycharm中的设置pytorch安装、环境搭建及在pycharm中设置这两天同学在问我pytorch的安装,因为自己的已经安装好了,但是好像又有点遗忘,所以记录一下。一、安装python直接到官网找到和自己设备匹配的版本下载安装即可。安装过程不会出现太多问题,一般情况下python安装在本机上,故可以直接在终端测试是否安装成功。只需win+R——cmd——输入python,就会输出python的版本信息。…

    2022年8月29日
    3
  • 常用的搜索引擎有哪些(公认最好的3种搜索引擎)「建议收藏」

    常用的搜索引擎有哪些(公认最好的3种搜索引擎)「建议收藏」搜索引擎无论工作还是生活都无法避免,哪个引擎更适合使用?接下来用最为常用的baidu,bing,google做个简单对比。首先用baidu以现在最火的‘深度学习’为关键字进行搜索。我的2K分辨率的显示器最后一行才能看到一些有用的信息,最常用的1080P分辨率第一页是不可能有正确结果了。深度学习百度搜索结果(广告有点儿多)微软的bing搜索引擎支持国内版和国际版,首先用国内版对‘深度学习’关键字进行搜索。bing搜索结果(质量还不错,无广告!)使用国际版对相同的‘深度学习’关键字

    2022年5月18日
    82
  • 最全面的PLC学习网站[通俗易懂]

    最全面的PLC学习网站[通俗易懂]http://www.gkwo.net/wenku/list-13.htmPLC工控资料学习网

    2022年10月19日
    2
  • 画二元函数即三维图像的函数及matlab代码

    画二元函数即三维图像的函数及matlab代码画二元函数,即两个变量可以得到三维图像,下面通过一个例子进行讲解。首先利用meshgrid函数产生平面区域内的网格坐标矩阵。x=[1,2,3,4,5]y=[2,4,6];[X,Y]=meshgrid(x,y);执行完以后X、Y均为矩阵,其中矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数,具体则为:接…

    2025年9月25日
    5
  • clion激活码 2021激活码[在线序列号]

    clion激活码 2021激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号