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


相关推荐

  • 如何将excel中的数据导入mysql_将外部sql文件导入MySQL步骤

    如何将excel中的数据导入mysql_将外部sql文件导入MySQL步骤客户准备了一些数据存放在excel中,让我们导入到mysql中。先上来我自己把数据拷贝到了txt文件中,自己解析txt文件,用JDBC循环插入到数据库中。后来发现有更简单的方法:1先把数据拷贝到txt文件中2打开mysql命令行执行下面的命令就行了LOADDATALOCALINFILE’C:\\temp\\yourfile.txt’INTOTA…

    2022年9月21日
    3
  • Mac安装brew,安装wget「建议收藏」

    Mac安装brew,安装wget「建议收藏」安装brewadmindeMacBook-Pro:wget-1.13.4admin$/usr/bin/ruby-e”$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)”==>Thisscriptwillinstall:/usr/local/bin/brew/…

    2022年6月1日
    52
  • ArrayList底层实现原理「建议收藏」

    ArrayList底层实现原理「建议收藏」ArrayList简介ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。源码分析创建了一个大小为0的数组,在后面会用到。声明了一个数组。ArrayList的无参构造方法,将前面声明创建的大小为0的数组赋给elementData数组。这是ArrayList的有参构造方法,传入一个int类型的变量,相当于我们在使用arrayList的时候指定list的大小

    2022年8月8日
    3
  • webpack(5)webpack处理css文件[通俗易懂]

    webpack(5)webpack处理css文件[通俗易懂]css文件处理-准备工作(以下项目配置都是基于上一篇webpack(4)的基础上)在项目开发中,我们必然需要添加很多的样式,而样式我们往往写到一个单独的文件中。这里我们就在src目录中创建一个n

    2022年7月30日
    9
  • AJAX读音_ajax怎么发音

    AJAX读音_ajax怎么发音AJAX的国际音标是:[ˈeɪdʒæks],读音是"eizhaikes"AJAX全称"AsynchronousJavaScriptandXML”(异

    2022年8月1日
    8
  • (图文)最详细的XAMPP的安装及使用教程「建议收藏」

    (图文)最详细的XAMPP的安装及使用教程「建议收藏」XAMPP的安装及使用教程1、简介2、安装运行3、配置数据库XAMPP的安装及使用教程1、简介XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包原来的名字是LAMPP,但是为了避免误解,最新的几个版本就改名为XAMPP了。它可以在Windows、Linux、Solaris、MacOSX…

    2022年7月27日
    11

发表回复

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

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