Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境

简介: Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境

Spring MVC 概述


20170910135423563.jpg正如其名称所述,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


20170910124946338.jpg


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

20170910125249890.png

输入工程包名称



20170910125408777.jpg

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


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


如果碰到以下错误:


20170910130004357.png


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

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


20170910130207299.png


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


20170910130252051.png

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


分析IDE建立的工程

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

20170910131858711.png


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

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


Maven dependencies configuration


20170910132017801.jpg


生成的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:


20170910132547053.png


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

servlet-context.xml:


20170910133403668.jpg

该文件由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)


20170910133639833.png


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


示例controller: HomeController.java

20170910133742434.jpg


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


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

model.addAttribute(“serverTime”,formattedDate);


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


示例JSP view: home.jsp


20170910134020473.png

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

The time on the server is ${serverTime}.


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


Deploying and running the application

我们不到到tomcat中

20170910134215354.jpg

启动:


20170910134316125.jpg


访问

http://localhost:8080/springmvc/


20170910134424185.jpg

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


20170910135328241.jpg

相关文章
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
1128 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
1768 0
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
1155 0
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = &quot;/test&quot;, produces = &quot;application/json; charset=UTF-8&quot;)`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
1219 0
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
746 0
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
1037 0
|
IDE 开发工具
TeaScript IDE集成开发环境
TeaScriptIDE 是一款功能丰富的集成开发环境,包含代码编辑器(语法着色提升可读性)、调试器(显示运行结果)、内置函数帮助文档、打包功能(生成单个可执行文件)以及保存/恢复最近文件的功能。其界面由菜单栏、工具栏、多标签页编辑窗口、控制台输出窗口和状态栏组成,支持快速命令调用、程序运行结果显示及错误信息提示。退出时会自动保存状态,下次启动可继续编辑上次打开的文件。
426 15
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
507 0
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
545 0