博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC概述
阅读量:6794 次
发布时间:2019-06-26

本文共 3696 字,大约阅读时间需要 12 分钟。

Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速。

Spring框架最初由Rod Johnson撰写,并于2003年6月根据Apache 2.0许可证首次发布。

本教程是基于2015年3月发布的Spring Framework版本4.1.6编写的。

Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件。 MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。

  • 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
  • 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
  • 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。

DispatcherServlet组件类

Spring Web模型 - 视图 - 控制器(MVC)框架是围绕DispatcherServlet设计的,它处理所有的HTTP请求和响应。 Spring Web MVC DispatcherServlet的请求处理工作流如下图所示:

以下是对应于到DispatcherServlet的传入HTTP请求的事件顺序:

  • 在接收到HTTP请求后,DispatcherServlet会查询HandlerMapping以调用相应的Controller
  • Controller接受请求并根据使用的GETPOST方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给DispatcherServlet
  • DispatcherServlet将从ViewResolver获取请求的定义视图。
  • 当视图完成,DispatcherServlet将模型数据传递到最终的视图,并在浏览器上呈现。

所有上述组件,即: HandlerMappingControllerViewResolverWebApplicationContext的一部分,它是普通ApplicationContext的扩展,带有Web应用程序所需的一些额外功能。

必需的配置

需要通过使用web.xml文件中的URL映射来映射希望DispatcherServlet处理的请求。 下面是一个示例来显示HelloWeb DispatcherServlet示例的声明和映射:

Spring MVC Application
HelloWeb
org.springframework.web.servlet.DispatcherServlet
1
HelloWeb
*.jsp
XML

web.xml文件将保存Web应用程序的WebContent/WEB-INF目录。在HelloWeb DispatcherServlet初始化时,框架将尝试从位于应用程序的WebContent/WEB-INF目录中的名为[servlet-name]-servlet.xml的文件加载应用程序上下文。在这个示例中,使用的文件将是HelloWeb-servlet.xml

接下来,<servlet-mapping>标记指示哪些URL将由DispatcherServlet处理。 这里所有以.jsp结尾的HTTP请求都将由HelloWeb DispatcherServlet处理。

如果不想使用默认文件名为[servlet-name]-servlet.xml和默认位置为WebContent/WEB-INF,可以通过在web.xml文件中添加servlet侦听器ContextLoaderListener来自定义此文件名和位置 如下:

....
contextConfigLocation
/WEB-INF/HelloWeb-servlet.xml
org.springframework.web.context.ContextLoaderListener
Java

现在来看看HelloWeb-servlet.xml文件的必需配置,放在Web应用程序的WebContent/WEB-INF目录中:

Java

以下是有关HelloWeb-servlet.xml文件的重点说明:

  • [servlet-name]-servlet.xml文件将用于创建定义的bean,它会覆盖在全局范围中使用相同名称定义的任何bean的定义。

  • <context:component-scan ...>标签将用于激活Spring MVC注释扫描功能,允许使用等注释。

  • InternalResourceViewResolver将定义用于解析视图名称的规则。根据上面定义的规则,hello的逻辑视图将委托给位于/WEB-INF/jsp/hello.jsp这个视图来实现。

下一节将演示如何创建实际组件。即:控制器,模型和视图。

定义控制器

DispatcherServlet将请求委派给控制器以执行特定于其的功能。 注释指示特定类充当控制器的角色。注释用于将URL映射到整个类或特定处理程序方法。

 
@Controller@RequestMapping("/hello") public class HelloController{ @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } }
Java

注释将类定义为Spring MVC控制器。这里的第一个用法表示此控制器上的所有处理方法都与/hello路径相关。 下一个注释(method = RequestMethod.GET)用于声明printHello()方法作为控制器的默认服务方法来处理HTTP GET请求。可以定义另一个方法来处理同一URL的任何POST请求。

可以以另一种形式在上面的控制器中编写,在中添加其他属性,如下所示:

 
@Controllerpublic class HelloController{ @RequestMapping(value = "/hello", method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } }
Java

value属性指示处理程序方法映射到的URL,method属性定义处理HTTP GET请求的服务方法。关于以上定义的控制器,需要注意以下几点:

  • 在服务方法中定义所需的业务逻辑。可以根据需要在此方法内调用其他方法。
  • 基于定义的业务逻辑,将在此方法中创建一个模型。可以设置不同的模型属性,这些属性将被视图访问以呈现最终结果。此示例创建且有属性“message”的模型。
  • 定义的服务方法可以返回一个String,它包含要用于渲染模型的视图的名称。此示例将“hello”返回为逻辑视图名称。

创建JSP视图

Spring MVC支持许多类型的视图用于不同的表示技术。包括 - JSP,HTML,PDF,Excel工作表,XML,Velocity模板,XSLT,JSON,Atom 和 RSS 源,JasperReports等。但最常见的是使用JSPL编写的JSP模板,这里使用的是JSP模板,并在/WEB-INF/hello/hello.jsp中写一个简单的hello视图:

    Hello Spring MVC   

${message}

Java

这里${message}是在Controller中设置的属性。可以在视图中显示多个属性。

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/6367819.html,如需转载请自行联系原作者

你可能感兴趣的文章
(转)十月百度,阿里巴巴,迅雷搜狗最新面试七十题
查看>>
freeglut 2.8.1 windows 8 x64 配置
查看>>
apache 配置虚拟主机
查看>>
FTP 的 被动传输模式
查看>>
使用 hydra 破解路由器密码
查看>>
小黑小波比.sql语句查询0:全部;1:类型A;2:类型B
查看>>
@PathVariable 包含斜杠
查看>>
思达报表工具Style Report基础教程—参数化查询
查看>>
为什么用ls和du显示出来的文件大小有差别?
查看>>
如何依据激励对象和公司状况,选择正确的股权激励方式?
查看>>
Android apktool更新版本后遇到的一些问题
查看>>
Java面试题之九 (转) 二
查看>>
k8s 安装 + docker
查看>>
servlet 产生验证码
查看>>
java里怎样在客户端获取response的Cookie
查看>>
quick lua下自定义事件处理
查看>>
tomcat 启动报 操作系统找不到已输入的环境选项
查看>>
10进制转换, 输出字符
查看>>
svg在线生成器地址
查看>>
Fikker 自建CDN的安装说明
查看>>