SSH2开发框架搭建

SSH2三大框架的集成开发环境搭建


学过Java的童鞋都知道,Java中各式各样的框架多如牛毛,Web前端的框架也是数不胜数。在这里,我们要弄清楚一点,我们为什么要学习框架?(多就多呗,关我啥事儿?)

荀子曰:“君子性非异也,善假于物也”。框架不是成型的产品,而是给开发人员用的二次开发包。框架能够帮助我们简化开发步骤,减少工作量,辅助开发人员更加有效的进行开发。各式各样的开源框架的产生其实得益于Java的开源,是Java的开源,使得各种各样的Java框架迅速发展。。(有点跑。。)所以说,善于利用工具,善于利用框架辅助我们进行开发,也是一种非常重要的能力。

但是,如果想将这些框架都学完的话,那还不如直接去自杀更痛快一些,太痛苦了。所以,在学习框架的过程中,有一个正确的态度对待框架是非常重要的。

在过去的年代,学五车竹简书就已经很有才华了(学富五车),但是现如今信息爆炸的时代,上了二十多年的大学生仍然找不到工作。

所以,你别指望着把知识学完,要在学习框架的过程中,对一些经典的框架、典型框架进行深入剖析,以后工作中用到的框架也比较固定,即便是你没学过的,但是你学过类似的框架,类比着学,掌握学习的方法,就能轻松做到触类旁通。


在前面的文章中,分别介绍了struts、Hibernate、spring中的一些概念。今天,我们就来对SSH2框架进行集成。下面看开发环境搭建:

引入的jar包介绍:

(其实,为了深究这三个框架,大家应该明白每个jar包的主要功能是什么,因为不怕你不知道某个jar包怎么用,就怕你不知道这个框架有这个功能 。看完后你很可能记不住,但是你肯定有看过那一遍的印象。这里,我就只将应到的包的功能查了出来,并放在了这里,其他的大家自己下去查。)

struts2

jar包


主要内容

commons-fileupload-1.3.jar


文件上传

commons-io-2.0.1.jar


commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的

commons-lang3-3.1.jar


commons中的lang包

freemarker-2.3.19.jar


支持freemaker的,在webwork中也有。struts2的UI标签的模板使用FreeMarker编写

javassist-3.11.0.GA.jar


一个开源的分析、编辑和创建java字节码的类库(Hibernate中也需要,引入一个即可)

ognl-3.0.6.jar


Object-Graph Navigation Language表达式,对象图导航语言。struts2通过其读写对象的属性

struts2-core-2.3.15.1.jar


核心包

struts2-spring-plugin-2.3.15.1.jar


Struts与Spring集成时使用的,引入该jar包后需要在struts.xml中指定struts的ObjectFactory(可以使struts也可以使Spring),不然程序报错

xwork-core-2.3.15.1.jar


WebWork和Struts2所依赖的核心包


Spring:

jar包


主要内容

lib/aspectj/ aspectjrt.jar


支持AOP的包

lib/aspectj/ aspectjweaver.jar


处理事务和aop所需包

lib/jakarta-commons/commons-logging.jar


ASF出品的日志包,三个框架使用这个日志包来支持log4J和JDK的日志记录

lib/jakarta-commons/commons-pool.jar


支持BasicDataSource来配置数据库连接

lib/jakarta-commons/commons-dbcp.jar


支持BasicDataSource来配置数据库连接

dist/spring.jar


Spring核心包

lib/cglib/cglib-nodep-2.1_3.jar


支持cglib动态代理的包

common-annotations.jar


注解包

  

Hibernate:

jar包


主要内容

lib/ required/ antlr-2.7.6.jar


语言转换工具,Hibernate利用它实现HQL到SQL的转换

lib/ required/commons-collections-3.1.jar


包含了一些Apache开发的集合类。commons项目中的子项目,是对collection集合的封装

lib/ required/dom4j-1.6.1.jar


读写xml文件

hibernate3.jar


核心包

lib/jpa/ hibernate-jpa-2.0-api-1.0.0.Final.jar


对JPA规范的支持

lib/bytecode/ javassist/javassist-3.12.0.GA.jar


一个开源的分析、编辑和创建Java字节码的类库

lib/ required/jta-1.1.jar


标准的java中事务处理接口

web.xml文件

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
        id="WebApp_ID" version="2.5"> 
        <display-name>SSH2</display-name> 
        <context-param> 
            <param-name>contextConfigLocation</param-name> 
            <!-- 如果将该xml文件放在WEB-INF下面的话,就需要下面配置 <param-value>WEB-INF/applicationContext.xml</param-value> --> 
            <!-- 下面是默认配置 --> 
            <param-value>classpath:com/lzq/config/applicationContext-*.xml</param-value> 
        </context-param> 
     
        <!-- 配置spring -->   
        <listener> 
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
        </listener> 
             
        <!-- Struts2配置 --> 
        <filter> 
            <filter-name>struts2</filter-name> 
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
            <init-param> 
                <param-name>config</param-name> 
                <param-value>struts-default.xml,struts-plugin.xml,com/lzq/config/struts.xml</param-value> 
            </init-param> 
        </filter> 
        <filter-mapping> 
            <filter-name>struts2</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping> 
    </web-app> 


Spring的配置文件:applicationContext-*.xml文件

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
     
        <!-- 启用spring注解支持 --> 
        <context:annotation-config /> 
        <!-- 第一种配置sessionFactory的方法:这种方法,需要Hibernate的hibernate.cfg.xml文件  
             <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
            <property name="configLocation"> <value>classpath:config/hibernate.cfg.xml</value>  
            </property> 如果采用注解的方式注册实体类,则可以采用如下方法来简化注册步骤,并且class为AnnotationSessionFactoryBean  
            <property name="packagesToScan"> <list> <value>com.lzq.config</value> </list>  
            </property> </bean> --> 
     
        <!-- 第二种配置sessionFactory的方法:使用BasicDataSource配置数据库连接 --> 
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
            destroy-method="close"> 
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
            <property name="url" value="jdbc:mysql://localhost:3306/SSH2"></property> 
            <property name="username" value="root"></property> 
            <property name="password" value="root"></property> 
        </bean> 
        <bean id="sessionFactory" 
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
            <property name="dataSource" ref="dataSource"></property> 
            <!-- 设置Hibernate属性 --> 
            <property name="hibernateProperties"> 
                <props> 
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
                    <prop key="hibernate.hbm2ddl.auto">update</prop> 
                </props> 
            </property> 
            <!--如果采用传统的hbm.xml的方式,可以采用如下方式来简化注册hbm.xml的步骤, 并且class为LocalSessionFactoryBean  --> 
            <property name="mappingLocations"> 
                <list> 
                    <value>classpath:/com/lzq/entity/*.hbm.xml</value> 
                </list> 
            </property> 
        </bean> 
        <!-- 事务管理 --> 
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory"></property> 
        </bean> 
     
        <!--配置事务 事务细节 :事务的传播特性 --> 
        <tx:advice id="txadvice" transaction-manager="transactionManager">  
            <tx:attributes>  
                <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>  
                <tx:method name="modify*" propagation="REQUIRED" no-rollback-for="myException"/>  
                <tx:method name="del*" propagation="REQUIRED"/>  
                <tx:method name="*" read-only="true"/>  
            </tx:attributes>  
        </tx:advice>  
        <!-- 配置参与事务的类  --> 
        <aop:config>  
            <aop:pointcut expression="execution(* com.lzq.dao.*.*(..))" id="daoMethod"/>  
            <aop:advisor advice-ref="txadvice" pointcut-ref="daoMethod"/>  
        </aop:config>  
    </beans> 


struts2的配置文件——struts.xml文件

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    <?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.3.dtd"> 
     
    <struts> 
     
        <!-- 访问时,不需要加.action,无须任何后缀名 --> 
        <constant name="struts.action.extension" value=","></constant> 
         
        <!-- 引入上传的配置文件 --> 
        <include file="com/lzq/config/struts-upload.xml"></include> 
         
        <!-- 告诉struts2,action的创建交给spring --> 
        <constant name="struts.ObjectFactory" value="spring"></constant> 
         
        <!-- package:用来统一管理action --> 
        <package name="loginAction" namespace="/user" extends="struts-default"> 
            <action name="login" class="loginAction"> 
                <result name="success" type="redirect">../user.jsp</result> 
                <result name="error" type="redirect">/error.jsp</result> 
            </action> 
        </package> 
     
        <package name="userManager" namespace="/user" extends="struts-default"> 
            <!-- 拦截连 --> 
            <interceptors> 
                <interceptor name="myInterceptor" class="myInterceptor4" /> 
                <interceptor-stack name="defaultInterceptorStack"> 
                    <interceptor-ref name="myInterceptor"></interceptor-ref> 
                    <!-- 拦截器 配置问手写的拦截器,还要配置struts2的拦截器,不然后冲掉手写的拦截器 --> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
                </interceptor-stack> 
            </interceptors> 
            <action name="*User_*" class="userManagerAction" method="{1}User"> 
                <!-- 默认是转发 --> 
                <result name="success" type="redirect">/success.jsp</result> 
                <!-- 重定向 --> 
                <result name="error" type="redirect">/error.jsp</result> 
                <result name="checkError">/checkError.jsp</result> 
                <!-- 拦截连 --> 
                <interceptor-ref name="defaultInterceptorStack"></interceptor-ref> 
            </action> 
        </package> 
    </struts> 



像上面这样,就基本配置了SSH2的开发环境,具体的细节的东东就不往上粘了,提供实例下载(SSH2实例下载),想仔细学习的童鞋可以去下载实例慢慢研究,想了解大概思路的童鞋看本文内容就足够了。

SSH2三个框架中需要学习的内容还是很多的,这里只是介绍了基础中的基础,只搭建了开发环境,本篇博客也只算是学习SSH2的一个开始。希望和大家共同探讨,共同学习。

猜你喜欢

转载自wangqs1984.iteye.com/blog/2203005
今日推荐