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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liiuijkiuu/article/details/52916681

每一个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的配置文件,配置数据源
第七步:创建测试类

猜你喜欢

转载自blog.csdn.net/liiuijkiuu/article/details/52916681