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)

相关推荐
呼哧呼哧.2 小时前
Spring的核心思想与注解
数据库·sql·spring
Chen-Edward3 小时前
有了Spring为什么还有要Spring Boot?
java·spring boot·spring
云创智城-yuncitys3 小时前
SpringCloud 架构在智慧交通路侧停车系统中的实践:从技术落地到城市级服务升级
spring·spring cloud·架构·智慧城市·停车系统·充电系统源码
陈小桔4 小时前
idea中重新加载所有maven项目失败,但maven compile成功
java·maven
小学鸡!4 小时前
Spring Boot实现日志链路追踪
java·spring boot·后端
xiaogg36784 小时前
阿里云k8s1.33部署yaml和dockerfile配置文件
java·linux·kubernetes
逆光的July4 小时前
Hikari连接池
java
微风粼粼5 小时前
eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
java·ide·eclipse
番茄Salad5 小时前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
天若有情6735 小时前
Spring MVC文件上传与下载全面详解:从原理到实战
java·spring·mvc·springmvc·javaee·multipart