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核心组件:创建映射器:

将客户端的请求地址 : 2于匹配所有的@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>

 

<!-- 指定拦截器的拦截范围 :  -->

<mvc:mapping path="/**"/>

<!-- 指定拦截器的忽略的内容 :  -->

<mvc:exclude-mapping path="/login"/>

<!-- 拦截器自身 :  -->

<bean class="com.hfxt.utils.MyInterceptor"></bean>

 

</mvc:interceptor>

</mvc:interceptors>

类型转换器:

1.自定义类型转换器:

implements Converter<String , Date>.

2.注册转换器在springmvc容器中.

<bean id="factoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
		<property name="converters">
			<list>
				<bean class="com.hfxt.common.MyDateConverter"></bean>
			</list>
		</property>
	</bean>	
	<mvc:annotation-driven conversion-service="factoryBean"></mvc:annotation-driven>

3.当封装Date参数时,即会自动完成转换.

异常处理器:controller层抛出的任何异常.

1.默认处理器:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="defaultErrorView" value="/exception.jsp"></property>

</bean>

2.自定义处理器:

HandlerExceptionResolver接口实现类即可.

<bean class="com.hfxt.utils.MyExceptionResolver"></bean>

视图解析器:

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name ="prefix" value="/WEB-INF/jsp/" />

<property name = "suffix" value=".jsp" />

 

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

<property name="attributes" ref="" ></property>

<property name="servletContext" ref=""></property>

 

</bean>

 

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

 

补充:web项目中的上传下载:

1.首先需要上传jar包: commons-io.jar / commons-fileupload.jar

2.编写上传表单 :  <input type=”file”/>

表单类型声明 : enctype=”multipart/form-data”

  1. 编写上传处理类:servlet. 将文件保存在: 服务器上.
  2. 针对服务器上传成功的文件:  需要对外提供下载.
  3. 针对服务器上传成功的图片:  需要页面展示.  

回显照片:  将指定位置的照片地址显示在<image src=”地址”/>.

注: 需要通过服务器设置: 对外提供访问地址.

Tomcat/conf/server.xml :

<Context docBase="D:/files" path="/files" reloadable="true"/>

下载:  基本的web下载方式.

  1. 获取下载指定的文件名.
  2. 设置下载方式通知客户端:

response.setHeader("content-disposition", "attrachement;filename="+ filename);

  1. 拼接path + filename  的资源完整路径. 进行字节流的读取. 并写入到response的响应流通道中.
  2. 释放关闭资源流通道.

 

 

1.springmvc容器中配置:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="maxUploadSize" value="1048576" />

<property name="defaultEncoding" value="utf-8"></property>

<property name="uploadTempDir" value="/temp"></property>

</bean>

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)

 

ssh整合. spring + strutrs + hibernate. 现在采用: springmvc+spring+hibernate.

整合步骤:

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.

 

 

Spring(4.0) + hibernate整合+spring-orm.jar/spring-transaction.jar.

2.1: 先引入相关jar包.

2.2:基于spring容器: 集成1.数据源. 2.sessionFactory.

3.提供声明式事务(service层).

 

编写整合实现功能.

模拟测试功能: 新增.

  1. 编写controller处理器. 提供新增页面和成功提示页面.
  2. 编写Service服务层.
  3. 编写dao层.

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值