SpringMVC从入门到上手-全面讲解SpringMVC的使用.

一、springmvc介绍

MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分:

****Model(模型):****指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中,JavaBean对象,业务模型等都属于Model。

****View(视图):****用于展示模型中的数据的,一般为jsp或html文件。

****Controller(控制器):****是应用程序中处理用户交互的部分。接受视图提出的请求,将数据交给模型处理,并将处理后的结果交给视图显示。

二、springmvc使用

2.1、创建maven项目

创建maven工程,catalog选择Internal.Archetype选择webapp.

Catalog 选择 Internal:表示你在使用本地仓库或本地配置的 Archetype。

Archetype 选择 webapp:表示你正在创建一个基于 Servlet/JSP 的 Web 应用项目。

2.2、引入依赖

XML 复制代码
<!-- 处理 Web 请求、展示数据、以及管理页面的核心模块。 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.16</version>
</dependency>

<!-- 构建 Web 应用和服务所需的核心功能,主要用于与 Servlet 容器的交互。 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

<!-- 处理 JSON 数据和 Java 对象之间转换的核心库 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.2</version>
</dependency>
<!-- JSP 支持 -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
</dependency>

2.3、配置前端控制器web.xml

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">
    <display-name>springmvc_demo</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>characterEncodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--配置 SpringMVC 的前端控制器-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

2.4、增加springmvc配置文件

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--自动扫描包-->
    <context:component-scan base-package="com.cn.springmvc.controller"/>

    <!--开启 MVC 的注解驱动-->
    <mvc:annotation-driven/>

    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/" />
        <property name="suffix

2.5、创建controller

编写一个测试方法.

2.6、启动

idea配置tomcat作为应用服务器,来运行maven项目.

三、请求参数绑定

springmvc是基于方法设计的框架,所以对应的请求url中对应的参数在方法上进行接收.

当请求的参数名和处理器参数名称一致时会将请求参数与处理方法参数进行绑定.

通过浏览器请求接口/testDemo/login?username=root&password=123 完成参数绑定.

创建jsp页面,通过jsp中的form表单提交参数.

四、实体类参数绑定

4.1、简单绑定

当提交的参数过多或form表单内容很多时,可以使用实体类接收数据,要求form表单中的name属性与实体类中的属性名一致.

4.2、嵌套绑定

在实体类中将第二个对象当作属性进行嵌套.

在浏览器中通过连接/testDemo/nestingQuery?username=张三&phone.name=iphone14ro完成参数传递.

五、数据返回

5.1、 ModelAndView

ModelAndView主要有两个作用,设置转向地址和传递控制方法处理结果数据到结果页面.

5.2、 Model / M odelMap

Model本身不能设置页面跳转的url地址,可以通过控制器方法的返回值设置跳转url地址.

ModelMap对象主要用于传递控制方法处理的数据到结果页面,类似request对象的setAttribute方法的作用.

六、高级参数绑定

6.1、S ervlet Api

在controller方法形参上可以定义request和response.使用request或response指定响应结果.

6.1.1 、forward

6.1. 2、redirect

6.2、数组

6.3、List

注意:接收List参数时不可以直接在Controller处理方法上进行接收,采用实体类中包装List的方式进行List参数接收。

七、Springmvc对json的支持

7.1、@RequestBody

@RequestBod用于读取请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。


7.2、@ResponseBody

@ResponseBody用于将conotroller的方法返回对象,通过HttpMessageConverter接口转换为指定格式的数据如:json、xml等,通过response相应给客户端。

八、URL占位符

@RequestMapping支持url占位符{xxx}传参方式,通过在方法中使用@PathVariabe("xxx")获取占位符的值。通过地址/json/getUrlPathVariable/2访问获取。

注意:

  1. {xxx}要和@PathVariabe("xxx")内的key一致而不是和参数名一致。
  2. Url中如果存在占位符必须传至且数据类型需要一致。

九、@RequestParam

@RequestParam注解常用于处理简单数据类型的参数绑定。

value:请求参数名

required:ture/fales是否必填,默认是true

defaultValue:默认值

注意:

  1. 请求中的参数名必须和@RequestParam中的value一致而不是和参数名一致。
  2. 如果设置了默认值,则可以不传入对应参数,即使required=true也可以不传入对应参数.

通过以上内容便可轻轻松松使用SpringMVC.是不是超级简单.有任何问题欢迎留言哦!!!

重点!重点!重点!

遇到问题不用怕不如来我的知识库找找看,也许有意想不到的收获!!!

易网时代-易库资源-易库教程:.NET开发、Java开发、PHP开发、SqlServer技术、MySQL技术-开发资料大全-易网时代-易库资源-易库教程 (escdns.com)

相关推荐
Algorithm157627 分钟前
谈谈接口和抽象类有什么区别?
java·开发语言
细心的莽夫1 小时前
SpringCloud 微服务复习笔记
java·spring boot·笔记·后端·spring·spring cloud·微服务
264玫瑰资源库2 小时前
问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
java·开发语言·前端·游戏
pwzs3 小时前
Java 中 String 转 Integer 的方法与底层原理详解
java·后端·基础
东阳马生架构3 小时前
Nacos简介—2.Nacos的原理简介
java
普if加的帕3 小时前
java Springboot使用扣子Coze实现实时音频对话智能客服
java·开发语言·人工智能·spring boot·实时音视频·智能客服
王景程3 小时前
如何测试短信接口
java·服务器·前端
zhang23839061544 小时前
IDEA add gitlab account 提示
java·gitlab·intellij-idea·idea
牛马baby4 小时前
Java高频面试之并发编程-07
java·开发语言·面试