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文件

<?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文件

<?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文件

<?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的一个开始。希望和大家共同探讨,共同学习。


你可能感兴趣的:(开源框架,ssh2)