三层架构与MVC模型
B/S交互:浏览器和服务器端,将服务器端分为三层架构
第一层:表现层(Spring MVC)
第二层:业务层(Spring)
第三层:持久层(Mybatis)
浏览器首先发出http请求,传输请求参数,最终由表现层响应结果
Spring MVC框架介绍:通过一套注解和一个简单的java类成为请求处理的控制器,无须实现任何接口,同时还支持其他风格的编程请求。
与Struts 2框架相对比的优势:
共同点:
都是表现层框架,都是基于MVC框架编写的
底层都依赖ServletAPI
他们的处理请求的机制都是一个核心控制器
区别:
Spring的入口的Servlet,strus2基于filter
Spring MVC基于方法,strus2基于类,Spring会较为简洁
Spring还支持JSR303 处理ajax请求更加方便
Strus2的OGNL的表达式让页面的开发效率更加高效
书写一个有前端控制器到视图解析器的处理程序,其中涉及到以下几个组件
前端控制器:DispatcherServlet,接口用户请求和响应
处理映射器 handlerMapping:根据用户请求通过HandlerMapping 让controller类中的方法去执行,返回一个执行链
处理器适配器(handlerAdapter):无论访问什么类,都会经过处理器适配器组件,适配任何Controlleer
视图解析器:从返回各种jsp页面,页面渲染,跳转各种页面。
注:在SpringMVC中加上《MVC:annotation-driven》自动加上了处理器映射器、处理器是适配器、视图解析器
第二讲:requestMapping的注解的作用
该注解加载类中的方法之前,也可以放在类上。处理请求路径和类中的方法,该注解建立了二者的关联关系。加上一个映射关联
注解放在类上,有一个类的路径,之后应该在xml文件中将注解的文件
2. RequestMapping注解的属性:
根据源码,找到value和path两个API,value是path的别名。二者作用相同
method方法:属性类型是一个对象,枚举类。设置请求方式;意味着可以添加多个属性。value=。。。;value=。。。’
params:用于指定限制请求参数条件 params={e.g.: "username"}字符串形式的数组。必须按照params的形式请求
headers:请求必须包含headers,用于指定限制请求头的条件
第三讲:请求参数的绑定
param.jsp页面,含有一个超链接,点击之后,后台的param可以执行。
method请求为post请求
直接在value位置编写对应的属性名,可以自动完成赋值操作。
解决中文乱码问题:
web.xml中配置filter与fliter-Mapping,初始化参数UTF-8设置命令如下:
<param-name>encoding</> ;<param-value>UTF-8</>
自定义类型转换器:解决自定义转换器的异常
类型转换器注册,实现Convert接口< S , T >,实现其中的convert方法,将yyyy-mm-dd转换为字符串类型String
配置bean id的class为这个接口的路径,property-name =converters(转换),<set> bean class=实现接口的类的路径</set>
第四讲:常用的注解
RequestBody:get方法不适用,用于获取请求体内容,直接用到的是key value的数据结构
获得某个请求体的呢绒 在参数前面加上requestBody获取请求体,不是单纯的用户名,而是表单的所有属性组成的json字符串
pathVariable注解:用于绑定url的占位符。演示过程依然是先写Controller方法,testPathVariable,在requestMapping注解中写上方法名/{id}
HiddenHttpMethodFilter过滤器
requestHeader注解:在形式参数的括号里面加上注解requestHeader,可以获取请求头的值
CookieValue:原理同上,了解即可
ModelAttribute注解:放在方法上面会优先执行。作用:在提交一个表单的时候,没有新提交的值继续使用原来的值
Sessionattribute:多次请求
网友评论