当前位置:首页 > Java技术 > SpringMVC理解

SpringMVC理解

2022年11月09日 16:58:12Java技术8

SpringMVC 的简介与运行原理如下:

Spring MVC 中的MVC (modal、view、controller)分别是 模型、视图、控制器

Spring的模型-视图-控制器(MVC),该框架是围绕一个DispatcherServlet来设计的,这个DispatcherServlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、等,甚至还能支持文件上传等功能。

springMVC的执行流程如下:

SpringMVC理解 _ JavaClub全栈架构师技术笔记

 

1. 客户端发起请求到前端控制器(DispatcherServlet)

2. 前端控制器请求处理器映射器(HandlerMapping)查找Handler。(可以根据xml配置、注解的方式进行查找)

3. 处理器映射器向前端控制器返回Handler

4. 前端控制器调用处理器适配器(HandlerAdapter)去执行Handler

5. 处理器适配器执行Handler

6. Handler执行完成后给适配器返回ModelAndView

7. 处理器适配器向前端控制器返回ModelAndView

8. 前端控制器请求视图解析器(ViewResolver)进行视图解析

9. 视图解析器向前端控制器返回view

10. 前端控制器进行视图渲染

11. 前端控制器向用户响应结果

(总之,dispatcherServlet就相当于中央处理器,大脑一样,接收请求,做发出请求什么的)

MVC组件:

前端控制器DispacherServlet:

      接收请求,相应结果,相当于转发器,中央处理器,减少其他组件的耦合度

处理器映射器HandlerMapping:

      根据请求的url查找相应的Handler

Handler处理器:

      是项目的controller,开发的时候,要按照HandlerAdapter开发,这样适配器才会去执行

处理器适配器HandlerAdapter:

      按照特定的规则执行Handler

视图解析器ViewResolver:

      根据视图的名称,解析成view

视图View:

      一个接口,实现类可以去支持不同类型(jsp...freemarker)

springMVC也有两种形式来实现。xml配置实现,或者通过注解的形式实现

web.xml

<!-- 配置前端控制器 -->
  <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/classes/config/springmvc_anno.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

默认去填写的路径去找Springmvc的配置文件,如果和web.xml同级,则直接写/web-inf/springmvc.xml。

<init-param>配置contextConfigLocation,配置映射器和处理器,如果不配置的话,默认加载的是web-inf下的名为:servlet名字-servlet.xml

 <!-- post请求乱码 -->
    <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> 
    </filter> 
    <filter-mapping> 
        <filter-name>CharacterEncodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
<error-page>
      <error-code>404</error-code>
      <location>/404.jsp</location>
    </error-page>

springMVC.xml

<!-- 开启注解扫描 -->
    <context:component-scan base-package="cn.com.mvc" />
    <!-- 处理器解析器和适配器 -->
    <mvc:annotation-driven />
    <!-- 视图解析器 -->
    <!-- 动态返回jsp路径(前缀+名称+后缀): /jsp/index+.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

然后在controller上加上注解标签@RequestMapping。定义了controller的方法对应的url。限制get和post请求的方法@RequestMapping(value="/queryUser",method={RequestMethod.POST,RequestMethod.GET,})Method默认不写的话,get和post都支持。@Controller方法的返回值作为方法参数的常见类型:基本类型,类类型,集合类型,request,response,session,Model

返回modelandView:addObject相当于setAttribute。setViewName设置jsp的名字,然后在视图解析器动态拼接。

SpringMVC理解 _ JavaClub全栈架构师技术笔记

返回String

  SpringMVC理解 _ JavaClub全栈架构师技术笔记

通过形参中的model,将数据回传给页面。

返回void

Return “ forward:update.action”

Return “ redirect:update.action”

Request.getRequestDispatcher(“/WEB-INF/jsp/update.jsp”).forward(request,respons)

如果参数为javabean,则需要控件的name和javabean中的name一致。

多删除的话,可以直接通过表单跳转,后台会自动用int[] userid 数组接收。

queryPojo 接收批量提交的信息,存储在itemList集合里。

后台可以用pojo的类去接收。条件:表单;控件name一致。

 

 

 

 

 

 

 

 

 

作者:黑色幽默ma
来源链接:https://blog.csdn.net/weixin_42412462/article/details/80920247

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68935.html

标签: SpringMVCSpring
分享给朋友:

“SpringMVC理解” 的相关文章

SpringBoot+Mybatis框架整合Shiro权限管理

SpringBoot+Mybatis框架整合Shiro权限管理

一、前言 ​ 之前曾分享过一个关于shiro的认证原理的文章,分享了一下shiro的认证流程与shiro中的名词解释,其实shiro作为一款轻量级框架,被应用在各种中小型及大型企业的登录认证和用户授权的模块,有小伙伴称,在用SpringBoot框架,之前用过xml方式进行配置shiro框架,...

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

代码示例 本文示例读者可以通过查看下面仓库的中的 alibaba/java/ParentClass.java : Github:https://github.com/JeffLi1993/java-core-learning-exam...

Spring Boot 整合 Log4j2 日志并压测性能

Spring Boot 整合 Log4j2 日志并压测性能

1/ Log4j2的性能测试从图中不难看出,在线程数为 2~16 之间,混合使用同步和异步的logger来打印日志,性能是最好的。2/ 目标混合 sync/async彩色日志分类输出到不同文件自动压缩日志文件并归档3/ 实现0x01 Maven 依赖 pom.xml<?xml ver...

SpringBoot 整合mapstruct|赶紧丢掉BeanUtils吧

SpringBoot 整合mapstruct|赶紧丢掉BeanUtils吧

代码已经上传到码云:https://gitee.com/lezaiclub/springboot-hyper-integration.git,欢迎白嫖 前言 在项目中,如果我们要遵循分层领域模型规约: 话,肯定避免不了在DTO、VO、BO、A...

Spring Boot WebFlux 集成 Mongodb 数据源操作

Spring Boot WebFlux 集成 Mongodb 数据源操作

WebFlux 整合 Mongodb 前言 上一讲用 Map 数据结构内存式存储了数据。这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作。 什么是 MongoDB ? 官网:https://...

Java回顾之Spring基础

Java回顾之Spring基础

这是针对Java进行回顾的一系列文章,这篇主要是和Spring基础相关。   第一篇:Java回顾之I/O   第二篇:Java回顾之网络通信   第三篇:Java回顾之多线程   第四篇:Java回顾之多线程同步   第五篇:Java回顾之集...

Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一、背景 大家都知道,Spring Framework 是 Java/Spring 应用程序跨...

spring boot随笔二

spring boot随笔二

pring Boot与日志(日志框架、日志配置) 1、市面上的日志框架JUL、JCL、Jboss-logging、logback、log4、log4j2、slf4j……    ...

( 十三 ) SpringBoot 【日志一】统一日志框架

( 十三 ) SpringBoot 【日志一】统一日志框架

( 十三 ) SpringBoot 【日志一】统一日志框架 ( 十三 ) SpringBoot 【日志一】统一日志框架     1、简介       在项目开发中,日志十分的重要,不管是记录运行...

spring结合Mybatis的框架搭建(一)

spring结合Mybatis的框架搭建(一)

一:前沿   2015年新年上班的第二天,第一天就打了一天的酱油哦,只是下午开始搭建自己毕业设计的框架,搭建的是spring+spring mvc+MyBatis的框架。今天遇到了一个问题,结果弄了我一天时间,所以啊,路还是的一步步的走,弄过了才知道是怎么回事。现在记载下这个问题...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。