SpringMVC入门与数据绑定(一)

简介: SpringMVC入门与数据绑定

一.Spring MVC初体验


从本节开始,我要学习在Spring生态体系中我们必须掌握的Web应用框架 Spring MVC。


1.Spring MVC 介绍


MVC在之前学习J2EE的时候已经了解过了。所谓MVC,是一种著名的架构模式(注意:不是设计模式)。


737c615cf0eb4ea4a049c869bfcb5e43.png


MVC的缩写是 Model-View-Controller首写字母的缩写。View视图是界面的部分,用于和用户进行交互,比如通过界面显示查询结果,提供表单接收用户的输入信息等。而后面的Model模型呢通常指的是我们的数据,放在java代码中,就是业务逻辑的部分。在MVC的设计理念中,如果视图中的比如某个表格中的数据来自于后端的model中,那并不是由视图主动地来通过java调用model中的某一个方法获取某一个数据,而是要通过控制器Controller,控制器Controller相当于是一个中介。控制器是整个MVC中最重要的部分,他的用途就是接收视图中所传过入的数据,然后再根据数据调用后端的业务逻辑得到结果,最后再通过控制器将后端的结果返回到视图中。也就是指视图和模型之间没有必然的连接关系。一切都是通过控制器来进行调用和返回的。其实,之前讲的Servlet就是用于开发控制器的技术,但是Servlet中提供的这些方法,使用起来有时候并不是这么方便。正是因为servlet在开发过程中有很多不方便的地方,所以spring这个机构就开发了Spring MVC,提供了简单的方式,帮我们快速的完成了web应用地开法。也就是说,作为spring mvc这个框架来说,他的主要用途就是帮我们简化web应用程序的开发。


2.Spring MVC简介


Spring MVC是Spring体系的轻量级Web MVC框架,他的主要作用就是用于替代传统的J2EE Servlet ,来让我们开发应用程序的时侯,更加的简单。


Spring MVC的核心Controller控制器,用于处理请求,产生响应。 在MVC中,界面是不允许直接访问后端的Model业务逻辑的,而是通过Controller作为一个中间者来进行传递调用,这样做的最大好处就是让我们的界面与后端java业务逻辑有效的解耦,提高了程序的可维护新。


Spring MVC基于Spring IoC容器运行,所有对象被IoC管理。


Spring MVC 文档:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html


3.Spring 5.X 的版本变化


下面来说一说版本的变化,随着时代的发展,现在Spring已经是5.X的版本了。


Spring 5.X最低要求JDK8与J2EE 7 (即Servlet 3.1 / Tomcat 8.5+)


Spring 5.X 支持JDK8/9,可以使用新特性


Spring 5.X最重要的新特性是支持响应式编程 所谓响应式编程是基于事件来的,打个比方,如果你做过界面就知道,当点击一个按钮的时候,就会触发一个单机的响应事件。那么,如果放在我们后台的编程中,也有类似的理念,当触发了某一个事件的时候,自动的去执行某一段代码。这就是响应式编程。响应式编程是另外一种编程的风格,专注于构建对事件做出响应的应用程序。


4.Spring MVC环境配置


IDEA环境下创建Maven WebApp


创建一个空的Maven项目,项目名字为first-springtime,然后进行如下配置:

先添加Web模块(点加号前要先选中模块):


a1ab83cbe3e94a4cb6860bf099b24ce1.png

38da6f4bddbc472f8410081e5fd62952.png


下面在右侧对web进行配置:

1.首先要把web目录存储的地址改为main目录下,后面修改为src\main\webapp\WEB-INF\web.xml ,然后修改web项目的版本为4.0

注意:这里的版本一定要与JDK版本和tomcat版本相对应,不然运行会报错。

版本参考下图:


b7ba9c81b1d0490d9f4d6e8566b9ff6c.png

bbd2c84f329a40c79415f0effc1ec672.png


2.还要设置存储页面的目录放在src\main\webapp ,然后给应用设置一个应用上下文默认 / 即可。


f172d2e8e0154f639e162af8ba129291.png


创建Artifact


38326f5856b8444785bcbd9ab1aeead5.png

77a27420281c446ba367ac3a03192cfe.png


下面配置我就不多说了。


7eb21d473d3249d887f17a0e0b298dd1.png


上面只是对web项目做配置,下面才是对Spring MVC的环境配置


Spring MVC的环境配置


1.maven中导入spring-webmvc 这个依赖。


打开pom.xml,添加如下的依赖:


<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.3.13</version>
</dependency>


添加这个依赖后,会发现spring的一些底层包也会一同被加入。


d0139768350844a68c7c1d905ffc3b6a.png


2.web.xml中配置DispatcherServlet


DispatcherServlet是Spring MVC中最核心的对象,DispatcherServlet用于拦截Http请求,并根据请求的URL调用与之对应的Controller方法,来完成Http请求。

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载applicationContext.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <!--在web应用启动时,自动创建Spring IoC容器,并初始化DispatcherServlet-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--"/"代表要拦截所有的请求-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--将请求的字符集转换为UTF-8-->
    <filter>
        <filter-name>characterFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterFilter</filter-name>
        <!--对所有的请求进行过滤-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>


在resources目录下创建applicationContext.xml文件,下面是applicationContext.xml的初始配置:

applicationContext.xml


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.1.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
</beans>


3.在applicationContext.xml中,配置applicationContext的mvc标记


配置context:component-scan这个标签的作用:

在Spring IoC初始化过程中,自动创建并管理指定包及其子包中拥有@Repository 、@Service 、@Controller 、 @Component 这些注解的对象。


<!--自动扫描组件,自动扫描符合条件的bean-->
    <context:component-scan base-package="com.haiexijun.springmvc"></context:component-scan>
    <!--启用Spring MVC的注解开发模式-->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=utf-8</value>
                        <value>application/json;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--将图片/JS/CSS等静态资源排除在外,可提高执行效率-->
    <mvc:default-servlet-handler/>


4.开发Controller控制器

到这里,Spring MVC就基本上配置得差不多了,下面来开发一个Controller来体验一下。


在java下com.haiexijun.springmvc下面创建一个controller包,然后创建一个java类TestController。在类名上面添加**@Controller注解**。里面定义了一个test方法,这个方法返回一个SUCCESS字符串。那如何让这个方法处理请求呢?我们只需要在这个方法上添加上两个注解就可以了。@GetMapping() 注解用于将当前的方法绑定某个get类型请求的URL,比如@GetMapping("/t")则为绑定localhost/t这个URL,地址栏中输入localhost/t就能访问到这个方法了。@ResponseBody 注解作用是直接向响应输出字符串数据,不跳转页面。


package com.haiexijun.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
    @GetMapping("/t") //用于将当前的方法绑定某个get类型请求的URL,比如localhost/t
    @ResponseBody  //作用:直接向响应输出字符串数据,不跳转页面
    public String test(){
        return "SUCCESS";
    }
}


下面还要进行一项配置,把maven的依赖导出项目时加入到lib目录下:

全选中后,右键put进去。


39e3be0560804992a6f9175873946b9a.png

eecfb6dc60ec4582b1ed9d58cd196d59.png


运行启动。输入localhost:8888/t,成功打印SUCCESS


47ac20d3881a4ed58ec3e7faf5addf3e.png



相关文章
|
4月前
|
XML 前端开发 Java
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
|
JSON 前端开发 Java
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
112 0
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
这篇文章详细解释了在IntelliJ IDEA中如何使用Mute Breakpoints功能来快速跳过程序中的后续断点,并展示了如何一键清空所有设置的断点。
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
|
4月前
|
存储 前端开发 Java
SpringMVC入门到实战------1、SpringMVC简介
这篇文章是SpringMVC框架的入门介绍,阐述了MVC架构的概念和分层,解释了SpringMVC作为Spring家族的一部分在Web应用开发中的作用和重要性,并概述了SpringMVC的关键特点,包括与Spring IOC容器的无缝集成、基于Servlet的DispatcherServlet、全面的解决方案、代码简洁性、高内聚低耦合的组件化设计以及卓越的性能表现。
SpringMVC入门到实战------ 十一 拦截器的使用
这篇文章介绍了SpringMVC中拦截器的使用,包括拦截器的配置、拦截器的三个抽象方法`preHandle`、`postHandle`和`afterCompletion`的作用,以及多个拦截器的执行顺序和规则。
SpringMVC入门到实战------ 十一 拦截器的使用
|
4月前
|
JSON 前端开发 JavaScript
SpringMVC入门到实战------九 HttpMessageConverter @RequestBody 、@ResponseBody 、RequestEntity、ResponseEntity
这篇文章详细介绍了SpringMVC中的`HttpMessageConverter`接口及其相关的`@RequestBody`、`@ResponseBody`、`RequestEntity`和`ResponseEntity`注解和类型的使用,包括如何将请求体转换为Java对象、如何将Java对象转换为响应体、以及如何处理JSON和AJAX请求。
SpringMVC入门到实战------九 HttpMessageConverter @RequestBody 、@ResponseBody 、RequestEntity、ResponseEntity
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
4月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
4月前
|
前端开发
SpringMVC入门到实战------六、SpringMVC的视图。ThymeleafView、转发视图、重定向视图、视图控制器的使用详解
这篇文章详细介绍了SpringMVC中的视图类型,包括ThymeleafView、转发视图、重定向视图和视图控制器的使用,以及如何通过源码查看确定使用的视图渲染器类型。
SpringMVC入门到实战------六、SpringMVC的视图。ThymeleafView、转发视图、重定向视图、视图控制器的使用详解