返回顶部
首页 > 资讯 > 精选 >SpringMVC使用实例分析
  • 784
分享到

SpringMVC使用实例分析

2023-06-27 11:06:13 784人浏览 独家记忆
摘要

这篇文章主要介绍了springMVC使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springmvc使用实例分析文章都会有所收获,下面我们一起来看看吧。一丶SpringMVC概述Spring 为展现

这篇文章主要介绍了springMVC使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springmvc使用实例分析文章都会有所收获,下面我们一起来看看吧。

一丶SpringMVC概述

  • Spring 为展现层提供的基于 MVC 设计理念的优秀的WEB 框架,是目前最主流的 MVC 框架之一

  • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架

  • Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。

  • 支持 REST 风格的 URL 请求

  • 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性

二丶SpringMVC简单使用

1)在 web.xml 中配置 DispatcherServlet:

<!-- 配置 DispatcherServlet -->    <servlet>        <servlet-name>dispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->        <!--             实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.            默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml        -->        <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>dispatcherServlet</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>

2)加入 Spring MVC 的配置文件

<?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-4.0.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">    <!-- 配置自定扫描的包 -->    <context:component-scan base-package="cbuc.life.springmvc"></context:component-scan>    <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/views/"></property>        <property name="suffix" value=".jsp"></property>    </bean></beans>

3)编写处理请求的处理器,并使用@Controller 注解标识为处理器

@Controllerpublic class HelloWorldController {        @RequestMapping("/helloworld")    public String hello(){        System.out.println("hello world");        return "success";    }}

4) 编写视图 JSP

在/WEB-INF/views/目录下创建一个succes.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>    <h2>成功跳转页面</h2></body></html>

5)将项目运行起来访问 :localhost:8080/hellowoorld

三丶使用 @RequestMapping 映射请求

  • Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求

  • 在控制器的 定义及方法定义处都可标注

  • 类定义:提供初步的请求映射信息。相对于 WEB 应用的根目录

  • 方法:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB 应用的根目录

  • DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理 方法。

1)标准请求头

2)@RequestMapping

@RequestMapping 的valuemethodparamsheads  分别表示请求 URL请求方法请求参数请求头的映射条件,他们之间是 的关系,联合使用多个条件可让请求映射更加精确化。

    @RequestMapping(value = "testParamsAndHeaders",                    params = { "username","age!=10" },                    headers = { "Accept-Language=en-US,zh;q=0.8" },                    method = RequestMethod.POST)    public String test() {        System.out.println("test...");        return "success";    }

3)支持Ant 风格

  • ? :匹配文件名中的一个字符

/user/createUser?

匹配  /user/createUsera 或者 user/createUserb 等 URL

  • * :匹配文件名中的任意字符

/user@RequestMapping("/testPathVariable/{id}")public String test(@PathVariable("id") Integer id) {    System.out.println("id: " + id);    return "success";}复制代码

五丶REST风格



REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,  所以正得到越来越多网站的采用

示例

  • /order/1    HTTP GET得到 id = 1 的 order 记录

  • /order/1    HTTP DELETE删除 id = 1的 order 记录

  • /order/1    HTTP PUT更新 id = 1的 order 记录

  • /order    HTTP POST新增 一条order记录

六丶@RequestParam 绑定请求参数值

  • 在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法

  • value:参数名

  • required:是否必须;默认为 true,表示请求参数中必须包含对应的参数,若不存在,将抛出异常

@RequestMapping(value = "/testRequestParam")public String testRequestParam(        @RequestParam(value = "username") String username,        @RequestParam(value = "age", required = false, defaultValue = "0") int age) {    System.out.println("testRequestParam, username: " + username + ", age: " + age);    return "success";}

七丶@RequestHeader 绑定请求报头的属性值

@RequestMapping("/testRequestHeader")public String testRequestHeader(        @RequestHeader(value = "Accept-Language") String al) {    System.out.println("testRequestHeader, Accept-Language: " + al);    return "success";}

八丶@CookieValue 绑定请求中的 Cookie 值

@RequestMapping("/testCookieValue")public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {    System.out.println("testCookieValue: sessionId: " + sessionId);    return "success";}

九丶POJO 对象绑定请求参数值

@RequestMapping("/testPojo")public String testPojo(User user) {    System.out.println("testPojo: " + user);    return "success";}

十丶MVC 中Handler 方法可以接收的Servletapi 类型的参数

  • httpservletRequest

  • HttpServletResponse

  • HttpSession

  • Writer

  • java.security.Principal

  • Locale

  • InputStream

  • OutputStream

  • Reader

(推荐微课:Spring微课)

十一丶处理模型数据

1)ModelAndView

处理方法返回值类型为 ModelAndView时,方法体可通过该对象添加模型数据,ModelAndView中既包含视图信息,也包含模型数据信息

2)Map 及 Model

入参为  org.springframework.ui.Modelorg.springframework.ui.ModelMapjava.uti.Map 时,处理方法返回时,Map  中的数据会自动添加到模型中。

3)@SessionAttributes:

将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性(从session域中获取)

  • 若希望在多个请求之间共用某个模型属性数据,则可以在 控制器上标注一个 @SessionAttributes,Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。

  • @SessionAttributes除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中

1)@SessionAttributes(types=User.class): 会将隐含模型中所有类型为 User.class 的属性添加到会话中

2)@SessionAttributes(value={“user1”, “user2”}):会将隐含模型中对象名为user1user2 的属性添加到会话中

3)@SessionAttributes(types={User.class, Dept.class}):会将隐含模型中所有类型为 User.classDept.class 的属性添加到会话中

4)@SessionAttributes(value={“user1”, “user2”},  types={Dept.class}):会将隐含模型中对象名为user1user2 的属性和所有类型为 Dept.class 的属性添加到会话中

4)@ModelAttribute

方法入参标注该注解后, 入参的对象就会放到数据模型中

十二丶@ModelAttribute

  • 在方法定义上使用 @ModelAttribute 注解:Spring MVC在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法。

  • 在方法的入参前使用 @ModelAttribute 注解:

  • 可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参

  • 将方法入参对象添加到模型中

十三丶视图和视图解析器

  • 请求处理方法执行完成后,最终返回一个 ModelAndView  对象。对于那些返回 StringViewModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个  ModelAndView 对象,它包含了逻辑名模型对象的视图

  • Spring MVC 借助视图解析器(ViewResolver)得到最终的视图对象(View),最终的视图可以是 JSP,也可能是  excelJFreeChart等各种表现形式的视图。

  • 对于最终究竟采取何种视图对象对模型数据进行渲染,处理器并不关心,处理器工作重点聚焦在生产模型数据的工 作上,从而实现 MVC 的充分解耦。

1)视图

我们只需要实现View这个接口就可以自定义视图

示例
@Componentpublic class HelloView implements View{    @Override    public String getContentType() {        return "text/html";    }    @Override    public void render(Map<String, ?> model, HttpServletRequest request,            HttpServletResponse response) throws Exception {        response.getWriter().print("hello view, time: " + new Date());    }}@RequestMapping("/testView")    public String testView(){        System.out.println("testView");        return "helloView"; //这里返回的就是我们自定义的视图    }

2)视图解析器

  • SpringMVC 为逻辑视图名的解析提供了不同的策略,可以在 Spring WEB 上下文中配置一种多种解析策略,并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。

  • 视图解析器的作用比较单一,将逻辑视图解析为一个具体的视图对象

  • 所有的视图解析器都必须实现 ViewResolver 接口。

  • 程序员可以选择一种视图解析器或混用多种视图解析器。

  • 每个视图解析器都实现了Ordered接口并开放出一个 order 属性,可  以通过order 属性指定解析器的优先顺序,order    越小优先级越高

  • SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出 ServletException 异常

SpringMVC.xml中的配置

<!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/views/"></property>    <property name="suffix" value=".jsp"></property></bean><!-- 配置视图  BeanNameViewResolver 解析器: 使用视图的名字来解析视图 --><!-- 通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高 --><bean class="org.springframework.web.servlet.view.BeanNameViewResolver">    <property name="order" value="100"></property></bean>

关于“SpringMVC使用实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringMVC使用实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: SpringMVC使用实例分析

本文链接: https://lsjlt.com/news/309859.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringMVC使用实例分析
    这篇文章主要介绍了SpringMVC使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMVC使用实例分析文章都会有所收获,下面我们一起来看看吧。一丶SpringMVC概述Spring 为展现...
    99+
    2023-06-27
  • SpringMVC入门实例分析
    今天小编给大家分享一下SpringMVC入门实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • Springmvc应用Mongodb分页实现的示例分析
    这篇文章将为大家详细讲解有关Springmvc应用Mongodb分页实现的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于web应用来说分页显示数据是是最基本的功能,作为经常开发web应用的程序...
    99+
    2023-05-30
    springmvc mongodb
  • SpringMVC @RequestBody的使用分析
    这篇文章主要介绍“SpringMVC @RequestBody的使用分析”,在日常操作中,相信很多人在SpringMVC @RequestBody的使用分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spr...
    99+
    2023-06-25
  • Java SpringMVC数据响应实例分析
    这篇文章主要介绍“Java SpringMVC数据响应实例分析”,在日常操作中,相信很多人在Java SpringMVC数据响应实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jav...
    99+
    2023-06-29
  • SpringMVC初始化流程实例分析
    本文小编为大家详细介绍“SpringMVC初始化流程实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringMVC初始化流程实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.HttpServl...
    99+
    2023-07-02
  • SpringMVC视图和视图解析器实例分析
    这篇“SpringMVC视图和视图解析器实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringMVC视图和视图解...
    99+
    2023-07-02
  • SpringMVC执行步骤和使用Model的示例分析
    这篇文章主要为大家展示了“SpringMVC执行步骤和使用Model的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringMVC执行步骤和使用Model的示例分析”这篇文章吧。第一...
    99+
    2023-06-22
  • SpringMVC框架的示例分析
    小编给大家分享一下SpringMVC框架的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介SpringMVC采用模型(Model)-视图(View)-控...
    99+
    2023-06-02
  • WebSocket使用实例分析
    本文小编为大家详细介绍“WebSocket使用实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“WebSocket使用实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2024-04-02
  • CSS3使用实例分析
    这篇文章主要介绍“CSS3使用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3使用实例分析”文章能帮助大家解决问题。 1、前缀-webkit-(ch...
    99+
    2024-04-02
  • class使用实例分析
    这篇文章主要介绍“class使用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“class使用实例分析”文章能帮助大家解决问题。 看到class实际都是使用...
    99+
    2024-04-02
  • slot使用实例分析
    这篇文章主要介绍“slot使用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“slot使用实例分析”文章能帮助大家解决问题。   使用slot场景一:  ...
    99+
    2024-04-02
  • HTML使用实例分析
    本篇内容介绍了“HTML使用实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! HTML 标题 ...
    99+
    2024-04-02
  • ADO.NET使用实例分析
    本篇内容主要讲解“ADO.NET使用实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET使用实例分析”吧!用ADO.NET实例中的数据,不管是不是原创,都能够通过双面编程模型进行...
    99+
    2023-06-17
  • Proxy使用实例分析
    这篇文章主要讲解了“Proxy使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Proxy使用实例分析”吧!了解代理模式一个例子作为一个单身钢铁直男程序员,小王最近逐渐喜欢上了前端小...
    99+
    2023-06-27
  • 使用Vue3.0实例分析
    本篇内容介绍了“使用Vue3.0实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!初始化环境在前面的文章中,我们通过vite搭建了一个开...
    99+
    2023-06-27
  • awk使用实例分析
    本篇内容主要讲解“awk使用实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“awk使用实例分析”吧!awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析...
    99+
    2023-06-27
  • Docker使用实例分析
    今天小编给大家分享一下Docker使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、进入存放自己项目war的目录...
    99+
    2023-06-27
  • react使用实例分析
    这篇文章主要介绍“react使用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react使用实例分析”文章能帮助大家解决问题。为什么要引入 React在写 React 的时候,你可能会写类似...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作