SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC

辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发的,所以学不到什么高端编程技术和架构方法,那么我自己就琢磨搞一个SSH架构的东西出来,希望可以帮助到一些朋友,也希望大拿给出相应的指导意见。

先从用了什么东西说起吧 SSHM=SpringMVC+Spring+Hibernate+Mybatis,至于为什么要这么搞,我先简要的说下。

SpringMVC 我最初的想法就是,它比struts2小,属于轻量级的MVC框架,而且和spring可以完美结合在一起。

Spring 额 不需要我废话了。

hibernate 主要用来请求数据库事物方面的应用,主要执行DML语句,不过用的比较挫,不太会,希望多指点。

Mybatis 主要用来查询,因为查询这个东西 我还是喜欢用SQL来查询。

spring版本3.1.2,hibernate3,mybatis3.1.1 版本还是比较新的。其他的一些技术也包含进去了比如说poi,jdom,jackson等,就不一一介绍了。

这里插一段,在spring选择版本初期,我是用的3.0.5这个版本,jackson 用的是一个比较低的版本,这两个东西怎样都不兼容,头疼!在实验了多个版本后,发现了jackson 这玩意向下不兼容,我去,有意思,最后确定了spring3.1.2往上与jackson2.1左右的版本才兼容,好吧,就当学习了。

先看下基础web.xml配置吧

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee”index.jspSpring character encoding filterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtrueSpring character encoding filter/*contextConfigLocationclasspath:config/applicationContext*.xmlorg.springframework.web.util.Log4jConfigListenerorg.springframework.web.context.ContextLoaderListenernewframeorg.springframework.web.servlet.DispatcherServlet1newframe*.do 如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的”webapp.root”。但最好设置,以免项目之间的名称冲突。 定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。然后log4j的配置文件里就可以用${ myapp.root }来表示Web目录的绝对路径,把log文件存放于webapp中。此参数用于后面的“Log4jConfigListener” webAppRootKeymyapp.rootlog4jConfigLocationclasspath:log4j.properties15

每个标签是不是都写明白了呢?

那么我们从springMVC先开始介绍吧,我这里只讲我怎样搭建这个MVC的过程 至于SpringMVC的原理,我不想做过多的介绍,因为这不是本文的重点,并且也不是一句两句话能说明白的,我看到有些文章 几百字+几张图片就说这事springMVC的基本原理,我曾经略读过一些springMVC的源码,里面的复杂程度也不是简单的几句话能描述的清楚的,所以不做介绍,等小弟我真吃透了,在写出来吧,有关资料可以参考spring官网对springMVC的介绍,不是很详细,但是也能明白个大概。

不闲扯了,先看springMVC配置文件,位置:WEN-INF文件夹下,命名方式:以web.xml文件中DispatcherServlet的serlvletname-servlet.xml为公式命名,也可自定义文件名,在DispatcherServlet节点下加如下配置:

contextConfigLocation/WEB-INF/config/applicationContext-mvc.xml

MVC配置文件的内容如下:

xmlns:xsixmlns:mvc=”http://www.springframework.org/schema/mvc”xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd”<!– 先扫描controller 后service –>expressionexpressionbeanspringmvc的配置文件,它的命名规则:web.xml里springmvc模块的名称+“-servlet.xml”对模型视图名称的解析,即在模型视图名称添加前后缀 例如:Controller里返回一个名为test的逻辑视图名称,根据配置文件,它最终找到的文件是/panges/test.jsp,即把前后缀拼装为一个路径。classclassapplication/json;charset=UTF-8classcommon/errorcommon/error500404

基于以上配置,springMVC的基础配置应该算是完成了,简单写一个控制器。

@Controller 注解为此类为controller

@RequestMapping 注解类前,可以理解为请求URL的一个前置命名,在方法前可以理解为请求的后置命名,一下代码的请求就是/newframe/test/getAllDemo.do

@Resource就不需要过多说明了吧,用过spring的人都知道是干啥的。

@Controller@RequestMapping(value=”/test”)public class DemoControl {@Resource(name=”demoService”)public DemoService cDemoService;@RequestMapping(value=”/getAllDemo.do”,method=RequestMethod.GET)public ModelAndView getAllDemo(){ModelAndView tReturn = new ModelAndView(“test/test_list”);List<Demo> mDemos =cDemoService.getAllDemo();tReturn.addObject(“demos”, mDemos);return tReturn;}}

注意,返回值为一个ModelAndView对象,构造方法中传入的“test/test_list”是一个JSP的路径,在MVC的配置文件中已经简单介绍过InternalResourceViewResolver这个就是他的应用,他表示执行完毕这个方法后转发(注意是转发)到/newframe/test/test_list.jsp,其中addObject方法设置一对键值,将这对键值设置到HttpRequest中(注意是request中)。如果直接返回”test/test_list”则InternalResourceViewResolver将字符串解析为jsp路径也返回 到/newframe/test/test_list.jsp中。那么怎样在这个方法中拿到request或者是response?其实我个人是不建议这么做的,因为如果使用request或者是response就又变成了J2EE编程了,失去了使用开源框架的意义,但是也有办法

public ModelAndView getAllDemo(HttpRequest request,HttpResponse resopnse)

这样就可以操作response,request了!

那么spring是如何与jackson相互配合使用的呢?

真正的寂寞是在人群中,当你面对许多熟悉的脸,

SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC

相关文章:

你感兴趣的文章:

标签云: