laoding
          本來我以為,隱身了別人就找不到我,沒有用的,像我這樣拉風的男人,無論走到哪里,都像在黑暗中的螢火蟲一樣,那樣的鮮明,那樣的出眾。我那憂郁的眼神,稀疏的胡茬,那微微隆起的將軍肚和親切的笑容......都深深吸引了眾人......
          posts - 0,  comments - 37,  trackbacks - 0
          這個是我抽空花了一上午做的,希望對大家有所幫助,廢話不多說,下面開始

          這里是用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包等加載進來
          My
          Eclipse->add Hibernate capabilities...如圖:



          我用的是
          3.0 ,點擊Next



          上面所示為H
          ibernate用的是Spring 的配置文件,因和Spring結合在一起,所以不用Hibernate.cfg.xml,選擇第2applicationContext.xml,點擊Next



          SessionFactory ID取名:sessionFactory點擊Next



          Bean ID 輸入dataSource DB Driver 選擇你剛剛配置的,點擊next


          這里我們把勾勾掉,我們不需要創建這個,
          點擊Finish就可以了。

          web.xml文件里面把spring的配置文件加載進來, 要注意spring配置文件的放置路徑

            <context-param>
              
          <param-name>contextConfigLocation</param-name>
              
          <param-value>/WEB-INF/applicationContext.xml</param-value>
            
          </context-param>
            
          <servlet>
                  
          <servlet-name>contextLoader</servlet-name>
                  
          <servlet-class>
                      org.springframework.web.context.ContextLoaderServlet
                  
          </servlet-class>
                  
          <load-on-startup>0</load-on-startup>
              
          </servlet>

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

          <jsp-config>
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
                      
          <taglib-location>
                          
          /WEB-INF/tld/struts-html.tld
                      
          </taglib-location>
                  
          </taglib>
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
                      
          <taglib-location>
                          
          /WEB-INF/tld/struts-bean.tld
                      
          </taglib-location>
                  
          </taglib>
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
                      
          <taglib-location>
                          
          /WEB-INF/tld/struts-logic.tld
                      
          </taglib-location>
                  
          </taglib>
                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-nested.tld</taglib-uri>
                      
          <taglib-location>
                          
          /WEB-INF/tld/struts-nested.tld
                      
          </taglib-location>
                  
          </taglib>

                  
          <taglib>
                      
          <taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri>
                      
          <taglib-location>
                          
          /WEB-INF/tld/struts-tiles.tld
                      
          </taglib-location>
                  
          </taglib>

              
          </jsp-config>




          在工程下建立一些包備用,如下圖:



          然后打開
          MyEclipse Database Explorer(數據庫透視圖),打開剛才連接的數據庫,用鼠標右擊user表,選擇Hibernate Reverse Engineering,打開一對話框如下:


          要注意最上面
          srcpackage的選擇,點擊next



          選擇
          increment即可,finish完成。


          找到剛生成的
          hbm.xmlcatalog刪除掉,否則會報錯(oracle數據庫不要刪除)




          找到
          struts的配置文件,選擇design視圖,右鍵選擇new —>formbean action and jsp:



          選擇
          NEXT



          我用的
          Superclass 是第2DispatchAction,個人比較喜歡它,最下面的Parameter輸入status(這個隨你數入什么,一會要對應到就行),點擊finish完成。

          接下來我們來寫dao借口,在dao包下新建interface,代碼如下:

          public interface IUserDao {
              
          boolean insert(User user);
          }

          dao包下的impl包下新建類實現這個接口



          注意這里要繼承
          HibernateDaoSupport和實現剛剛的接口。

           


          public class UserDaoImpl extends HibernateDaoSupport implements IUserDao {

              
          public boolean insert(User user) {
                  
          boolean b = false;
                  
          try{
                      
          this.getHibernateTemplate().save(user);
                      b
          = true;
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }

                  
                  
          return b;
              }


          }

           

          service包下創建接口IUserService,里面的方法和dao的一樣,復制過來

          public interface IUserService {
              
          boolean insert(User user);
          }

          service包下的impl建立類實現這個接口,并且將IUserDao接口作為它的一個屬性(要有settergetter方法),這里是通過配置文件將它注入進來,一會spring配置文件就會體現出來,代碼如下。

          public class UserServiceImpl implements IUserService {

              
          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元素

          這個配置文件完成,如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!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.jspbody加入

              <h1>

                        struts+spring+hibernate練習

                     </h1>

                     <br />

                     <h2>

                        恭喜,插入用戶成功!!!

                     </h2>

          就可以,而fail.jsp 恭喜,插入用戶成功!!!”改成“對不起,插入失敗!!”。

          test.jsp的代碼:

          <%@ page language="java" pageEncoding="UTF-8"%>
          <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%>
          <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
          <%@ taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic" %>

          <html>
              
          <head>
                  
          <title>JSP for LoginForm form</title>
              
          </head>
              
          <body>
                  
          <center>
                      
          <br />
                      
          <br />
                      
          <h1>
                          struts
          +spring+hibernate練習
                      
          </h1>
                      
          <br />
                      
          <h2>
                          測試插入
                      
          </h2>
                      
          <br />
                      
          <html:form action="/user.do?status=insert">

                      用戶名 : 
          <html:text property="username" />
                          
          <br /><br />
                      密  碼 : 
          <html:password property="password" />
                          
          <br /><br />
                          
          <html:submit value="測試" />
                          
          <html:reset value="重置" />
                          
          <br />
                          
          <br />
                      
          </html:form>
                  
          </center>
              
          </body>
          </html>


          打開類UserForm加入2個屬性,并生成gettersetter方法

             

              private String username;

              private String password;

          打開UserAction類,將service接口做為它的一個屬性,并生成gettersetter方法。

          屬性是 private IUserService iuserservice;

          代碼如下:

          public class UserAction extends DispatchAction {
              
              
          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

          <?xml version="1.0" encoding="UTF-8"?>
          <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包比較多,我把它們去掉了,自己加上去


          posted on 2008-09-05 15:18 老丁 閱讀(7907) 評論(3)  編輯  收藏 所屬分類: ssh

          FeedBack:
          # re: ssh+mysql簡單例子實現
          2009-06-11 12:18 | 不知名網友~
          感謝,正想找找在ACTION中調用service的方式,這文章很有參考價值  回復  更多評論
            
          # re: ssh+mysql簡單例子實現
          2010-09-18 21:20 | jinguizi
          拜讀了你的SSH+MYSQL的文章,覺得很不錯,很合適我們初學者。
          有一問題想咨詢:我配置完畢,訪問test.jsp文件,并提交表單時,出現了以下錯誤信息:
          exception

          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
          org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1175)
          org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
          org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
          org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
          org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
          org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
          org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285)
          org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
          org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
          org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
          org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:82)
          javax.servlet.GenericServlet.init(GenericServlet.java:212)
          org.apache.catalina.startup.Catalina.start(Catalina.java:552)
          sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          java.lang.reflect.Method.invoke(Unknown Source)
          org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
          org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

          十分感謝。  回復  更多評論
            
          # re: ssh+mysql簡單例子實現
          2012-03-22 21:14 | neely
          樓主,add Spring capabilities這一步,沒有找到"spring2.0 ORM/DAO/Hibernate3 Libraries-<Myeclipse-Library>“ 這一勾選項  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          本博客主為學習和復習之用,無關其他,想罵人的繞道
          Email:dkm123456@126.com
          大家一起交流進步
          QQ:283582761


          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          留言簿(4)

          我參與的團隊

          文章分類(50)

          文章檔案(48)

          相冊

          朋友

          搜索

          •  

          積分與排名

          • 積分 - 96532
          • 排名 - 600

          最新評論

          主站蜘蛛池模板: 宾川县| 锦州市| 永康市| 益阳市| 渑池县| 奉节县| 喀喇沁旗| 河东区| 长兴县| 中牟县| 汝阳县| 静安区| 那曲县| 噶尔县| 鹤壁市| 额尔古纳市| 中宁县| 原阳县| 沧源| 栾川县| 从江县| 金华市| 静宁县| 邳州市| 离岛区| 长治县| 来凤县| 龙里县| 桃园县| 五河县| 民权县| 兴义市| 安岳县| 澄城县| 谢通门县| 台东市| 天镇县| 磐石市| 镶黄旗| 呼伦贝尔市| 莆田市|