Spring MVC随笔记录
根据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随笔记录的更多相关文章
- Spring MVC 配置记录
目录 1.从pom.xml配置Maven文件开始 2.web.xml 3.springmvc-config.xml 4.controller 使用 idea 编辑器 + Maven + spring ...
- spring mvc随笔
一.SpringMvc学习笔记1.使用SpringMvc时需在web.xml文件中添加配置 <servlet> <servlet-name>springMVC</serv ...
- spring cloud 随笔记录(1)-
最近随着微服务的火热,我也开始对我服务进行了解了 毕竟程序员这一行需要及时更新自己的技能,才能更好的生存. 我理解的微服务 项目由多个独立运行的程序组成,每个服务运行在自己的进程中,服务间采用轻量 ...
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...
- spring mvc 通过拦截器记录请求数据和响应数据
spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种: 1:过滤器 2:HandlerInterceptor拦截器 3:Aspect接口控制器 但是就我个人所知要记录返回的数据 ...
- 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题
Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...
- 从零开始学 Java - 搭建 Spring MVC 记录云创的日子 第一章
2017年11月29日 来到新项目,需要用到Spring MVC ,那么我就开始记录我这次的学习. Spring MVC 框架是围绕一个 DispatcherServlet 来设计的,这个 Servl ...
- Spring MVC接收参数(Map,List,JSON,Date,2个Bean)(记录一次面试惨状)
题目Spring MVC 接收参数 MapListDate2个BeanJSON Spring MVC接收参数 -Map Spring MVC接收参数 -List Spring MVC接收参数 -dat ...
- Spring Mvc返回html页面404错误解决记录--转载
原文地址:http://53873039oycg.iteye.com/blog/2061992 以前使用Spring Mvc时候都是返回jsp页面或者ftl页面,昨天想返回html页面,spring- ...
随机推荐
- 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
前两天处理过一个故障,是S7-200 Smart与V20的USS通讯,设备厂家在程序里面利 用USS_RPM _R程序循环轮询5个V20设备读取频率和电流值等信息. 图 USS_RPM_R读取信息 上 ...
- 【CentOS】设置定时执行任务
1.Crond服务启动状态确认 service crond status crond (pid ) を実行中... 2.追加新的执行任务 crontab -e #Ansible: dnsmasq fo ...
- 搭建vsftpd服务
配置文件 anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_ ...
- msf help.
root@Debian:~# msfconsole [-] ***rtiNg the Metasploit Framework console...- [-] * WARNING: No databa ...
- logging模块初识
日志级别 import logging logging.debug("debug message")logging.info("info message")lo ...
- java.lang.Long 类源码解读
总体阅读了Long的源码,基本跟Integer类类似,所以特别全部贴出源码,直接注释进行理解. // final修饰符 public final class Long extends Number i ...
- Jq写个联级菜单
这个效果很好看,Jq很容易实现: $(document).ready(function(){ $('.menu li').hover(function(){ $(this).children('ul' ...
- RAND函数和SRAND函数
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数) 表头文件: #include<stdlib.h&g ...
- java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离
1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...
- .net core下载文件
上传的文件是在wwwroot下 通过保存的路径跟文件名称完成下载 public IActionResult DownloadFile() { var filePath = "/Upload ...