MVC笔记整理
##SpringMVC笔记整理 MVC部分组件: 1,前端控制器(dispatcherServlet) 2,处理器映射器(handlerMapping), 3,处理器(handler), 4,视图解析器(view Resolver), 5,视图(view) 其执行过程大致为: 环境搭建: web.xml:用spring提供的dispatcherServelt类配置servlet xml配置文件:1,注解扫描-------context:component-scan 2,视图解析器------bean对象,其类为InternalResourceViewResolver(其用将返回的字符串转换成相应的文件名,并跳转 3,开启springMVC框架注解的支持---------------mvc:annotation-driven(配置该标签,将自动加载处理器适配器和处理器映射器) 请求参数的绑定: 1,请求参数的绑定说明: 1,绑定机制 1,表单提交的数据都是k=v格式的,如usename=haha&password=123 2,SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制中方法的参数进行绑定的 3,要求:提交表单的name和参数名称是相同的 2,支持的数据类型 1,基本数据类型和字符串类型 2,实体类型(javaBean) 3,集合数据类型(list,map集合等) 2,基本数据类型和字符串类型 1,提交表单的name和参数的名称是相同的 2,区分大小写 3,实体类型(javaBean) 1,提交表单的name和javaBean中的属性名称须一致(注意方法的形参需是对应的实体类型) 2,如果一个javaBean类中包含其他引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name(其中address是所包含的引用类型的变量名) 4,给集合属性数据封装 1,如果javaBean包含集合类型,那么表单的name属性需要编写成:集合类型[下标].属性,例如:list[0].name(MVC会将name属性封装到相应的JavaBean对象,然后将对象添加到list中) 注解: 1,@RequestMapping( 注意以下四个属性只要出现2个或2个以上时,他们之间关系是与的关系) 作用:用于建立请求URL和处理请求方法之间的对应关系, 位置:可放在类和方法上,区别为一级路径和二级路径 属性: 1,value:用于指定请求的URL和path属性一致 2,method:用于指定骑牛的方式,如:method={RequestMethod.post},则只能接受post请求方式的 3,params:用于限制请求参数的条件,他支持简单的表达式,要求请求参数的key和value必须和配置一致 如:params={"accountName"},表明请求参数必须有accountName params={"money!100"}表明其你去参数中的money不能是100 4,headers:用于指定限制请求消息头的条件,即发送消息中必须包含该请求头,和method用法类似 2,@RequestParams(形参前) 作用:把请求中指定名称的参数给控制器中的参数赋值(常用于解决表单与形参名称不一致的情况) 属性: 1,value:请求参数中的名称,name属性作用和value一致 2,required:请求参数中是否必须提供此参数,默认值为true,表示必须提供,如果不提供则报错 3,@RequestBody(形参前) 作用:用于获取请求体内容,直接使用得到的是key=value&key=value....结构的数据 属性: 1,required:是否必须有请求体,默认值是true,当取值为true时,get请求方式会报错,如果取false,get请求得到的是null。 4,@PathVarible(形参前) 作用:用于绑定URL的占位符,例如:请求URL中/delete/{id},这个id就是URL的占位符,是rest风格URL的一个重要标志(个人看法:这样写有利于隐藏属性,具有一定安全性) 属性: 1,value:用于指定URL中占位符名称 2,required:是否必须提供占位符 5,RequestHeader(形参前) 作用:用于获取请求消息头(注:实际开发中很少用到) 属性: 1,value:提供消息头的名称 2,required:是否必须有此消息头 6,CookieValue(形参前) 作用:用于指定cookie名称的值传入控制器方法参数(注:实际开发中很少用到) 属性: 1,value:指定cookie的名称 2,required,是否必须有此cookie 7,@ModelAttribute 位置:方法,参数 作用:出现在方法上,表示当前方法会在控制器的方法执行之前执行,它可以修饰在没有返回值的方法,也可以修饰有具体返回值的方法。 出现在参数上,获取指定数据给参数赋值 属性: 1,value:用于获取数据的key,key可以是pojo的属性名称,也可以是map结构的key 应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据 8,@SessionAttribute(可以和model配合) 位置:只能作用于类上 作用:用于多次执行控制器方法间的参数共享 属性: 1,value:用于指定存入的属性名称 2,type:用于指定存入的数据类型 注意 后台方法void可能会报错,因为MVC默认会返回方法名称作为文件名,但若是没有则会报错 (剩下的一些用法和配置就没整理了,如文件上传,拦截器,异常处理器等)