根据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. 【如皋OJ】1127:正整数N转换成一个二进制数

    1127: 正整数N转换成一个二进制数 时间限制: 1 Sec  内存限制: 128 MB提交: 85  解决: 59[提交] [状态] [讨论版] [命题人:zhuzhigang] 题目描述 输入一 ...

  2. python列表的基础操作

    Operation Result Trans x in s True if an item of s is equal to x, else False x值是否在s列表中 x not in s Fa ...

  3. bootstrap 常用class

    导航中的折叠菜单 collapse 手机端折叠 navbar-collapse 电脑端展开 navbar-inverse 反色 navbar-default 默认的nav风格 sr-only 专门给屏 ...

  4. for update 与where current of的问题

    在刚学oracle时一直不明白for update 的作用,今天考试又遇到郁闷半天,所以加以整理. 一: 1>首先for update是对表的行进行锁定.锁定就好比我们学java Thread那 ...

  5. cesium 拾取模型表面的坐标

    scene = viewer.scene;var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);handler.setInput ...

  6. Python的迭代器和生成器

    列表生成式 列表生成式可以快速创建list. >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100] ...

  7. C# 使用NPOI 操作Excel

    首先 Nuget 引入NPOI 1.读取Excel /// <summary> /// 读取Excel数据 /// </summary> public static void ...

  8. Hexo+Github博客最简教程-Dockerfile自动搭建

    闲谈 拿出你的气质,打开你的电脑,借你半小时搭建好属于你的hexo博客,小生用dockerfile自动帮你搭建好:你只需要在你的mac或linux或windows上提前把docker安装好,如何安装不 ...

  9. mass

    @python青岛qq群 1.爬取豆瓣,登录一次爬取后再循环就退出登录,抓不到了: 2.用requests.session试试,只要session对象不释放,就能记住登录状态的cookie: 3.se ...

  10. djiango 虚拟环境与项目创建

    建立虚拟环境 一,查看有那些虚拟环境 :workon 二,创建虚拟环境:mkvirtualenv -p/usr/bin/python3 django(p后面是路径) 三,进入虚拟环境:workon d ...