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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python导入xml文件_python爬虫写入excel

    python导入xml文件_python爬虫写入excel最近在使用Testlink时,发现导入的用例是xml格式,且没有合适的工具转成excel格式,xml使用excel打开显示的东西也太多,网上也有相关工具转成csv格式的,结果也不合人意。那求人不如尔己,自己写一个吧需要用到的模块有:xml.dom.minidom(python自带)、xlwt使用版本:python:2.7.5xlwt:1.0.0一、先分析TestlinkXML格式:这是一个有两级…

    2022年8月22日
    5
  • awstats 安装

    awstats 安装来自http://www.cnblogs.com/fnng/archive/2012/08/31/2666175.htmlAwstats是一个非常简洁而且强大的统计工具。它可以统计您站点的如下信息:一:访问量,访问次数,页面浏览量,点击数,数据流量等精确到每月、每日、每小时的数据二:访问者国家、访问者IP、操作系统、浏览器等三:Robots/Spiders的统计四:…

    2022年7月16日
    15
  • js面试笔试–prototype详解

    js面试笔试–prototype详解对JavaScript中原型模式的理解一:什么是原型对象?有什么优点?   简单的来说,无论何时,我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象包含了通过调用该构造函数所创建的对象共享的属性和方法。其实我们平常的叫法就是指:prototype就是通过该构造函数创建的某个实例的原型对象,但是其实prototype是每个构造函数的属性而已,只能说…

    2022年7月22日
    9
  • txs0108 替代芯片_什么是芯片,怎么造出来的

    txs0108 替代芯片_什么是芯片,怎么造出来的TXS0108双向电压转换芯片用于IIC时的问题TXS0108是双向电平转换芯片,在我的案例中用于1.8V电平与3.3V电平的转换。最先,我在3.3V和1.8V的SCL和SDA总线上均使用了4.7kΩ的上拉电阻,上拉到对应的高电平。调试发现SDA出现如下波形:可以看到图上出现了次高电平。非常不正常。分析后发现,中间四个次高电平都是IIC芯片发出的ACK信号,应该被拉低,但是并没有拉低到0V。导…

    2022年8月10日
    5
  • minicom指令_minicom 串口通信设置

    minicom指令_minicom 串口通信设置L文件捕获开关。打开时,所有到屏幕的输出也将被捕获到文件中。M发送modem初始化串。若你online,且DCD线设为on,则modem被初始化前将要求你进行确认。O配置minicom。转到配置菜单。P通信参数。允许你改变bps速率,奇偶校验和位数。Q不复位modem就退出minicom。如果改变了macros,而且未存盘,会提供你一个save的机会。R接收文件。从各种协议(外部)中进行选择。若f…

    2022年4月29日
    262
  • 编写 if 时不带 else,你的代码会更好!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 来源:翻译自:Nicklas Millard的文章《Better Software Without If-Else》…

    2021年6月27日
    94

发表回复

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

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