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


相关推荐

  • jmeter并发测试教程_jmeter高并发测试

    jmeter并发测试教程_jmeter高并发测试BeanShellSamplerBeanShellSampler我们添加一个beanshellsample,用java脚本将文件保存到本地注意:文件保存路径如果写成:C:\Users\feng\Desktop,会报错"TokenParsingError:Lexicalerror"正确格式:C:/Users/feng/De…

    2022年9月29日
    1
  • js整除取余(python)

    1.丢弃小数部分,保留整数部分parseInt(5/2)22.向上取整,有小数,则整数部分加1Math.ceil(5/2)33.四舍五入Math.round(5/2)34.向下取整Math.floor(5/2)2取余数0%401

    2022年4月15日
    62
  • MyBatis-Plus用起来真的很舒服

    MyBatis-Plus用起来真的很舒服 阅读目录一、MyBatis-Plus1、简介2、使用SpringBoot快速使用MyBatis-Plus二、Mybatis-Plus常用操作1、配置日志2、简单认识一下常用注解3

    2022年7月1日
    27
  • Silverlight版QQ初体验

    Silverlight版QQ初体验2010年的第一天,腾讯发布了研发已久的SilverlightQQ,超炫的界面让人喜欢,希望腾讯能一直以技术为路线,以用户体验为中心做好所有的产品。下面我带着大家一起来看看SilverlightQ

    2022年7月1日
    23
  • 流水线设计技术为什么能提高数字系统的工作频率_自动化流水线设计方案

    流水线设计技术为什么能提高数字系统的工作频率_自动化流水线设计方案1、什么是流水线流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行执行,所以能提高数据吞吐率(提高处理速度)。%k$y0q5D/G*^

    2022年8月14日
    8
  • js 设置html标签样式表,js怎么设置css样式?

    js 设置html标签样式表,js怎么设置css样式?js怎么设置css样式?本篇文章就给大家介绍js设置css样式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1、直接设置style对象(内联样式)使用JavaScript设置元素样式的最简单方法是使用style属性。在我们通过JavaScript访问的每个HTML元素时都有一个style对象。此对象允许我们指定CSS属性并设置其值。例如,这是设置id值为demo的HT…

    2025年5月27日
    3

发表回复

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

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