spring mvc配置理解2

 

 

WEB-INF是服务器的东西

jsp文件存放到到WEB-INF下的作用

1.不允许用户通过浏览器修改文件

2.无法直接访问,必须通过servlet或者是控制器

 

WEB-INF(服务器的东西) ...META-INF(视频,音频) :都是安全目录,受服务器的保护,浏览器无法直接访问

 

一.SpringMVC的注解:

常用注解;

[email protected]: bean对象,主要用在实体包下

[email protected](仓库的意思):bean对象,主要用在持久层类

[email protected]:bean 对象,主要用在业务逻辑层类

4:@Controller:bean对象,主要用在控制器层类

5.:@Resource:注入对象:javax的注解

使用name,那么要求bena对象必须存在,byId/byName

如果什么都不用,依据byType

[email protected]: 注入对象:Spring的注解

自动注入:依据byType

[email protected]:注入对象,但是不能单独使用:Spring的注解

只能通过byName进行注入,一般需要配合@Autowired

使用@Resource和使用(@Autowired 和@Qualifier)区别?

@Resource:

使用了name属性,那么bean必须存在,不存在就报错

只要不使用name属性,才可以通过byType

(@Autowired 和@Qualifier:

优先根据name进行注入,如果name不存在就根据byType

这三个注解都可以使用在属性上,也可以使用在setXXX

[email protected]:url 映射

主要可以处理请求的url的映射地址,消息头,类型等信息

可以使用在类上或方法上

使用在类上可以标记url的根目录,可以区分不同包下的类,访问类下的方法时,可以在根目录下方法子目录 ,如/dao/save

.常用的属性:

1.value:

指定请求的url路径

2.method:

请求方式:取值 :RequestMethod

3.consumes:

请求的Context-Type的类型

4.produces

标记返回的内容的类型

Accept的值必须包含

5.headers:

指定消息头,只有消息头的信息符合,才允许请求

6.params:

请求参数,要求当前的请求必须包含指定的参数名称或值

即是请求过来的参数的名字,如同request.getparameter("msg")

7.path:

请求的映射路径,等价value

8.name:

为映射路径,请求参数

[email protected]: 请求参数

标记请求的参数信息

常用属性:

1.name :参数名称,如果不写,默认的参数名称就是当前方法的形式参数名称

2.required:是否必须

3.defaultValue:默认值

[email protected]:获取请求的消息头

直接获取请求消息头的内容

常用属性:

1.name:请求消息头的key

2.defaultValue:默认值

3. @ModelAttribute:添加数据到Model

使用在方法上或者参数上,每次请求都会优先执行

方法:

方法无返回值,一般会有Model或者ModelMap

方法有返回值:那么会将返回值添加到Model中

参数:

修饰形式参数

要求:

1.必须指明哪个key

2.类型需要一致

 @PathVariable: 获取请求路径的变量,动态获取url变量内容

主要用在RESTFUL格式的url模版

. @SessionAttibute

用在类上

指定的key

如果Model中也有该key,会将Session的key值赋值到Model

如果Model中也有key的值,也会赋值到Session中

sessionStatus.setComplete()清空内部维护的一个Session数据的map集合

,如果是同一HttpSession就removeAttribute,不同的HttpSession无操作

[email protected]

获取指定名称的Cookie的值

 

常用注解:

@Controller

@RequestMapping

@ModelAttribute

@SessionAttribute

@PathVariable

@CooieValue

 

Cookie:

浏览器维护的数据,在电脑磁盘上

每次在url请求时,浏览器会将当前网站的所有未失效的Cookie默认添加到Request Header

 

如果浏览器禁掉Cookie,那么如何保证同一Session

答案:URL重定向

 

.HttpSession:

保存在服务器内存中,可以在多个页面*享

一个域名一个浏览器的第一次请求网站就是Session的创建

切记HttpSession的关闭可不是浏览器的关闭

默认为30分钟空闲时间(当前时间和最后一次访问时间差)

HttpSession的结束条件:

1.网站停止

2.空闲时间超时 -->默认30分钟

3.invalidate:强制销毁

登录信息,多个页面共享,跟用户有关数据

 

Model:只用来存储数据到request.setAttrubute,增加和修改

ModelMap:完整的数据存储对象,可以对数据进行增删改查

 

 

(2).控制器的方法的参数:

1.HttpServletRequest/HttpServletResponse:请求和响应

2.HttpSession:session对象

3:Local本地化信息

4: TimeZone时区

5: Model :存储数据到request

6: ModelMap : 增改查

7: 普通数据类型(基本类型,string)

8: 自定义类数据类型

9: Map :等价于 ModelMap

10:数组

11: SessionStatus

12: @PathVariable、@RequestParam、@RequestHeader、@CookieValue、@ModelAttribute、@RequestBody

常用的参数:

Model

ModelMap

普通类型

自定义数据类型

.SessionStatus

控制器的方法的返回值

1.void :view 的名称就是url映射名称

2. String:页面的名称或页面的路径

3.View :要返回的视图对象

4. ModelAndView :数据视图

5. Model

6. Map

7. HttpEntity<T> \ResponseEntity<T>

8、HttpHeaders

9、支持对象/集合/字符串的返回---json数据[email protected]

 

常用的返回值类型:

常用的返回值类型:

void

String

ModelAndView

集合

 spring mvc配置理解2

发起url请求-->DispatcherServlet-->HandlerMapping (key,value) -->HandlerAdapter(处理器适配器)->前拦截器-->Handler(处理器,控制器)(回调参数创建...) -->很强大(产生ModelAndView)0->后拦截器-->视图名称转换器ViewNameTransvertor-->ViewResolver视图解析器