springMvc

1.spring MVC

1)MVC模型
M-Model模型层: 负责业务逻辑,包含两层 业务数据和业务处理,比如实体类,Dao,service都属于模型层

2)V-View是视图层:负责显示界面和用户交互(收集用户信息),属于视图层的组件是不包含业务逻辑和控制逻辑的jsp

3)C-Controller:是模型层与视图层的桥梁,用于控制流程,比如在servlet项目中单一控制器ActionServlet

a.什么是spring MVC
spring框架中的一个功能模块,实现mvc结构,便于简单,快速开发mvc结构的web程序,其提供的api封了web开发中的常用功能,简化web开发过程.

b.spring MVC的核心组件:
Spring MVC 提供 M、V、C相关的重要组件有:

		DispatcherServlet(控制器,请求入口)
		HandlerMapping(控制器,请求paifa)
		Controller(控制器,请求处理流程)
		ModelAndView(模型,封装业务数据的视图)
		ViewResolver(视图,视图显示处理器)

3.xml配置文件的mvc应用
1.创建web工程,导入spring mvc相关开发包
spring ioc,web,webmvc开发包
2.在src下添加spring核心配置文件spring.xml,名称可以自己定义
3.在web.xml中配置DispatcherServ控制器组件
DispatcherServlet组件在spring MVC中提供,只需要配置即可,配置DispatcherServlet 时,同时指定xml配置文件路径
Controller组件负责执行具体业务处理,编写时需要实现controller接口及约定方法handleRequest

handleRequest方法返回一个,modelandview对象,此对象封装模型数据和视图名称:
ModelAndView(String viewName) viewName:视图名称
ModelAndView(String viewName,Model model) model:业务处理数据
通过HandlerMapping组件,DispactherServlet控制器可以将客户端的Http请求yings到对应的Controller

simpleURLHanderMapping维护一个个Http请求和Controller映射关系列表,根据列表对应关系调用cintroller

viewResolver组件,controller组件返回一个ModelAndView对象,Spring中视图名称以名字为标识,视图解析器viewResolver通过名字来解析视图

InternalResourceViewResolover:UrlBasedViewResolverde子类,它支持InternalResourceView以及子类JstlView和TitleVew响应
类型

4.基于注解配置文件的mvc应用
controller注解应用:(推荐)使用@controller注解声明controller组件,可以使得controller控制器定义更加灵活,可以不用实现controller接口,请求处理方法也可以灵活定义,为了是@controller注解生效,需要在springx.xml文件中开启组件扫描定义

<context:component-scan base-package=""/>

RequestMapping注解应用
@resquestMapping注解可以使用在类定义和方法上,表明此组件类货品方法与哪一个请求对应.
为了是@requestMapping注解生效,需要在spring.xml文件中开启mvc注解扫描

<mvc:annotation-driven/>

1.实战技巧

1)接收请求参数
Spring mvc请求提交数据到控制器的方式:
1.使用httpservletRequest获取
spring自动参数注入到httpServletRequest

2.使用@RequestParam注解
Spring会自动将参数注入到方法参数(名称一致)

3.使用自动封装成bean对象
定义实体类,属性名必须与请求参数名相同

2)向页面传值
当controller组件处理后,需要向jsp传值时的方式
1.直接用httpServletRequest或httpSession

2.使用ModelAndView对象

3.使用ModelMap的参数对象
在controller处理方法中最佳一个ModelMap类型的参数
4.使用@modelAttribute注解
在controller方法的参数部分或属性的get方法上,可接收可传递
注意:数据会利用httpServletrequest的attribute传递jsp页面

3)重定向
springMvc默认采用转发方式定位视图,如果需要重定向方式,可以采用以下方式:
1.使用redirectView
2.使用redirect:前缀

如果controller的请求处理方法返回的是ModelAndView对象,可以使用RedirectView方式重定向,示例代码
public ModelAndView checkLogin(){
RedirectView=newRedirectView(“重定向url”)
return new ModelAndView(view);
}

如果controller的请求处理方法返回的是String类型,可以使用“Redirect:前缀”方式重定向.
public String checkLogin(){
return “Redirect”
}

1.实战技巧问题

1)中文乱码解决方案
spring提供一个characterEncodingFilter过滤器,解决乱码问题
注意:1、表单以post方式提交
在web.xml文件中配置characterEncodingFilter过滤器页面编码和过滤器指定的编码保持一致.
2)异常处理
1.使用spring提供的简单异常处理器
SimpleMappExceptionResolver只需要在spring的xml文件中定义异常处理即可

2.实现HandlerExceptionResolver接口(自定义异常处理器)
自定义异常处理器需要在spring配置文件中定义才可以使用,适合全局处理有“处理 过程的异常
3.使用@exceptionHandler注解实现异常处理 适合局部处理有“处理过程”的异常
3)拦截器
拦截器接口必须实现HandlerInterceptor接口
preHandle():
处理器执行前调用,方法返回值true表示会继续调用其他拦截器或者是处理方法,返回false会中断流程,不会执行后续拦截器或处理方法。

posrHandle():
处理器放大执行后,视图调用前。
通过ModelAndView对象对模型数据或对视图处理

afterCompletion():
整个请求处理完毕后调用,如性能监控可以在此记录时间,输出消耗时间,可以进行资源的清理
注意:只有preHandle返回true时才会执行postHandle和afterCompletion
拦截器的配置:
注意:url不可以写相对路径,只能写绝对路径。绝对路径是从响应名之后开始.

<mvc:interceptors>
			<mvc:interceptor>
				<mvc:mapping path="/test/test1.do"/>
				<bean class="com.xms.interceptor.Handle"></bean> 
			</mvc:interceptor>
</mvc:interceptors>

提示:定义拦截器,实现handleInterceptor接口,需要实现定义的全部抽象方法,如果需要某一个方法,可以继承handlerInterceptorAdapter

1.spring对jdbc整合技术
spring对Dao组件提供那些支持
1)对Dao异常提供同一的处理
2)对Dao组件的编写提供支持的抽象类
3)提高编程xiaolv,减少Dao编码量

spring对异常的支持
spring把特定的某种技术的异常sqlExcepion同一
转换为自己的异常,异常以dataAccessException为父类,他封装原始的异常对象,不会丢失原始的错误信息

DataAccessException继承RuntimeException,是非检查异常,不会因为没有处理异常而出现编译错误,异常必须处理可以用拦截器或页面统一处理

spring对Dao编写支持
spring为了便于以一种一致的方式使用各种数据库翻跟技术,如JDBC,MyBatis,Hibernate,spring提供一套抽象的Dao类,通过Dao提供的方法可以获得数据库访问技术相关的数据源和其他配置信息

jdbcTemplate:封装常用Jdbc操作方法
封装了连接获取以及连接释放等工作,从而简化我们对jdbc的使用,避免忘记关闭数据库等错误
编写Dao组件两种方法:
1)Dao继承jdbcDaoSupport,通过getJdbcTemplate方法获取JdbcTemplate对象, 需要在Dao中注入DataSource对象
@resource
private void setDs(DataSource ds){
super.setDataSource(ds);
}
2)Dao不能继承jdbcDaoSupport,在spring容器中配置一个jdbcTemplate的bean,然后注入给Dao组件

JdbcDaoSupport:Jdbc数据访问对象的基类
利用jdbc技术编写dao的父类,通过此类提供的方法,可便于获取connectio和jdbcTemplate对象,
jdbcDaoSupport使用时需要注入一个dataSource对象

HibernateTemplate:封装常用Hibernate方法

HibernateDaoSupport:Hibernate数据库访问对象的基类

2.Spring Jdbc+Spring Mvc应用,重构案例
1)创建工程,搭建spring mvc和springjdbc开发环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值