SSH全注解整合开发环境安装配置 v1.0.BETA

来源:互联网 发布:ucloud域名备案 编辑:程序博客网 时间:2024/04/28 19:35

采用的整合方案为:Action交由Spring创建,需用到的整合包:struts2-spring-plugin-xxx.jar。

 

1. Stuts2的安装

1.1 下载struts2所需的包

    到http://struts.apache.org/download.cgi/,下载struts2。找到struts2所需的5个核心包:

a、struts2-core.jar  struts2的核心包,struts框架的“外衣”(注:略去文件名中的版本号,下同)

b、xwork-core.jar  struts2核心包,是webwork内核

c、ognl.jar  ognl表达式,类似EL表达式,比EL表达式强大

d、freemarker.jar  比jsp更好用功能更强大的表现层技术

e、commons-fileupload.jar  实现文件上传功能

    另外还有其他的包如果需要的话也可添加。将选择的包添加到项目中的lib文件夹中,并添加到classpath。

    注:不同版本所需的依赖包不同,如果启动报错,有可能是缺少包,需按照报错提示添加包。

1.2 配置Struts2

1.2.1 配置web.xml

    在web.xml中配置Struts2的前端控制器。Struts2使用filter实现前端控制器,不是servlet。示例:

<?xmlversion="1.0" encoding="UTF-8"?>

<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

       <filter>

              <filter-name>Strut2Controller</filter-name>

              <filter-class>

                     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

              </filter-class>

       </filter>

       <filter-mapping>

              <filter-name>Strut2Controller</filter-name>

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

       </filter-mapping>

      

       <welcome-file-list>

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

       </welcome-file-list>

</web-app>

1.2.2 配置struts的配置文件struts.xml

    struts.xml文件告诉struts2请求对应的java类,存放到根目录src中,编译后该文件位于WEB-INF/classes/下。示例:

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEstruts PUBLIC

    "-//Apache Software Foundation//DTDStruts Configuration 2.0//EN"

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

<struts>

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

              <action name="index-*" class="action.IndexAction" method="{1}">

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

              </action>             

              <!--定义全局result-->

<!--         <global-results>-->

<!--                <resultname="error">error.jsp</result>-->

<!--         </global-results>-->           

              <!--异常处理,将框架捕获的异常调用指定result处理 -->

<!--         <global-exception-mappings>-->

<!--                <exception-mappingresult="error" exception="java.lang.Exception">-->

<!--              </exception-mapping>-->

<!--         </global-exception-mappings>-->           

       </package>  

</struts>

1.3 注解配置

1.3.1 导入struts2-convention-plugin-xxx.jar插件。

1.3.2 常用的action注解用法:

1.3.2.1 用法1

@Action(value="gotoOfficialLoginPage",results={

    @Result(name="officialLoginPage", location="/WEB-INF/content/wsweb/offical/login.ftl")    

})

public StringgotoOfficialLoginPage() { }

无需配置1.2.2中的struts.xml。

1.3.2.2 用法2(用法1的简写方式)

@Action("action1")

public String method() {

    return "str1";

}

可匹配的资源:

action1.jsp

str1.jsp

action1-str1.jsp

此时需要配置struts.xml文件,添加:

<constantname="struts.convention.result.path" value="/"/>

来定义Convention插件定位视图资源的根路径,其默认值为/WEB-INF/content。

 

2. Spring安装

2.1 下载Spring所需的包

    到http://maven.springframework.org/release/org/springframework/spring/下载所需的Spring压缩包,找到所需的基本jar包,加入到项目lib中,并添加至classpath:[3.2.4.RELEASE]

a、   spring-aop-xxx.jar

b、  spring-aspects-xxx.jar

c、   spring-beans-xxx.jar

d、  spring-build-src-xxx.jar

e、   spring-context-xxx.jar

f、   spring-context-support-xxx.jar

g、  spring-core-xxx.jar

h、  spring-jdbc-xxx.jar

i、    spring-orm-xxx.jar

j、    spring-tx-xxx.jar

添加包的注意事项参考添加struts2包的。

2.2 配置Spring

2.2.1 配置web.xml

    在web.xml中添加spring的配置:

<!--Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用","号分隔,此参数用于后面的SpringContext Loader -->

       <context-param>

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

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

       </context-param>

       <!--SpringApplicationContext载入,在启动时,实例化Spring容器 -->

       <listener>

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

       </listener>

2.2.2 配置spring的配置文件applicationContext.xml

    示例:

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:jee="http://www.springframework.org/schema/jee"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xmlns:aop="http://www.springframework.org/schema/aop"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"

       default-lazy-init="true">

       <bean id="testService" class="service.impl.TestService"></bean>  

</beans>

2.3 注解配置

2.3.1 在spring的配置文件里面只需要加上<context:annotation-config/>和<context:component-scanbase-package="需要实现注入的类所在包"/>,可以使用base-package="*"表示全部的类。

2.3.2 用法示例

    Service:

@Service(value ="testService")

publicclass TestServiceimplements ITestService {

       ……

}

    Action:

publicclass IndexAction {

       //inject

       @Resource(name ="testService")

       private ITestServicetestService;

       ……

}

2.4 事务管理注解配置 [非注解方式的事务控制可采用AOP切入实现]

2.4.1 在spring配置文件里添加如下配置即可:

        <!--事务管理器配置,多数据源JTA事务-->

        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

              <property name="sessionFactory" ref="sessionFactory" />

       </bean>

       <!--使用annotation定义事务 -->

       <tx:annotation-driven transaction-manager="transactionManager" />

2.4.2 用法

在service上添加@Transactional注释即可。

2.5 整合

2.5.1 Spring整合Struts2

    添加struts2-spring-plugin-xxx.jar包(可在Struts2安装包里找到)到lib并添加至classpath即可完成两者整合。

2.5.2 Spring整合JDBC

2.5.2.1 添加连接池支持包和数据库连接包(本例用oracle数据库)

a、   commons-collections-xxx.jar

b、  commons-dbcp-xxx.jar

c、   commons-pool-xxx.jar

d、  ojdbc14.jar

2.5.2.2 配置applicationContext.xml,添加dataSource bean,以便dao使用

    示例:

    <!--数据源配置,使用应用内的DBCP数据库连接池 -->

       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 

              <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

              <property name="url" value="jdbc:oracle:thin:@117.27.144.87:1521:microvideo" />

              <property name="username" value="event" />

              <property name="password" value="event123" />

 

              <!-- Connection Pooling Info -->

              <property name="initialSize" value="5" />

              <property name="maxActive" value="100" />

              <property name="maxIdle" value="30" />

              <property name="maxWait" value="500" />

              <property name="poolPreparedStatements" value="false" />

              <property name="defaultAutoCommit" value="false" />

       </bean>

2.5.2.3 使用示例

@Repository(value ="userDao")

publicclass UserDaoJdbcImplextends JdbcDaoSupportimplements UserDao {

    //inject注入dataSource

       @Resource(name ="dataSource")

       publicvoid setMyDataSource(DataSource dataSource) {

              super.setDataSource(dataSource);

       }

 

       public List<User> selectAllUsers() {

              List<User> users =new ArrayList<User>();         

              String sql = "SELECT * FROM sysuser";             

              users = this.getJdbcTemplate().query(sql,new UserRowMapper());           

              return users;

       }

}

    DAO继承JdbcDaoSupport,JdbcDaoSupport帮我们自动注入了上面定义的dataSource组件。

2.5.3 Spring整合Hibernate [需先安装配置hibernate,参考第3小节]

    Spring整合Hibernate是建立在整合Jdbc的基础上的。

2.5.3.1配置applicationContext.xml,添加sessionFactory bean,以便dao使用

    在2.5.2.2基础上,再配置一个sessionFactory bean,示例:

       <!-- Hibernate配置 -->

       <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

              <property name="dataSource" ref="dataSource" />

              <property name="namingStrategy">

                     <bean class="org.hibernate.cfg.ImprovedNamingStrategy" />

              </property>

              <property name="hibernateProperties">

                     <props>

                            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>

                            <prop key="hibernate.show_sql">true</prop>

                            <prop key="hibernate.format_sql">true</prop>

                            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>

                            <prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>

                            <prop key="hibernate.cache.use_query_cache">true</prop>

                     </props>

              </property>

              <property name="packagesToScan">

                     <list>

                            <value>com.hcl.hgevent.**.*</value>

                            <value>com.visondata.**.*</value>

                     </list>

              </property>

       </bean>

2.5.3.2 使用示例

@Repository(value ="hgActivityVideoDao")

publicclass HgActivityVideoDaoImplextends HibernateDaoSupportimplements IHgActivityVideoDao {   

       //inject注入sessionFactory

       @Resource(name ="sessionFactory")

       publicvoid setMySessionFactory(SessionFactory sessionFactory) {

              super.setSessionFactory(sessionFactory);

       }

             

       public Page<HgActivityVideo>getUserVideoList(String userId, Integer pageNo, Integer pageSize) {

              ……

              Queryquery =

                            this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);

              ……

       }

}

 

3. Hibernate安装

3.1 下载Hibernate所需安装包

到http://www.hibernate.org/downloads下载所需版本的hibernate包,找到所需的基本jar包,加入到项目lib中,并添加至classpath:[4.2.6.FINAL]

a、   antlr-xxx.jar

b、  dom4j-xxx.jar

c、   hibernate-commons-annotations-xxx.jar

d、  hibernate-core-xxx.jar

e、   hibernate-jpa-2.0-api-xxx.jar

3.2 配置整合Hibernate

    参见2.5.3。

3.3 实体类注解示例

@Entity

@Table(name ="HG_VOTER")

//默认的缓存策略.

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

publicclass HgVoter {

       @Id

       @Column(name ="HGVOTERID", unique=true, nullable =false)

       @GeneratedValue(strategy=GenerationType.SEQUENCE)

       @GenericGenerator(name ="SEQ_HG_VOTER", strategy ="sequence", parameters =@Parameter(name ="sequence", value ="SEQ_HG_VOTER"))

       private Integerhgvoterid;

       private Stringuserid;

       //getter setter

}