这是我用myeclipse开发所做的一个例子
1、应用的工具:myeclipse6.5,struts2,spring2,hibernate3.2,mysql5,tomcat6
2、建表,在mysql中,create database `ssh`character set utf8。然后,create table `ssh`.`user` ( `id` int (10) UNSIGNED NOT NULL AUTO_INCREMENT , `name` char (10) , `pass` char (10) , PRIMARY KEY (`id`)) 。在表中插入一组数据insert into `user`(`id`,`name`,`pass`) values ( NULL,'王成','wangcheng') 。
??出现问题,在sqlyog中王成和wangcheng显示为红色。Char字符显示为红色,与列名等区分。
!!varchar为可变字符,为定义长度可变,存储时不定,char为定长,在右边补空格。
2、在myeclipse中新建WEB工程,用JAVE5EE,其余默认,名称SSH。
3、将sturts2blank中的5个JAR加上struts-spring…JAR,共6个JAR右键考入webroot/web-inf/lib。
4、配置spring和hibernate,先配S,自动就配上了。问题是S时选什么?myeclipse讲解视频14的说法,加入S Core、S AOP、S P Core、S P JDBC、S web L。用COPY功能。
5、再配H,把H相关全选上。因在配H时有一选项,为是否将JAR拷入LIB,选是,下面括号内的内容就不用。(将mysql-connector-java-5.1.6-bin.jar右键考入webroot/web-inf/lib)。选用J的配置文件,工厂等的ID全部用名称的小写。不用新建SessionFactory。
??在LIB中有许多JAR为重复。
删除asm-2.2.3.jar,log4j-2.0.11.jar、aspectjrt.jar、cglib-2.1.3.jar、c3p0-0.9.1.jar。
!!只从目录中删除是没用的,必须从LIB中物理删除,因TOMCAT自动从LIB中读取,不管是不是在目录中。
5、配置LOG4J,文件名为log4j.properties。放在WebRoot/WEB-INF下
具体如下:
log4j.rootLogger=DEBUG, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${myweb.root}/file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] %C{2} (%F:%L) - %m%n
说明:以DEBUG级别输出,输出到文件。可看各种说明。输出位置为应用的根目录。
6、首先,完成SPRING与STRUTS整合。
A、web.xml
--------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 用来定位Spring XML文件的上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml,classpath*:applicationContext*.xml </param-value>
</context-param>
<!-- LOG4J用,系统变量,在XML引用${myweb.root}即为应用的根目录 -->
<context-param>
<param-name> webAppRootKey </param-name>
<param-value> myweb.root </param-value>
</context-param>
<!-- LOG4J配置文件 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- SPRING的LISTENER -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- LOG4J的LISTENER -->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
</web-app> -------------------------------------------------------------------------------------------
!!内容照抄即可。注意:listener要在welcome后,filter内容,要有param。要配LOG4J时要加入上面所加注释中LOG4J部分,如不加LOG4J,上面三句可不写。
B、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>
<constant name="struts.objectFactory.spring.autoWire"
value="type" />
<constant name="struts.objectFactory" value="spring" />
<include file="dao/dao-struts.xml"></include>
</struts>
--------------------------------------------------------------------------------------------
!!constant要有,value要为type,与SPRING配置文件中的内容对应。Package包名可以是src下的包名,也可以用上面的。它只是一个标识,也可以自己起一个Result中可以加入name项,与之对应的类中要返回的内容对应。Clsaa要与SPRING中的bean id对应。可以包含文件,在struts中<include file=”***.xml”>。
Dao-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="cong" extends="struts-default">
<action name="deng" class="deng" >
<result>sss.jsp</result>
</action>
</package>
</struts>
----------------------------------------------------------------------------------------------
将此XML放在DAO下,纯为了研究。如上所写可以。
C、appilcationContext.xml
---------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byType"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/ssh"></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 bean="datasource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<!--struts配置-->
<bean id="deng" class="cong.Deng" >
<property name="message">
<value>Spring Struts 2 注入</value>
</property>
</bean>
</beans>
----------------------------------------------------------------------------------------------
其中,上面部分为myeclipse自己加入的H配置,下面为S的bean。
D、action类
import com.opensymphony.xwork2.ActionSupport;
public String execute() throws Exception
import只能是这个类,才可继承。在ACTION类中,Execute为主要方法,如为继承自ActionSupport,返回值大写。
7、整合SPRING与HIBERNATE
!!要用H的自动生成代码,要把S和H分别设置。另外,在写sessionfactory中的url时一定要写上数据库名,才可以自动生成。
配H时applicationContext.xml已经自动加入了H的代码。在配置时选上了HA,在myeclipse的数据库表名上右击,选Hibernate Reverse Engineering…,选好src,然后下面的除了最后一个全选上,后面先不管,点完成。系统生成了四个文件,abstractUser.java,User.java,User.hbm.xml