A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈文老师 于 2017-11-22 11:22 编辑

要毕业了?要找工作啦?开不开心?紧不紧张?回首黑马这半年,感觉自己是不是被自己的努力所感动,然而仔细想想学了很多,马上要出去找工作了却脑子一片空白。重庆JavaEE就业2期龙师兄毕业后在寝室闭关修炼半个月(当然不建议大家这样做,一定要趁着你刚毕业,什么都知道赶紧出去找工作,越到后面越忘得多)个人总结了咱们6个月以来所学的一些基础框架和淘淘项目的一些核心技能点,要复习的,赶紧看看吧!但是当答应我,看完后赶紧出去面试哟~~~不要怂,就是干!!!
【基础框架篇】-【SpringMVC
1      SpringMVC
1.1      是么是springMVC?
1)        和struts2一样是表现层的框架,它是spring框架的一部分
2)        处理流程:
1.    用户发送请求到前端控制器
2.    前端控制器收到请求调用处理器映射器
3.    处理器映射器根据请求url找到具体的处理器,生成处理器对象以及处理器拦截器一并返回给前端控制器
4.    前端控制器通过处理器适配器调用调用处理器
5.    执行处理器(controller,后端控制器)
6.    Controller执行完成返回modelandview
7.    适配器将controller执行结果modelandview返回给前端控制器dispatcherServlet
8.    dispatcherServlet将modelandview传给视图解析器viewreslover视图解析器
9.    视图解析器返回具体的view
10.  前端控制器对view进行渲染视图
11.  前端控制器响应用户



1.2      为什么要使用springmvc


1)        Struts2是类级别的拦截,一个类对应一个requst上下文,springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个rul对应,所以从架构本身上springmvc就容易实现restful风格的url,而struts2的架构实现起来要很麻烦,因为struts2中action的一个方法可以对应一个url,而其类属性却被所有方法所共享,这也就无法用注解或其他方式标识所属方法了
2)        由于以上原因,springmvc的方法之间基本上是独立的,独享request response数据,请求数据通过参数获取,处理结果通过modelmap交回给架构,方法之间不共享变量,而struts2高的就比较乱,虽然方法之间也是独立的,但其所有action变量是共享的,这不会影响程序运行,却给编码和程序阅读带来了很大困扰,每次请求来了就要创建一个action,一个action对应一个request上下文。
3)        由于struts2需要针对每个request进行封装,吧request,session等servlet生命周期的变量封装成一个map,供给每个action使用,保证线程安全,所以在原理上比较消耗内存的
4)        拦截器实现机制上,struts2有自己IDEintercept机制,springMVC用的是独立的aop方式,这样导致struts2的配置文件量还是比springmvc大
5)        Springmvc的入口是servlet,而struts2的入口是filter,filter和servlet是不同的,这就导致了二者的机制不同
6)        Springmvc集成了ajax,使用起来非常的方便,,只需要一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而struts2拦截器集成了ajax,在action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对比较不方便
7)        Springmvc验证支持jsr303,处理起来相对更加的灵活方便,而struts2验证比较繁琐
8)        Springmvc与spring的整合是无缝隙的,从这个项目的管理和安全上也比struts2高,
9)        设计思想上,struts2更加符合oop编程思想,springmvc就比较的谨慎,在servlet上扩展
10)     Springmvc开发效率和性能高于struts2
11)     Springmvc配置很少
1.3      怎么使用springMVC?
1)        创建controller,在类上添加注解@Controller
2)        在方法上添加注解@RequstMapping(“请求url”):注解指定要求的url其中”.action”可加也可以不加
3)        配置包扫描器<context:component-scanback-package=””>
4)        配置前端控制器,在web.xml配置DispatcherServlet,拦截请求格式<url-pattern>
5)        配置处理器映射器<bean class=” RequestMappingHandlerMapping”/>
6)        配置处理器适配器<bean class=” RequestMappingHandlerAdapter”>
7)        这两个配置可以直接配一个<mvc:annotation-driven>搞定
8)        配置视图解析器<bean class=” InternalResourceViewResolver”><property name=”viewClass” value=”jstlview”><propertyname=”prefix” value=””><property name=”suffix” value=””>
9)        在cntroller中使用model或modelmap向页面传递数据
10)     接收参数方式
1.    参数名与处理器形参名一致可直接接收
2.    不一致需要@RequestParam(value=”与传递参数名一致”)常用于处理简单类型的绑定,没有对应的请求参数包异常
3.    Restful风格不一致也可以使用@PathVariable(“与传递参数名一致”)
4.    接收pojo可直接在形参上写pojo
5.    接收高级参数
a)      数组:在handler形参可以写数组,也可以将作为pojo的属性接收,对应属性必须是数组
b)      集合:利用pojo属性接收,对应属性必须是list,此时在handler形参上写集合是无法正确接收到数据的
11)     请求乱码问题
1.    配置一个filter,characterEncodingFilter,指定编码格式<init-param>,指定拦截的哪些请求<url-pattern>
12)     Json数据交互
1.    @RequestBody,用于读取http请求的内容,将读到的内容通过httpMessageConverter接口转换为json、xml等格式的数据并绑定到形参上
2.    @ResponseBody,用于将controller的方法返回的对象转换为指定格式的数据,如json、xml等,通过response响应给客户端
13)     Springmvc的拦截器
1.    类似于servlet的filter,用于对处理器进行预处理和后处理
2.    需要实现HandlerIntercept接口
3.    配置拦截器:就是想原有拦截器中加入新的拦截器<beanclass=”BeanNameUrlHandlerMapping”><property name=”interceptors”><list><ref=”注入自定义拦截器”>。
4.    全局拦截器:<mvc:interceptuors><mvc:interceptor><mvc:mappingpath=”拦截的范围”><bean class=”自定义拦截器”>

2 个回复

倒序浏览
收藏起来,指不定我什么时候就要用到了,不错
回复 使用道具 举报

收藏起来,指不定我什么时候就要用到了,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马