這里是用SSH+MYSQL做的
首先在mysql建立表user 字段有3個 id(int) 、username(varchar) 、password(varchar)其中id為主鍵。
新建web工程
切換到數據庫透視圖,在空白區域右鍵并選擇new,如下圖(我這里是已經建立好了好幾個數據庫連接了)
在第一個Driver template 里面選擇mysql的那個
其他配置信息自己填寫
有個ADD jars 選擇mysql的數據庫驅動包,點finish就可以了
右鍵你剛剛配置好的連接,選擇open connection 可以打開連接,若未成功請根據錯誤仔細檢查配置。
切換回j2ee透視圖
右鍵你的工程,選擇MyEclipse->add Struts capabilities…如圖:
Struts用的版本是1.1,在Base package for new classess:里輸入資源配置文件的路徑.然后點進擊Finish按鈕
加入spring包,右鍵工程選擇MyEclipse->add Spring capabilities...如圖:
Spring版本我用2.0,注意所選jar包里面還有最后一個看到不的spring 2.0 web Labraries要選擇中,在JAR Library Insatallation 里選擇Library存放的路徑,路徑選擇圖上的這個為佳,然后點擊Next。
上圖是Spring的配置文件存放徑。點擊Finish。之后會遇到有相同的library提示,選擇keep existing。
把Hibernate相關的jar包等加載進來
MyEclipse->add Hibernate capabilities...如圖:
我用的是3.0 ,點擊Next。
上面所示為Hibernate用的是Spring 的配置文件,因和Spring結合在一起,所以不用Hibernate.cfg.xml,選擇第2個applicationContext.xml,點擊Next
為SessionFactory ID取名:sessionFactory點擊Next。
Bean ID 輸入dataSource ,DB Driver 選擇你剛剛配置的,點擊next
這里我們把勾勾掉,我們不需要創建這個,點擊Finish就可以了。
在web.xml文件里面把spring的配置文件加載進來, 要注意spring配置文件的放置路徑











再把struts標簽加進來,這里要注意路徑了,在jsp頁面上使用的時候也要注意路徑


































在工程下建立一些包備用,如下圖:
然后打開MyEclipse Database Explorer(數據庫透視圖),打開剛才連接的數據庫,用鼠標右擊user表,選擇Hibernate Reverse Engineering,打開一對話框如下:
要注意最上面src和package的選擇,點擊next。
選擇increment即可,finish完成。
找到剛生成的hbm.xml把catalog刪除掉,否則會報錯(oracle數據庫不要刪除)
找到struts的配置文件,選擇design視圖,右鍵選擇new —>formbean action and jsp:
選擇NEXT
我用的Superclass 是第2個DispatchAction,個人比較喜歡它,最下面的Parameter輸入status(這個隨你數入什么,一會要對應到就行),點擊finish完成。
接下來我們來寫dao借口,在dao包下新建interface,代碼如下:



在dao包下的impl包下新建類實現這個接口
注意這里要繼承HibernateDaoSupport和實現剛剛的接口。
















在service包下創建接口IUserService,里面的方法和dao的一樣,復制過來
boolean insert(User user);
}
在service包下的impl建立類實現這個接口,并且將IUserDao接口作為它的一個屬性(要有setter、getter方法),這里是通過配置文件將它注入進來,一會spring配置文件就會體現出來,代碼如下。
private IUserDao iuserdao;
public boolean insert(User user) {
// TODO Auto-generated method stub
return iuserdao.insert(user);
}
public IUserDao getIuserdao() {
return iuserdao;
}
public void setIuserdao(IUserDao iuserdao) {
this.iuserdao = iuserdao;
}
}
打開struts的配置文件,在 </action-mappings>下加入
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
并在action里面加入forward元素
這個配置文件完成,如下:
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="userForm" type="com.myssh.form.UserForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="userForm"
name="userForm"
parameter="status"
path="/user"
scope="request"
type="com.myssh.action.UserAction"
validate="false" >
<forward name="success" path="/success.jsp"></forward>
<forward name="fail" path="/fail.jsp"></forward>
</action>
</action-mappings>
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
<message-resources parameter="com.myssh.struts.ApplicationResources" />
</struts-config>
在webroot下建立test.jsp success.jsp fail.jsp
success.jsp在body加入
<h1>
struts+spring+hibernate練習
</h1>
<br />
<h2>
恭喜,插入用戶成功!!!
</h2>
就可以,而fail.jsp把 “恭喜,插入用戶成功!!!”改成“對不起,插入失敗!!”。
test.jsp的代碼:





































打開類
private String username;
private String password;
打開UserAction類,將service接口做為它的一個屬性,并生成getter和setter方法。
屬性是 private IUserService iuserservice;
代碼如下:
private IUserService iuserservice;
public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
User user = new User();
user.setUsername(userForm.getUsername());
user.setPassword(userForm.getPassword());
boolean b = iuserservice.insert(user);
if(b){
return mapping.findForward("success");
}else{
return mapping.findForward("fail");
}
}
public IUserService getIuserservice() {
return iuserservice;
}
public void setIuserservice(IUserService iuserservice) {
this.iuserservice = iuserservice;
}
}
下面我們來配置spring
<beans
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.0.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/ding"></property>
<property name="username" value="root"></property>
<property name="password" value="ding"></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>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/myssh/po/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean name="/user" class="com.myssh.action.UserAction">
<!--這里將iuserservice屬性注入進來了,在這就是UserAction類里面有這個屬性并且有getter和setter方法的原因-->
<property name="iuserservice">
<ref bean ="iuserservice"/>
</property>
</bean>
<!--這里的class必須是實現類的路徑,而不是接口本身-->
<bean id="iuserservice" class="com.myssh.service.impl.UserServiceImpl">
<!--這里將iuserdao屬性注入進來了,在這就是UserService類里面有這個屬性并且有getter和setter方法的原因-->
<property name="iuserdao">
<ref bean="iuserdao"/>
</property>
</bean>
<!--這里的class必須是實現類的路徑,而不是接口本身-->
<bean id="iuserdao" class="com.myssh.dao.impl.UserDaoImpl">
<!--這里將sessionFactory注入進來了-->
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>
運行工程測試,注意有些錯誤是jar包引起的,所以要加入LOG4J 文件,方便看到錯誤好方便去網上找到答案。
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
這個錯誤是asm-2.23.jar導致的(刪除),lib下只需要一個asm.jar,多個會沖突
我少了這個commons-pool.jar 包報創建sessionFactory出錯,加上去就好了
在輸入框里面輸入 ding/123
提示成功,一看數據庫也有數據了
OK啦
這里補充下:
對于test.jsp的 <html: form action="/user.do?status=insert">
要是普通的action就只要寫<html: form action="/user">就可以了
我用的是DispathAction 所以要有個參數來標示,status對應于
struts配置文件里面的parameter
<action
attribute="userForm"
name="userForm"
parameter="status"
path="/user"
scope="request"
type="com.myssh.action.UserAction"
validate="false" >
<forward name="success" path="/success.jsp"></forward>
<forward name="fail" path="/fail.jsp"></forward>
</action><action
attribute="userForm"
name="userForm"
parameter="status"
path="/user"
scope="request"
type="com.myssh.action.UserAction"
validate="false" >
<forward name="success" path="/success.jsp"></forward>
<forward name="fail" path="/fail.jsp"></forward>
</action>
而insert對于UserAction類里面的方法
有什么問題請留言
源碼下載地址:http://www.aygfsteel.com/Files/laoding/myssh.rar
里面的jar包比較多,我把它們去掉了,自己加上去