springMVC

简介: @RequestMapping除了可以修饰方法,还可以修饰类,修饰方法时是提供详细的映射信息,修饰类时相当于WEB-INF的根目录

@RequestMapping


除了可以修饰方法,还可以修饰类,修饰方法时是提供详细的映射信息,修饰类时相当于WEB-INF的根目录


1.修饰方法




2.修饰类




@RequestMapping请求方式


如果时通过超链接的方式则韦get方式,表单一般为post




@RequestMapping请求参数(params),请求头(headers)


@RequestMapping支持通配符


@PathVariable   映射URL 绑定占位符 ,通过URL绑定到控制器@Controller中,@PathVariable在springMVC走向REST风格有里程碑的意义





HiddenHttpMethodFilter过滤器(资源表现层转化)


rest风格的URL


GET  获取资源


POST 新建资源


DELETE  删除资源


PUT 更新资源


@PathVariable 来获取资源



@RequestParam获取请求参数





  @RequestHeaher获取请求头(用得不多),用法同@RequestParam,作用是映射请求头信息


@CookieValue:获取Cookie值(了解,用得不多);


使用POJO对象绑定请求参数


因为在开发中不可能用request.getParameter()一个一个得获取请求参数,那样的话 成本太高,所以springMVC会按照请求参数和POJO对象进行匹配,还支持级联属性,





使用Servlet原生API作为参数


开发中难免会用到Servlet原生API,如HttpServletRequest,HttpServletResponse等





处理模型数据之ModelAndView(no success)


ModelAndView可以包含视图和模型


springMVC会把ModelAndView 的model放到请求域中



处理模型数据之Map(no success)



处理模型数据之SessionAttributes注解(把模型放在session中)


当某个属性需要共用时,就使用SessionAttributes,该注解只能放在类上面,不能放在方法上


如图同时放在请求域和session域中




@ModelAttribute注解  ***(和struts2的一个拦截器差不多)


有@ModelAttribute标记的方法,会在每个目标方法调用前先调用@ModelAttribute标记的这个方法(每个方法调用前都会


使用情景


  当我们修改某个表的时候,如果其中有一个字段不能修改(入驻时间这类),我们首先想到的是从表单输入这些字段,然后创建对象和这些表单输入的字段匹配,因为对象是新创建的,所以匹配的时候如果表单输入的和对象的属性匹配,则赋值,如果表单没有与对象对应的值,则为空,显然,如果这样的话,不是我们想要的,进行修改的话表单没有的值则为空,所以引入了@ModelAttribute注解,这样的话,当我们在输入表单的时候,如果某些字段不能修改,则使用@ModelAttribute注解,从数据库中获取对象的值(通过id),为空的则赋从数据库查询的值给它,


如下


没有使用@ModelAttribute注解,password为空






使用@ModelAttribute注解




@ModelAttribute原理


/*


*


*/


@ModelAttribute运行流程



@SessionAttributes这里有一个坑,会发生500错误**********



原因:


/*


*


*/


SpringMVC_视图解析流程分析


/*


*


*/


自定义视图

 

重定向


annotation-driven配置


 加了这个标签之后,会为我们注册三个bean,


分别是


RequestMappingHandlerMapping,


RequestMappingHandlerAdapter,


ExceptionHandler,


使得我们的@RequestMapping,@RequestParam,@ExceptionHandler,@DateTimeFormat等这些注解生效,在之前这些都得手动配置才行。


如果使用了<mvc:view-controller>标签,必须添加annotation-driven标签


<mvc:view-controller>


一般springmvc都是经过Controller,但是当我们不想经过Controller,而是直接访问视图的时候。就可以通过mvc:view-controller,使用<mvc:view-controller>时必须配置annotation-driven,不然会报404错误,


springMVC数据绑定流程分析


如:当我们从表单输入一个日期,这个日期从白哦但输入时是一个字符串,然而它所对应的实体类类型时date,所以在传输过程中要进行数据转换,流程为:




SpringMVC_自定义类型转换器


当我们需要将数据转换成另一种类型的时候,就用到数据转换,但是springMVC给我们封装了很多类型转化,所以这个方法了解了解就行,具体用到再看


SpringMVC_InitBinder注解


/""


"


""/


SpringMVC_数据的格式化


如日期的转化,float转化等,当从表单输入数据时,日期和浮点型是不能被正常转化的(会发生400错误),所以需要在对象的实体类属性上加注解


目录
相关文章
|
Java Maven
如何在IDEA上创建一个Maven项目2022版
如何在IDEA上创建一个Maven项目2022版
375 0
|
Java PHP
深入理解PHP中的垃圾回收机制
深入理解PHP中的垃圾回收机制
176 3
|
安全 网络协议 网络安全
不限量免费申请SSL证书
JoySSL提供不限量免费SSL证书申请服务。用户需访问其官网注册账号并填写注册码230922,选择证书类型,填写申请信息,验证域名所有权,下载并安装证书。证书有效期较短,需定期检查和更新,确保网站安全性。私钥需妥善保管,防止泄露。
|
安全
怎么解决网站显示该内容被禁止访问
如果您的网站首页或者内页面突然出现“该内容被禁止访问”的提示,那么说明你的网站被黑了,被黑什么了?我找找找,也没找出什么问题,到底是怎么回事,最终如何解决呢?下面,Sine安全老于为大家一一解惑。 内容被禁止访问的原因: 当出现这种提示时,说明您正在使用阿里云或者他们旗下万网的主机空间,阿里云是我国规模较大的云计算提供商,旗下的安全、可靠、稳定、高效的云主机,虚拟主机,域名等产品为众多客户所青睐。
6921 0
|
JavaScript 前端开发
Vue中JSX的基本用法
Vue中JSX的基本用法
243 1
|
Rust JavaScript 前端开发
Rust 枚举和模式匹配
Rust 枚举和模式匹配
|
数据采集 存储
Tuple
Tuple
159 0
|
监控 大数据
揭秘:蚂蚁金服bPaaS究竟是什么?
分布式金融核心套件,蚂蚁金服bPaaS究竟是什么东东?
6390 0
|
SQL Oracle 关系型数据库