您的位置:首页 > 编程语言 > Java开发

Java 常用框架(Spring,SpringMVC,Hibernate,mybatis)整合

2016-10-24 22:54 519 查看
每一个web工程里在WEB-INF目录下都有一个文件web.xml, 这个文件是web工程的入口文件,每一个容器(tomcat)都是去解析web.xml。web.xml 里可以增加servlet例如:

<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/spring-servlet.xml
#--初始化配置文件位置,可以放在指定的位置。注意书写规则
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>#数字1代表 随web容器启动一起启动
</servlet>
<servlet-mapping>
<servlet-name>dispatch</servlet-name>
#/代表全部拦截,不可以写成*.*,否则无法拦截到页面访问
<url-pattern>/</url-pattern>
</servlet-mapping>


Spring分为多个文件进行分别的配置,其中在servlet-name中如果没有指定init-param属性,那么系统自动寻找的spring配置文件为[servlet-name]-servlet.xml。在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。

定义一个servlet,同时还需要顶一个与之匹配的servlet-mapping

配置文件spring-servlet.xml文件例如:

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix"  value="/"></property>
<property name="suffix"  value="*.jsp"></property>
</bean>


spring mvc 注解方式

<mvc:annotation-driven />
是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。
<mvc:annotation-driven />


会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。

@Controller  类注解
@RequestMapping(value="/user/adduser", method=RequestMethod.GET)
<context:component-scan/>扫描指定的包中的类上的注解,常用的注解有@Controller、@Service 以及 @Repository 和 @Component 注解的作用是等价的:将一个类成为 Spring 容器的 Bean。由于 Spring MVC 的 Controller 必须事先是一个 Bean,
所以 @Controller 注解是不可缺少的
@Controller注解标识一个控制器,@RequestMapping注解标记一个访问的路径(/index.htm),return "index"标记返回视图(index.jsp);
注:如果@RequestMapping注解在类级别上,则表示一相对路径,在方法级别上,则标记访问的路径```
常用组件的申明方法:


@Controller 声明Action组件

@Service 声明Service组件 @Service(“myMovieLister”)

@Repository 声明Dao组件

@Component 泛指组件, 当不好归类时.

@RequestMapping(“/menu”) 请求映射

@Resource 用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name=”beanName”)

@Autowired 用于注入,(srping提供的) 默认按类型装配

@Transactional( rollbackFor={Exception.class}) 事务管理

@ResponseBody

@Scope(“prototype”) 设定bean的作用域

“`

GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。

POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象

@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换。

@responsebody表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据.

hibernate 的五大对象

1 Configuration

2 sessionFactory

3 Seesion

4 transaction 事物对象

5 Query和criteria

事务,如果没有使用@Transactional,方法中用到事务的提交,则会报错误:No Session found for current thread

spring-servlet.xml关于事务的配置:(用于insert,update,delete的操作).

spring mvc 与spring的启动顺序

先启动spring,然后启动springMVC,spring mvc 与spring 用的jar都是一样的.

spring 配置 begin

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath*:config/applictionContext.xml

spring 配置 end

Spring Web MVC 处理Http请求的大致过程:

一旦Http请求到来,DispatcherSevlet将负责将请求分发。DispatcherServlet可以认为是Spring提供的前端控制器,所有的请求都有经过它来统一分发。

在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。

Spring Controller将处理来自DispatcherServlet的请求。Spring的Controller类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。Controller将处理客户请求,这和Struts Action 扮演的角色是一致的。

一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。

如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。

DispatcherServlet将View对象渲染出的结果返回个客户。

spring 搭配 mybatis:

mybatis需要的jar包

mybatis-spring-1.2.1.jar

mybatis-3.2.2.jar

在spring ApplicationContext.xml 配置数据源需要用到的jar包

commons-collections-3.2.jar

commons-dbcp-1.4.jar

commons-pool-1.5.6.jar

classes12.jar

具体操作实例:

第一步:安装数据库,配置用户名,增加表

第二步:创建javabean(目录一般为package/entity),与数据库表字段一一对应

第三步:创建接口(目录一般为package/dao),定义接口方法

第四步:实现dao接口,通过配置文件(*Mapper.xml,目录同接口)实现。

第五步:创建mybatis-config.xml,配置*Mapper.xml的位置

第六步:创建一个ApplicationContext.xml文件作为Spring的配置文件,配置数据源

第七步:创建测试类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息