ssh框架学习

来源:互联网 发布:沃尔玛swot矩阵分析图 编辑:程序博客网 时间:2024/05/16 15:01

ssh框架学习指南:
create project
1.新建一个项目:项目名称
2.导入struts2+Spring+hiberate3基本包:
Struts2:
struts2-core-2.0.11.jar
ognl-2.6.11.jar
struts2-spring-plugin-2.0.11.jar
xwork-2.0.4.jar
Spring:
Spring.jar
spring-mock.jar
Hiberate3:
hibernate3.jar
如需要在添加对应的包。
添加sitemesh框架添加
struts2-sitemesh-plugin-2.0.6.jar
3.首先编写web.xml文件
Web.xml 文件规则:
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>
 /WEB-INF/daoContext.xml,/WEB-INF/applicationContext.xml
 </param-value>
 </context-param>


 <!-- 用于初始化Spring容器的Listener -->
 <listener>
 <listener-class>
 org.springframework.web.context.ContextLoaderListener
 </listener-class>
 </listener>

 <filter>
 <filter-name>struts-cleanup</filter-name>
 <filter-class>
 org.apache.struts2.dispatcher.ActionContextCleanUp
 </filter-class>
 </filter>

 <!-- 定义SiteMesh的核心过滤器 -->
 <filter>
 <filter-name>sitemesh</filter-name>
 <filter-class>
 com.opensymphony.module.sitemesh.filter.PageFilter
 </filter-class>
 </filter>

 <!-- 定义Struts2的核心过滤器 -->
 <filter>
 <filter-name>struts</filter-name>
 <filter-class>
 org.apache.struts2.dispatcher.FilterDispatcher
 </filter-class>
 </filter>

 <!-- 定义过滤器链 -->
 <!-- 排在第一位的过滤器是:ActionContextCleanUp过滤器。 -->
 <filter-mapping>
 <filter-name>struts-cleanup</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

 <!-- 排在第二位的过滤器是:SiteMesh核心过滤器。 -->
 <filter-mapping>
 <filter-name>sitemesh</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

 <!-- 排在第三位的过滤器是:FilterDispatcher过滤器。 -->
 <filter-mapping>
 <filter-name>struts</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

4.applicationContext.xml文件功能:
首先定义数据源
<!-- 定义数据源Bean,使用C3P0数据源实现 -->
 <bean id="dataSource"
 class="com.mchange.v2.c3p0.ComboPooledDataSource"
 destroy-method="close">
 <!-- 指定连接数据库的驱动 -->
 <property name="driverClass" value="com.mysql.jdbc.Driver" />
 <!-- 指定连接数据库的URL -->
 <property name="jdbcUrl" value="jdbc:mysql://localhost/auction" />
 <!-- 指定连接数据库的用户名 -->
 <property name="user" value="root" />
 <!-- 指定连接数据库的密码 -->
 <property name="password" value="admin" />
 <!-- 指定连接数据库连接池的最大连接数 -->
 <property name="maxPoolSize" value="20" />
 <!-- 指定连接数据库连接池的最小连接数 -->
 <property name="minPoolSize" value="1" />
 <!-- 指定连接数据库连接池的初始化连接数 -->
 <property name="initialPoolSize" value="1" />
 <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
 <property name="maxIdleTime" value="20" />
 </bean>
定义hiberate的SessionFactory
 <!--定义了Hibernate的SessionFactory -->
 <bean id="sessionFactory"
 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
 <property name="mappingResources">
 <list>
 <value>AuctionUser.hbm.xml</value>
 <value>Bid.hbm.xml</value>
 <value>Item.hbm.xml</value>
 <value>Kind.hbm.xml</value>
 <value>State.hbm.xml</value>
 </list>
 </property>
 <property name="hibernateProperties">
 <props>
 <prop key="hibernate.dialect">
 org.hibernate.dialect.MySQLDialect
 </prop>
 <prop key="show_sql">true</prop>
 <prop key="hibernate.hbm2ddl.auto">update</prop>
 <prop key="hibernate.jdbc.batch_size">20</prop>
 </props>
 </property>
 </bean>

 <bean id="transactionManager"
 class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory" ref="sessionFactory" />
 </bean>

<bean id="transactionInterceptor"
 class="org.springframework.transaction.interceptor.TransactionInterceptor">
 <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
 <property name="transactionManager" ref="transactionManager" />
 <property name="transactionAttributes">
 <!-- 下面定义事务传播属性-->
 <props>
 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
 <prop key="*">PROPAGATION_REQUIRED</prop>
 </props>
 </property>
 </bean>

提到代理,我们可以使用ProxyBeanFactory,并配置proxyInterfaces,target和interceptorNames实现,但如果需要代理的bean很多,无疑会对spring配置文件的编写带来繁重的工作
Spring为我们提供了,根据beanName匹配后进行自动代理的解决方法
<!-- 定义BeanNameAutoProxyCreator-->
 <bean
 class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
 <!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
 <property name="beanNames">
 <!-- 下面是所有需要自动创建事务代理的bean-->
 <list>
 <value>mgr</value>
 </list>
 <!-- 此处可增加其他需要自动创建事务代理的bean-->
 </property>
 <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
 <property name="interceptorNames">
 <list>
 <!-- 此处可增加其他新的Interceptor -->
 <value>transactionInterceptor</value>
 </list>
 </property>
 </bean>
5.daoContext.xml
DAO层xml文件配置:
这只是Dao层hiberate和数据库交互的一种方式:daoTemplate
<bean id="daoTemplate" abstract="true">
 <property name="sessionFactory" ref="sessionFactory" />
 </bean>

 <bean id="stateDao" class="org.hufei.dao.impl.StateDaoHibernate"
 parent="daoTemplate" />

 <bean id="kindDao" class="org.hufei.dao.impl.KindDaoHibernate"
 parent="daoTemplate" />

 <bean id="auctionUserDao"
 class="org.hufei.dao.impl.AuctionUserDaoHibernate"
 parent="daoTemplate" />

 <bean id="bidDao" class="org.hufei.dao.impl.BidDaoHibernate"
 parent="daoTemplate" />

 <bean id="itemDao" class="org.hufei.dao.impl.ItemDaoHibernate"
 parent="daoTemplate" />
6.decorators.xml
文件sitemesh修饰页面需要加入的顶层和底层
项目所有页面都需要这样修饰
<decorators defaultdir="/decorators">
 <!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
 <excludes></excludes>

 <!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
 用于装饰pattern指定的URL的所有页面-->
 <decorator name="main" page="main.jsp">
 <pattern>/*</pattern>
 </decorator>
</decorators>
7.struts.xml
该文件还可以包含所有action配置的xml,只要在该文件中included即可
<include file=”/文件路径和文件名”></included>
子文件命名规范:
文件名_struts.xml
<struts>
 <constant name="struts.custom.i18n.resources"
 value="messageResource" />
 <constant name="struts.i18n.encoding" value="GBK" />

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

 <interceptors>
 <interceptor name="authority"
 class="org.hufei.action.interceptor.AuthorityInterceptor" />
 <interceptor-stack name="auctionStack">
 <interceptor-ref name="defaultStack" />
 <interceptor-ref name="authority" />
 </interceptor-stack>
 </interceptors>

 <default-interceptor-ref name="auctionStack" />

 <global-results>
 <!-- 下面定义的结果对所有的Action都有效 -->
 <result name="login">/jsp/login.jsp</result>
 <result name="exception">/jsp/error.jsp</result>
 </global-results>
 <global-exception-mappings>
 <!-- 指Action抛出AuctionException异常时,转入名为exception的结果。 -->
 <exception-mapping
 exception="org.hufei.exception.AuctionException" result="exception" />
 <!-- 指Action抛出Exception异常时,转入名为exception的结果。 -->
 <exception-mapping exception="java.lang.Exception"
 result="exception" />
 </global-exception-mappings>


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

 <action name="viewItemSu"
 class="org.hufei.action.ViewSuAction">
 <result name="success">/jsp/viewSuccess.jsp</result>
 </action>

 <action name="viewFailItem"
 class="org.hufei.action.ViewFailAction">
 <result name="success">/jsp/viewFail.jsp</result>
 </action>

 <action name="viewBid" class="org.hufei.action.ViewBidAction">
 <result name="success">/jsp/viewBid.jsp</result>
 </action>

 <action name="mgrItem" class="org.hufei.action.MgrItemAction">
 <result name="success">/jsp/mgrItem.jsp</result>
 </action>

 <action name="mgrKind" class="org.hufei.action.MgrKindAction">
 <result name="success">/jsp/mgrKind.jsp</result>
 </action>


 <action name="viewKind"
 class="org.hufei.action.ViewKindAction">
 <result name="success">/jsp/viewKind.jsp</result>
 </action>

 <action name="viewItem"
 class="org.hufei.action.ViewItemAction">
 <result name="input">viewKind.action</result>
 <result name="success">/jsp/viewItem.jsp</result>
 </action>

 <action name="mgrUser" class="org.hufei.action.MgrUserAction">
 <result name="success">/jsp/mgrUser.jsp</result>
 </action>

 <action name="viewDetail"
 class="org.hufei.action.ViewDetailAction">
 <result name="error">/jsp/error.jsp</result>
 <result name="success">/jsp/viewDetail.jsp</result>
 </action>

 <action name="processLogin"
 class="org.hufei.action.LoginAction">
 <result name="input">/jsp/login.jsp</result>
 <result name="success">/jsp/main.jsp</result>
 <result name="failure">/jsp/login.jsp</result>
 <interceptor-ref name="defaultStack" />
 </action>

 <action name="proAddItem"
 class="org.hufei.action.AddItemAction">
 <result name="input" type="chain">mgrItem</result>
 <result name="success" type="chain">mgrItem</result>
 </action>

 <action name="proAddKind"
 class="org.hufei.action.AddKindAction">
 <result name="input" type="chain">mgrKind</result>
 <result name="success" type="chain">mgrKind</result>
 </action>

 <action name="bid" class="org.hufei.action.AddBidAction">
 <result name="input" type="chain">viewDetail</result>
 <result name="success" type="chain">viewBid</result>
 </action>


 <action name="*User" class="org.hufei.action.UserAction"
 method="{1}">
 <result name="add">/jsp/login.jsp</result>
 <result name="input">/jsp/regist.jsp</result>
 <result name="delete" type="redirect-action">jsp/mgrUser.action</result>
 <result name="edit">/jsp/editUser.jsp</result>
 <result name="editsuccess" type="redirect-action">jsp/mgrUser.action</result>
 <result name="editfail">/editUser.jsp</result>
 </action>

 </package>

</struts>

  胡斐
Email: hufei_2008@hotmail.com
  2009-5-20