根据https://blog.csdn.net/abc997995674/article/details/80353410整理

@ModelAttribute 可以用在方法、方法参数上,也可以和@requstmapping  一起2019-03-31使用放在方法上。放在方法上分返回void 和有返回值,有@ModelAttribute("key")形式。@ModelAttribute可以用来更新数据库行(先把原先数据行存在model中,再更新---机制是先存值再更新)

maven 包含本地仓库、第三方仓库和中央仓库。

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>添加这一个依赖就可以自动引入其他所有的spring运行环境相关jar和springmvc运行相关jar,不用一个一个的引入,很好的处理方式。

1、springmvc的基本配置

spring容器是springmvc容器的父容器,父容器可以看到子容器的Bean,子容器中不能看到父容器中的Bean。如果两个容器都配置了包扫描,会有同一个bean被创建两次的情况。最常用的解决方案就是在配置包扫描是进行过滤:
在springmvc配置文件中配置只扫描@Controller注解,spring容器配置排除扫描@Controller注解。

执行过:根据包扫描<context:component-scan  和@controler确定作为控制器的类,再根据@requstmapping形成对应映射路径处理每一个请求,最后根据页面解析器<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">的配置返回对应视图。

2、处理器向页面返回参数可以通过ModelAndView、Model、ModelMap、Map和HttpServletRequest实现,很多文章说到ModelAndView只能通过在 方法中new的方式实现,实际上它和其它几个一样,也可以通过放在方法参数中实现,在功能中在实现它的视图(view)就可以。

3、重定向(return “redirect:res”)/请求转发(return “forward:res”)

4、 springmvc+ajax+json 传参参考一下两篇文博文,https://www.cnblogs.com/qiankun-site/p/5774300.html  和 https://www.cnblogs.com/qiankun-site/p/5774300.html,个人理解设置contentType:'application/json;charest=utf8' 和 stringify(params) 和@RequestBody 用在传复杂对象(嵌套对象、json数组)的情景,一般(简单)对象不设置这三项也可以。

5、springmvc 默认实现了一些数据类型转换器,比如 string 转 Int 、date 、实体类等,我们可以利用converter、Formatter、PropertyEditor(https://blog.csdn.net/abc997995674/article/details/80384151)实现自定义转换器(自定义格式-->生成类型转换器-->绑定到DataBinder,注意加注解@InitBinder("params"))。

6、springMVC结合ajax时在方法上加@ResponseBody,该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区,所以也可以不用@ResponseBody直接利用response的write方法实现返回数据。前端有三种传值方式(键值对、对象、JSON.stringify({key1:value1,key2:value2...})),当前端使用get方式传值时,后台都可以获取到数据但要注意乱码问题(get方式传数据出现中文乱码是因为get使用的ASCLL编码)。使用post时前两种都要和contentType:”application/x-www-form-urlencoded”结合使用后台才能获取到值但要注意乱码问题,第三种要结合contentType:”application/json; charset=utf-8”和@RequestBody使用不会出现乱码问题。

7、上传下载,上传文件时要在springMVC中配置<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">必须配,DispatcherServlet经过一系列解析最后在controller中利用MultipartFile file接受文件参数。使用ResponseEntity<byte[]>完成文件下载,记得设置"Content-Disposition","attachment;filename=filename"请求头,浏览器才能认得这是一个下载。也可利用@ResponseBody+返回字节数组(原始方式)实现。

8、静态资源处理,使用<mvc:default-servlet-handler />将请求交给容器(tomcat)默认的servlet处理,再配置<mvc:annotation-driven />处理默认servlet无法处理的请求。也可以利用<mvc:resources />将静态资源的处理交给SpringMVC自己处理。

9、springMVC利用HiddenHttpMethodFilter将post请求(带_method参数)解析成put和delete请求 支持rest风格。

10、配置<mvc:view-controller path="/hello" view-name="hello"></mvc:view-controller>不经过controller直接转发到目标页面。

11、JSR 303 是Java为Bean数据合法性校验提供的标准框架,在bean上绑定校验规则(@NotNull、@Max等)。步骤:1、引入jar包;2、配置<mvc:annotation-driven/>会默认装配LocalValidatorFactoryBean

3、在bean上加对应验证规则;4、在controller验证对象上加@Valid注解和保存校验结果的对象(BindingResult或Errors),返回错误信息会保存到默认模型中。

12、拦截器,springMVC提供抽象类实现public abstract class HandlerInterceptorAdapter implements HandlerInterceptor,多个拦截器执行时三个方法的执行顺序以栈结构执行顺序

  (prehander->controller->posthander->viewResover->afterCompletion),需要配置<mvc:interceptors>才能使用。可以使用 <mvc:interceptor>、<mvc:mapping path="" />、<mvc:exclude-mapping path="" />来配置拦截器的作用路径。 能使用servlet规范中的过滤器Filter实现的功能就用Filter实现,因为HandlerInteceptor只有在Spring MVC环境下

  才能使用,因此Filter是最通用的、最先应该使用的。如登录这种拦截器最好使用Filter来实现。

Spring MVC随笔记录的更多相关文章

  1. Spring MVC 配置记录

    目录 1.从pom.xml配置Maven文件开始 2.web.xml 3.springmvc-config.xml 4.controller 使用 idea 编辑器 + Maven + spring ...

  2. spring mvc随笔

    一.SpringMvc学习笔记1.使用SpringMvc时需在web.xml文件中添加配置 <servlet> <servlet-name>springMVC</serv ...

  3. spring cloud 随笔记录(1)-

    最近随着微服务的火热,我也开始对我服务进行了解了  毕竟程序员这一行需要及时更新自己的技能,才能更好的生存. 我理解的微服务  项目由多个独立运行的程序组成,每个服务运行在自己的进程中,服务间采用轻量 ...

  4. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

    java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...

  5. spring mvc 通过拦截器记录请求数据和响应数据

    spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种: 1:过滤器 2:HandlerInterceptor拦截器 3:Aspect接口控制器 但是就我个人所知要记录返回的数据 ...

  6. 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题

    Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...

  7. 从零开始学 Java - 搭建 Spring MVC 记录云创的日子 第一章

    2017年11月29日 来到新项目,需要用到Spring MVC ,那么我就开始记录我这次的学习. Spring MVC 框架是围绕一个 DispatcherServlet 来设计的,这个 Servl ...

  8. Spring MVC接收参数(Map,List,JSON,Date,2个Bean)(记录一次面试惨状)

    题目Spring MVC 接收参数 MapListDate2个BeanJSON Spring MVC接收参数 -Map Spring MVC接收参数 -List Spring MVC接收参数 -dat ...

  9. Spring Mvc返回html页面404错误解决记录--转载

    原文地址:http://53873039oycg.iteye.com/blog/2061992 以前使用Spring Mvc时候都是返回jsp页面或者ftl页面,昨天想返回html页面,spring- ...

随机推荐

  1. 无需脑图 无需思维导图 看Word大纲视图

    大纲视图可以帮助我们大纲视图可帮助您管理文档的结构和标题,就像现在的脑图,经过我的使用后,可以说Word的分级功能非常强大,只恨当时理解的不够,误会了Word.   当我们决定写一个文档的时候,第一步 ...

  2. rxjava&retrofit请求直接返回string

    1.添加gradle依赖: compile com.squareup.retrofit2:converter-scalars:2.0.0' 2.更换转换器 mRetrofit = Retrofit.B ...

  3. Go语言操作MySQL数据库

    Go语言操作MySQL数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用 ...

  4. Egret飞行模拟-开发记录01

    1.项目结构简介 1.1 index.html:应用入口文件,我们可以在这里面配置项目的旋转缩放模式背景颜色等. 1.2 egretProperties.json:这个文件里面进行项目配置,包括模块和 ...

  5. docker 删除指令

    杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器 docker rm $(docker ps -a -q) 删除所有未打 dangling ...

  6. docker学习记录

    Container 容器是一种基础工具, 泛指任何容纳其他物品的工具, 可以部分或者完全封闭,被用于容纳,储存, 运输物品, 物体可以放置在容器中, 而容器可以保护内容物 1 Docker Objec ...

  7. mpvue

    使用mpvue开发小程序 首先安装 我们使用@vue/cli 无法使用vue init 可以全局安装一个@vue/cli-init npm install -g @vue/cli-init 然后初始化 ...

  8. 分析RedisRDB和AOF两种持久化机制的工作原理及优劣势

    一.RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only(追加)的模式写入一个日志文件中,在redi ...

  9. 修改GIT密码

    修改GIT本地密码 控制面板->用户账户和家庭安全->凭证管理器->普通凭证:git:hhtp://*****

  10. 去掉点击a标签时产生的虚线框

    1.直接给a 标签添加属性:onfocus="this.blur()" 即可 For Example: <a onfocus="this.blur()" ...