• Spring MVC 概述
  • 新建Spring MVC Project
  • 分析IDE建立的工程
    • Maven dependencies configuration
    • Spring MVC configuration
    • Web deployment descriptor (web.xml)
    • 示例controller: HomeController.java
    • 示例JSP view: home.jsp
    • Deploying and running the application
    • modify the project

Spring MVC 概述

正如其名称所述,Spring MVC框架基于Model - View - Controller(MVC)设计模式,将应用程序的逻辑分为三层 【模式,视图和控制器】。 MVC在Spring中由以下组件实现:

  • Springs dispatcher servlet 作为Spring应用程序和其客户端之间的前台控制器。 调度器servlet拦截到应用程序的所有请求,并查询要调用哪个控制器来处理请求的Handler Mapping。

  • Handler Mapping:负责找到处理特定请求的适当控制器。 请求URL和控制器类之间的映射是通过XML配置或注释完成的。

  • Controller:负责通过调用其他业务/服务类来处理请求。 输出可以附加到将发送到视图的模型对象。 要知道将呈现哪个视图,控制器将查看View Resolver。

  • View Resolver:从逻辑名称中查找物理视图文件。

  • View:可以是JSP,HTML,XML,Velocity模板等的物理视图文件


新建Spring MVC Project

File > New > Spring Project 选择Spring MVC Project


单击下一步,下载模板的更新(首次使用此模板或每当更新可用时):


输入工程包名称

注意:选择包名时要小心,因为最后一个元素(比如com.artisan.springmvc中的springmvc)将被用作Maven项目文件(pom.xml)中的artifactId以及应用程序的上下文路径。当然了,我们也可以在pom.xml文件中进行更改。


单击完成,STS将创建一个基于Spring MVC的项目,其中有一些默认值用于控制器,视图和配置。

如果碰到以下错误:

是因为Maven还没有更新一些依赖关系

右键单击项目名称,从上下文菜单中选择Maven > Update Project…

在更新Maven项目对话框中,选中Force update of Snapshots/Release

单击完成,等待Maven下载所需的依赖关系,然后错误就会消失。


分析IDE建立的工程

现在让我们来探讨Spring MVC Project模板创建的内容。 展开项目资源管理器视图中的分支,我们将看到项目的结构如下:

我们可以看到,STS为典型的Spring MVC应用程序创建了所需的:XML配置,jar依赖关系,controller和JSP 视图。

接下来我们来看下更多的细节部分


Maven dependencies configuration

生成的pom.xml文件包含Spring核心和Spring MVC的所有必要依赖关系,以及servlet API,日志记录等。如上图红色矩形。

当在IDE中运行的服务器上部署项目时,artifactId元素的值将用作Web应用程序的上下文路径。 这意味着我们将以以下形式访问此应用程序:

http://localhost:8080/springmvc

如果要更改Spring框架的版本,只需更新org.springframework-version元素的值即可。
比如

<org.springframework-version>3.2.2.RELEASE</org.springframework-version>

只要保存pom.xml文件,Maven就会立即检测到更改并更新所有相关的依赖项。


Spring MVC configuration

STS创建两个Spring MVC的配置文件: root-context.xml 和servlet-context.xml.

root-context.xml:

这个配置文件被所有的servlet和filters共享。 在应用程序启动时, root-context.xml 文件由Spring的ContextLoaderListener加载。 该文件默认为空。

servlet-context.xml:

该文件由Spring的DispatcherServlet加载,它接收到进入应用程序的所有请求,并根据此servlet-context.xml文件中指定的配置调度控制器的处理。 我们来看看一些默认配置:

  • <annotation-driven /> 告诉框架使用基于注释的方法来扫描指定包中的文件。 因此,我们可以使用@Controller注释作为控制器类,而不是声明XML元素。

  • <resources mapping=…/>使用HTTP GET请求直接映射静态资源。 例如图像,javascript,CSS等资源不必经过控制器。

  • Bean InternalResourceViewResolver 此bean声明告诉Spring如何根据控制器返回的逻辑视图名称查找物理JSP文件,方法是将prefix 和suffix 附加到视图名称。 例如,如果控制器的方法返回“home”作为逻辑视图名称,则框架将在/ WEB-INF / views目录下找到一个物理文件“home.jsp”。

  • <context:component-scan …/>告诉框架使用基于注释的策略时要扫描的包。 这里的框架将扫描所有类下的包com.artisan.springmvc。


Web deployment descriptor (web.xml)

这是基于Spring MVC的应用程序的典型配置,其中包含Spring的ContextLoaderListener和DispatcherServlet以及Spring配置文件root-context.xml和servlet-context.xml。 最后,它指定了Spring的DispatcherServlet处理所有请求的URL映射。


示例controller: HomeController.java

我们可以看到,@Controller注释用于指定此类是Spring控制器,而@RequestMapping注释指定home()方法将使用URL /(应用程序的默认页面)处理GET请求。 在一个控制器类中,我们可以编写许多方法来处理不同的URL。

在home()方法的内部,它创建一个String对象,以基于当前语言环境保存当前日期,并将该对象添加到名称为“serverTime”的模型中:

model.addAttribute(“serverTime”,formattedDate);

最后,该方法返回一个名为“home”的视图,该视图将由servlet-context.xml文件中指定的视图解析器解析,以查找实际的视图文件。


示例JSP view: home.jsp

这个代码很简单,它只是打印出一个变量“serverTime”的值,它由控制器传递,使用EL表达式:

The time on the server is ${serverTime}.

到目前为止,我们已经完成了Spring MVC项目模板生成的所有内容。 请注意,我们还没有编写任何代码行,但是应用程序现在可以进行部署和测试了。


Deploying and running the application

我们不到到tomcat中

启动:

访问

http://localhost:8080/springmvc/


modify the project

到目前为止,我们已经测试并看到生成的应用程序运行。 现在让我们为项目添加一些更改,以进一步了解Spring MVC。

HomeController.java 增加如下方法

@RequestMapping(value = "/test", method = RequestMethod.GET)public String test(Model model) {String greetings = "Greetings ,Spring MVC !";model.addAttribute("message", greetings);return "test";}

该方法将处理具有URL模式 /test 的请求,并执行以下操作:

  • 将String对象作为属性添加到名为“message”的模型中,值为“Greetings,Spring MVC!”。
  • 返回名为“test”的逻辑视图。

因为test()方法返回“test”视图名称,并且遵循视图解析器指定的配置,我们必须在/ WEB-INF / views目录下创建一个名为test.jsp的JPS文件,其中包含以下内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head><title>Test page</title>
</head>
<body>
<h1>${message}
</h1>
</body>
</html>

一个简单的页面 ,打印出将由控制器传递的变量“message”的值。 现在回到浏览器窗口,将URL更改为:

http://localhost:8080/springmvc/test

Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境相关推荐

  1. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  2. vscode+platformio IDE+sdcc搭建51单片机开发环境(win764)

    vscode+platformio IDE+sdcc搭建51单片机开发环境,使用的单片机是STC89C52RC,最终我们使用单片机引脚的pwm输出实现两颗led拖尾交替输出,模拟警车上的灯的一个效果. ...

  3. linux pythonide_【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 使用的系统及软件 Ubuntu / windows Python 2.7 / python 3 Pycharm 2.6.3 Openjdk Postgresql 9.1 Virtua ...

  4. linux系统安装python集成环境_windows和linux中搭建python集成开发环境IDE

    使用的系统及软件 Ubuntu / windows Python 2.7 / python 3 Pycharm 2.6.3 Openjdk Postgresql 9.1 Virtualenv Virt ...

  5. 使用IntelliJ IDEA 13搭建Android集成开发环境(图文教程)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. 如何搭建java web环境_搭建java WEB开发环境和应用

    搭建java WEB开发环境和应用 更新时间:2009年06月07日 02:28:56   作者: 使用Tomcat服务器,使用DBCP数据源搭建Web开发环境 一 使用Tomcat服务器,使用DBC ...

  7. OpenHarmony编译构建系统详解,从零搭建windows下开发环境,巨方便!

    自从OpenHarmony更新了dev-tool,就可以在windows下构建鸿蒙(轻量型)系统了,这对于进行MCU开发的朋友们,学习鸿蒙OS会友好许多!我们可以更快的构建出系统,方便快速学习和验证. ...

  8. Eclipse和PyDev搭建完美Python开发环境(Windows篇)(转)

    摘要:本文讲解了用Eclipse和PyDev搭建Python的开发环境. 十一长假在家闲着没事儿,准备花点时间学习一下Python. 今儿花了一个下午搭建Python的开发环境,不禁感叹----开源的 ...

  9. Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境

    Eclipse 3.5 Classic+Tomcat 6.0+MySql 5.5搭建java web开发环境 对于初学者来说,如果没有接触过java web开发的话,搭建开发环境将是一个门槛.以前一直 ...

最新文章

  1. SQL Server(五)——常用函数
  2. 【神经网络】(6) 卷积神经网络(VGG16),案例:鸟类图片4分类
  3. android 8.0以后(sdk26)启动前台服务的问题探究
  4. shell 中引用参数总结
  5. PTGAN:针对行人重识别的生成对抗网络 | PaperDaily #36
  6. 第一阶段:Java基础之控制结构
  7. 第10章 32 位 Intel 微处理器编程架构
  8. mac 安装nodejs_阿里开源——用于前端和nodejs的轻量级任务管理和构建工具Dawn
  9. c语言判断字符是汉字,c语言里面判断字符是否为汉字
  10. 联机手写汉字识别,基于新型RNN网络结构的方法
  11. mysql 运行 compile_install mysql by compile(通过编译安装mysql)
  12. 关于在自己的程序中使用其它窗口的菜单
  13. Centos7.2下安装redis通用键值命令
  14. 怎么确定服务器是否支持ipmi,如何获取服务器的IPMI地址?
  15. android apk获取系统签名
  16. 基于Spring Boot的微生活的设计与实现
  17. SpringMVC入门案例【三层架构和MVC、SpringMVC的概述和入门程序】(超详细)
  18. spire.doc 让java操作word文档更简单优雅
  19. 在电脑上怎么做判断题打√或x_电脑基础知识竞赛试题
  20. python pdf脚本之家_Python实现简单拆分PDF文件的方法

热门文章

  1. java软件测试方法有哪些方法有哪些_如何才算掌握Java
  2. ssh linux mysql 乱码_JAVA ,SSH中文及其乱码问题的解决 6大配置点 使用UTF-8编码
  3. Pycharm 配置 Anaconda中解释器
  4. C++类模板(二)用类模板实现可变长数组
  5. C语言 NULL与0 对应的地址
  6. tf.dtypes.cast
  7. k-means 算法
  8. python的openpyxl库如何读取特定列_Excelize 2.3.2 发布,Go 语言 Excel 文档基础库,2021 年首个更新...
  9. 重温强化学习之基于模型方法:动态规划
  10. 强化学习(四)---基于模型动态规划问题