SSH

来源:互联网 发布:窑洞价值 知乎 编辑:程序博客网 时间:2024/06/05 14:26

         最近把struts2,spring,Hibernate三个框架学完了,总的来说,并不难,因为都是从低层一直学上来的,或者说研究的不是很深入,所以没体会到其内在的核心之处,但是开发一般的web项目应该没甚大问题,先说说自己的体会,web开发技术开源的东西很多,加上有些技术规范性也不是那么强,衍生出来的技术很多,跟新的版本也很多,总的来说时有点杂,但杂之中也有他的条理,最重要的是抓住一条主线,需要什么,就去找出来用,把握核心的RESPONSE&&REQUEST就行了,掌握了核心,才能够对其他框架有更迅速的掌握,毕竟,大多数公司都有自己的框架,但是SSH是必须要去理解的。

         struts2和spring都可以作为一套独立的框架,独立开发,具备有MVC三层架构,由于某些地方显得不尽人意,所以,需要相互补充,搭配着Hibernate与数据库交互,于是就有了SSH,这两天大概配了有4次SSH框架,没出现什么问题,但是配置步骤有点多,所以有比较记下以便以后翻阅,同时,有兴趣的朋友也可以参考,有什么不对的地方,希望指出,共同探讨,共同提高。

          SSH框架就是Struts+spring+hibernate,因此,配SSH肯定就是要依次导入这三个框架,这三个框架都有自己的核心配置文件,分别是struts.xml(里面包括,外面引入的dtd或xsd规范文件以及struts2的核心控制器FilterDispatcher的路径)——————applicationContext.xml(里面包括外部dtd引入路径,bean对象以及它自己集成的SessionFactory)————hibernate.cfg.xml(里面包括连接数据库信息,驱动信息,orm映射出来的xml文件的路径),但是在配置SSH框架时是以Spring为核心,所以配置文件选的是application.xml,这里面就包含了hibernate.cfg.xml的信息。

          下面介绍一下我配置SSH框架的步骤,首先建立一个web项目,这里我的项目名叫fish,鼠标右键点击项目名,选择菜单中的MyEclipse,在选择Add Spring Capabilicties..,在出现的界面中需要选择5个包(我用的是MyEclipse 8.5+spring 3.0),他们依次是Spring 3.0 AOP Libraries,Spring 3.0 Core Libraries,Spring 3.0 Persistence Core Libraries,Spring 3.0 Persistence JDBC Libraries,Spring 3.0 Web libraries,选中这5个包之后,然后看下面有一个选择cop.....那个,这样的话才能保证你的包都被导入到lib下面了,要不然估计会包路径错误,接着选择next,下面的是要创建一个applicationContext配置文件,他会自动给你创建,当然,不嫌麻烦的话你也可以自己写,选择finish,接下来,你可以看看你的WEB-INF下面的lib文件夹里面会出现大量包,就是刚才导入的包,而且你的applicationContext配置文件也已经生成,其次lib下面还会有两个tld文件,这是spring的自定义标签的tld文件,这里我们主要用的是Struts的自定义标签,所以这个先不管,接下来进入lib下面的web.xml去配置spring的核心控制器配置如下

  <welcome-file-list>

      <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

    <filter>

    <filter-name>filter1</filter-name>

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

    <filter-mapping>

    <filter-name>filter1</filter-name>

    <url-pattern>/*</url-pattern>

    </filter-mapping>

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

    </context-param>

  到这里,spring的导入基本完成,下面接着导入struts框架,我个人觉得struts的自定义标签是很重要的,他将view层的java代码剥离,其次是其核心控制器FilterDiapatcher,就是负责分发view层的rquest,将其分发给各个业务逻辑,struts导入步骤如下,这里我是自己手动完成的配置文件以及手动引入包的,struts需要导入6个包,他们是commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,struts2-spring-plugin-2.0.12.jar,xwork-2.0.6.jar,将他们复制进lib里面,然后右键点击src(源文件夹),创建一个struts.xml(注意,这个名字不能变,除非你手动更改它下层的代码),在struts.xml里面配置如下信息

  <?xml version="1.0" encoding="UTF-8"?>

  <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

   "http://struts.apache.org/dtds/struts-2.0.dtd">

   <struts>

   <package name="bbs"  extends="struts-default">

   <global-results>

   <result name="index" type="redirect-action">/index.action</result>

   <result name="zhuxiao" type="redirect-action">/zhuxiao.action</result>

   <result name="tadd" type="redirect-action">/liuyan.action</result>

   <result name="reply" type="redirect-action">/reply.action</result>

   </global-results>

   <!-- 普通用户登录 -->

   <action name="loginUser" class="userAction" method="loginUser">

   <result name="success">/logsuccess.jsp</result>

   <result name="err">/Login_User.jsp</result>

   </action>

   <!-- 用户注册 -->

   <action name="regUser" class="userAction" method="regUser">

   <result name="success">/index.jsp</result>

   <result name="error">/reg.jsp</result>

   </action>

   <!--用户修改信息 -->

   <action name="modify" class="userAction" method="modifyInfo">

   <result name="success">/index.jsp</result>

   <result name="error">/modify.jsp</result>

   </action>

   <!-- 显示主页 -->

   <action name="index" class="indexAction">

   <result name="index1">/index1.jsp</result>

   <result name="error">/error.jsp</result>

   </action>

   <!-- 用户注销 -->

   <action name="zhuxiao" class="zhuXiao">

   <result name="zhuxiaosuccess">/index.jsp</result>

   </action>

   <!-- 发帖 -->

   <action name="tadd" class="tAdd">

   <result name="success">/Topic_add.jsp</result>

   </action>

   <!-- 存帖 -->

   <action name="tAdd" class="tAdd" method="topAdd">

   <result name="success">/index.jsp</result>

   <result name="error">/Login_User.jsp</result>

   </action>

   <!-- 回复 -->

   <action name="reply" class="reply" method="replyExecute">

   <result name="success">/reply.jsp</result>

   <result name="error">/reply.jsp</result>

   </action>

   <!-- 保存回复 -->

   <action name="replySave" class="reply" method="replySave">

   <result name="success">/index.jsp</result>

   <result name="error">/reply.jsp</result>

   </action>

   <!-- 版主登陆 -->

   <action name="manager" class="userAction" method="loginManager">

   <result name="success">/managerLoginSuccess.jsp</result>

   <result name="error">/Login_manager.jsp</result>

   </action>

   <!-- 版主注销 -->

   <action name="managerZhuxiao" class="zhuXiao" method="managerZhuxiao">

   <result name="success">/index.jsp</result>

   </action>

   <!-- 删除帖子 -->

   <action name="delete" class="indexAction" method="deleteTopic">

   <result name="success">/index.jsp</result>

   </action>

   </package>

   </struts>

  中间有注释的部分不用谢,当有业务逻辑跳转的时候才写,我只是用我的一个项目做个引例,到这里,struts的框架导入完成,最后导入Hibernate框架,导入步骤如下,鼠标右键点击项目名,选择Myeclipse->Add Hibernate Capabilities...,然后进入选择界面,我用的Hibierbernate3.3,在下面的框里面选择两个包,他们分别是Hibernate3.3 Annotations & Entity Manager ,Hibernate3.3 Core Libraries,同样的在下面要选择copy选项,以便将包放入lib里面,然后next,接下来选择 Spring Configeuration,因为是以Spring为核心,所以选择Spring的核心配置文件,他将Hibernate的配置文件信息都集成到里面了,在选择next,选择Existing Configuration file(因为开始已经有了applicationContext.xml,所以直接引用那个文件就ok了),下面有个SessionFactory,你可以自己命名,继续next,这里是要选择连接数据库的驱动(DB Driver),我用的SQL2005,驱动是我自己建好的,叫做fish,所以,我选择fish,接下来的就是连接数据库的一些常规属性,稍微懂一点English应该就没什么问题了,继续next,他会问你是否创建SessionFactory,这里不用创建了,因为Spring里面封装了SessionFactory,所以略去框里面的勾,然后点击finish,至此,Hiberinate框架导入完毕,ok,SSH框架导入基本完成,最后你可以在src下建几个包,我的是com.fish.pojo(放置orm映射出来的表信息,以及这些表的配置信息),com.fish.dao(这是放置业务逻辑处理接口的类的包),com.fish.daoimpl(放置实现接口的类,就是处理业务逻辑),com.fish.actions(这个包用来放置Action类的,通过Acton类与DAO层实现交互)。

      我觉得在开发软件过程中的代码低耦合是有好处的,这样可以提高代码的重用率,以及体现出清晰的分层思想,已减轻各个层开发人员的负担。

 

 

原创粉丝点击