SpringMVC

1.springmvc概述
概述 一款表现层MVC框架.常用版本:4.x . 类似框架struts.
资源地址: www.spring.io

注: 执行流程.经典面试题.
springMVC : 1.springMVC的加载核心控制器:DispatcherServlet.
内部: 1.1:初始化方法中将进行各种组件解析器的加载.
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
2.HandlerMappings核心组件:创建映射器:
将客户端的请求地址 : 用于匹配所有的@RequestMapping注解地址.
如果没有自定义的解析器
将采用默认的: BeanNameUrlHandlerMapping.
3.HandlerAdapters适配器: 可以负责调用找到的Controller对象和方法.
默认适配器: SimpleControllerHandlerAdapter

4.ViewResolvers: 视图解析器. 当用户响应视图时,
用作视图页面的解析展示.
默认视图解析器: InternalResourceViewResolver.

所有的用户请求都将在DispatcherServlet中的doService()方法中实现:
1.匹配器的匹配.2.匹配成功后的适配器调用.
3.返回结果视图解析器的解析. 4.最终由DispatcherServlet完成响应.

2.第一个springmvc程序
2.1搭建项目环境.导入jar包.
2.2编写Controller与jsp.
2.3编写核心配置SpringMVC.xml.
2.4编写web.xml配置前端控制器.
Springmvc的加载控制器: DispatcherServlet
2.5测试请求响应.

3.springmvc请求参数映射.
3.1:直接封装到基本类型包装类对象参数上.
3.2:@RequestParam修饰参数实现封装并提供设置.
3.3:封装参数到实体对象中.
3.4:封装到数组中. 如果集合,在实体类中属性形式封装.
3.5:封装接收客户端参数: 采用原始办法: HttpServletRequest 实现获取参数.

4.springmvc响应数据与响应页面(涉及ajax请求与json响应)
4.1:ModelAndView
4.2:return “page”/”redirect:page”/”forward:page”
4.3:request / response

4.4:ModelAndView.
4.5:Model/ModelMap
4.6:@ModelAttribute(“u1”)
4.7:servletAPI. HttpServletRequest , HttpServletResponse , HttpSession,

4.8:@ResponseBody可以直接返回.
4.9:响应对象,集合,json字符串.
注: jackson-annotations-2.4.0.jar/jackson-core-2.4.2.jar/jackson-databind-2.4.2.jar

5.拦截器使用. 异常处理器. 类型转换器. 视图解析器.
拦截器: 实现HandlerInterceptor接口.
mvc:interceptors
mvc:interceptor

		
		
		
		
		
		
		
	

类型转换器:
1.自定义类型转换器:
implements Converter.
2.注册转换器在springmvc容器中.








3.当封装Date参数时,即会自动完成转换.
异常处理器:controller层抛出的任何异常.
1.默认处理器:



2.自定义处理器:
HandlerExceptionResolver接口实现类即可.

视图解析器:


		扩展解析的页面上的其他成员 : 可以预先提供一个属性对象,或域对象.提供给该页面.
		
		
		

6.springMVC上传功能(web上传下载功能).

补充:web项目中的上传下载:
1.首先需要上传jar包: commons-io.jar / commons-fileupload.jar
2.编写上传表单 :
表单类型声明 : enctype=”multipart/form-data”
3.编写上传处理类:servlet. 将文件保存在: 服务器上.
4.针对服务器上传成功的文件: 需要对外提供下载.
5.针对服务器上传成功的图片: 需要页面展示.
回显照片: 将指定位置的照片地址显示在.
注: 需要通过服务器设置: 对外提供访问地址.
Tomcat/conf/server.xml :

下载: 基本的web下载方式.
1.获取下载指定的文件名.
2.设置下载方式通知客户端:
response.setHeader(“content-disposition”, “attrachement;filename=”+ filename);
3.拼接path + filename 的资源完整路径. 进行字节流的读取. 并写入到response的响应流通道中.
4.释放关闭资源流通道.

1.springmvc容器中配置:





2.提供FIleUploadController:
MultipartFile file1封装上传文件对象.
file1.transferTo( file );

3.下载FIleDownController:
HttpHeaders headers = new HttpHeaders();
headers.add(“content-disposition”, “attachement;filename=1.jpg”);
ResponseEntity entity = new ResponseEntity(bs ,headers , HttpStatus.CREATED );
Return entity;

springMvc下载的方式二: 依然采用web下载方式实现.

7.其它.restful编程风格.字符编码解决方案.防止表单重复提交.
字符编码:可以作用post/响应编码. get需要单独设置.
org.springframework.web.filter.CharacterEncodingFilter
注:配置encoding=utf-8/forceEncoding=true
表单重复提交控制: 原理等同于u2处理解决方案 + 拦截器实现.
Restful编程:
@RequestMapping("/users/findUser/{id}")
getUser(@PathVariable(“id”) Integer id)

8.ssh整合. spring + strutrs + hibernate. 现在采用: springmvc+spring+hibernate.
整合步骤:
1.spring + springmvc整合.
1.1: 先引入相关jar包.
1.2: 提供springMVC容器(扫描controller层. MVC注解的支持.和一些解析器组件).
1.3:springMVC容器: 在web.xml中交给DispatcherServlet核心处理器加载.
1.4:提供spring容器.(扫描各层.不包含controller. )
1.5:基于web.xml核心配置: 加载spring容器.(spring加载监听器. )
1.6:补充: springmvc默认还会具备过滤器: CharacterEncodingFilter.解决:post.
注: 如果是Get请求,还需要进行全局配置URIEncoding.

2.Spring(4.0) + hibernate整合+spring-orm.jar/spring-transaction.jar.
2.1: 先引入相关jar包.
2.2:基于spring容器: 集成1.数据源. 2.sessionFactory.
3.提供声明式事务(service层).

3.编写整合实现功能.
模拟测试功能: 新增.
1.编写controller处理器. 提供新增页面和成功提示页面.
2.编写Service服务层.
3.编写dao层.

你可能感兴趣的:(SpringMVC)