本帖最后由 陈文老师 于 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) 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=”自定义拦截器”> |