176142998

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

          源碼下載:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2857703

          1. 準(zhǔn)備

          工具:MyEclipse 6.0.1 GAmysql-connector-java-5.0.4-bin.jarMySql GUI Tools 5.0(便于管理MySql數(shù)據(jù)庫(kù),不是必須)

          環(huán)境:Tomcat 5.5MySql 5.0

          1.1. 新建工程

          操作:[Menu] File/New/Web Project

          工程名:login

          2. Struts 部分


          2.1. 添加 Struts 功能支持

          操作:[Menu] MyEclipse/Project Capabilities/Add Struts Capabilities

           

          2.2. 創(chuàng)建 ActionForm 類(lèi)

          操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Form

          類(lèi)名:LoginForm

          在 “Form Properties” 選項(xiàng)卡為 loginForm 新增兩個(gè)屬性:username、password;

          在 “JSP” 選項(xiàng)卡鉤選 “Create JSP form” 選項(xiàng),將新建路徑改為 “/login.jsp”(login.jsp文件將被自動(dòng)創(chuàng)建)。

          2.3. 創(chuàng)建 Action 類(lèi)

          操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Action

          類(lèi)名:LoginAction

          在 “Form” 選項(xiàng)卡的 “Name” 項(xiàng)選擇 “loginForm”,”Input Source” 項(xiàng)輸入 “/login.jsp”。

          2.4. 創(chuàng)建 index.jsp 文件

          如果沒(méi)有,創(chuàng)建 index.jsp 文件,并添加一個(gè)指向 login.jsp 的鏈接:<a href=”login.jsp”>Login</a>

          2.5. 創(chuàng)建Forword類(lèi)

          操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Forword

          類(lèi)名:indexForword

          “Name” 項(xiàng)輸入 “indexForword” ,”Path” 項(xiàng)輸入 “/index.jsp” 。

          2.6. 修改 LoginAction.java 文件

          修改 LoginAction 類(lèi)的 execute 方法:

          public class LoginAction extends Action {

          public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response) {
          LoginForm loginForm = (LoginForm) form;
          String username=loginForm.getUsername();
          String password=loginForm.getPassword();
          if(username.equals(”test”)||password.equals(”test”)){
          return mapping.findForward(”indexForword”);
          }else{
          return mapping.getInputForward();
          }
          }
          }

          2.7. 修改 login.jsp 文件

          修改 <html:form> 標(biāo)簽:<html:form action=”/login”>

          2.8. 測(cè)試

          操作:[Menu] Run/Run,選擇 MyEclipse Server Application 方式運(yùn)行

          要正常執(zhí)行Run操作,需先安裝 Tomcat5.5 。

          點(diǎn)擊 index.jsp 頁(yè)面的 “Login” 鏈接,跳轉(zhuǎn)到 login.jsp 頁(yè)面。在 login.jsp 頁(yè)面輸入 “test/test”,應(yīng)該會(huì)登錄成功,然后跳轉(zhuǎn)到 index.jsp 頁(yè)面;輸入 “test/123″ ,應(yīng)該保持在 login.jsp 頁(yè)面。

          如果測(cè)試成功,證明 Structs 運(yùn)行正常。

          3. Spring 部分


          3.1. 添加 Spring 功能支持

          操作:[Menu] MyEclipse/Project Capabilities/Add Spring Capabilities

          Spring 版本( Spring version )選擇 “Spring 1″;

          開(kāi)發(fā)包(libraries)選擇 “Spring 1.2 AOP Libraries、Spring 1.2 Core Libraries、Spring 1.2 Persistence Core Libraries、Spring 1.2 Persistence JDBC Libraries” 四項(xiàng);

          JAR Library Installation 選擇 “copy checked…” ,”Library Folder” 項(xiàng)選擇 “/WebRoot/WEB-INF/lib”(這樣的話(huà)所需的類(lèi)庫(kù)都將拷貝到項(xiàng)目目錄,方便以后的布署)。

          點(diǎn)擊 “下一步(Next)” 創(chuàng)建配置文件,修改文件路徑(Folder)到 “WebRoot/WEB-INF” 目錄(以便和Struts配置文件一起管理),文件名稱(chēng)為默認(rèn)的”applicationContext.xml”。

          點(diǎn)擊 “完成(Finish)” 。

          3.2. 配置 struts-config.xml 文件

          添加 Spring 插件(在 <message-resources> 標(biāo)簽后面添加):

          <plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>
          <set-property property=”contextConfigLocation” value=”/WEB-INF/applicationContext.xml” />
          </plug-in>

          修改 LoginAction 的配置(只需修改 type 屬性):

          <action-mappings >
          <action
          attribute=”loginForm”
          input=”/login.jsp”
          name=”loginForm”
          path=”/login”
          scope=”request”
          type=”org.springframework.web.struts.DelegatingActionProxy” />

          </action-mappings>

          綠色字體部份為被修改過(guò)的內(nèi)容,這里將使用 spring 的代理器 DelegatingActionProxy 來(lái)對(duì) Action 進(jìn)行控制。

          3.3. 修改 Spring 配置文件 applicationContext.xml

          <?xml version=”1.0″ encoding=”UTF-8″?>
          <!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

          <beans>
          <bean name=”/login” class=”com.login.struts.action.LoginAction” singleton=”false”></bean>
          </beans>

          綠色字體是關(guān)于接受和處理 Action 控制權(quán)的配置內(nèi)容,”com.login.struts.action.LoginAction” 即為原 struts 里的配置。

          3.4. 測(cè)試

          同上一次測(cè)試。測(cè)試成功證明 Spring 運(yùn)行正常。

          4. Hibernate 部分

          下面開(kāi)始 Hibernate 部分,將原例修改為使用數(shù)據(jù)庫(kù)進(jìn)行用戶(hù)名/密碼驗(yàn)證。

          4.1. 創(chuàng)建 mysql 數(shù)據(jù)庫(kù)和表

          添加表的代碼如下:

          CREATE TABLE user_table(
          ID int NOT NULL auto_increment,
          USERNAME varchar(45) NOT NULL default ”,
          PASSWORD varchar(45) NOT NULL default ”,
          PRIMARY KEY (ID)
          )

          再添加一條記錄:

          insert into user_table (USERNAME,PASSWORD) values (’test’,'test’)

          4.2. 創(chuàng)建 MyEclipse 數(shù)據(jù)庫(kù)驅(qū)動(dòng)(DB Driver)

          操作:[Menu] MyEclipse/Prefrences/MyEclipse/Database Explorer/Database Driver/DB Brower

          在 DB Brower 的菜單中選擇 “New” ,”Driver Name” 項(xiàng)輸入 “login-conn” ,”Connection URL” 項(xiàng)輸入 “jdbc:mysql://localhost:3306/test” ,然后輸入正確的用戶(hù)名(User Name)和密碼(Password)按實(shí)際情況輸入;

          在 “Driver JARs” 項(xiàng)添加 “mysql-connector-java-5.0.4-bin.jar” (可從網(wǎng)上下載),在 “Driver classname” 里選擇 “com.mysql.jdbc.Driver” ,其它自選。

          點(diǎn)擊 “完成(Finish)”。

          4.3. 添加 Hibernate 功能支持

          操作:[Menu] MyEclipse/Project Capabilities/Add Hibernate Capabilities

          Hibernate 版本(Hibernate Specification)選擇 “Hibernate 3.1″ ,開(kāi)發(fā)包(libraries)選擇 Hibernate 3.1 Core Libraries 一項(xiàng);

          JAR Library Installation 選擇 “copy checked…” ,”Library Folder” 選擇 “/WebRoot/WEB-INF/lib” 。

          點(diǎn)擊 “下一步(Next)” 設(shè)置配置文件,選擇 “Spring configuration file (applicationContext.xml)” 。

          “下一步(Next)” 設(shè)置 Spring-Hibernate,選擇 “Existing Spring configuration file” ,”SessionFactory ID” 項(xiàng)輸入 “sessionFactory” 。

           

          “下一步(Next)” 創(chuàng)建數(shù)據(jù)源對(duì)象,在 Bean Id 中輸入 dataSource,”DataSource” 項(xiàng)選擇 “Use JDBC Dirver” ,DB Driver 項(xiàng)選擇 “login-conn” ,其余項(xiàng)會(huì)自動(dòng)填充;

          記得選中 “Copy DB driver jar(s) to project and add to buidpath” 項(xiàng),以便將數(shù)據(jù)連接的庫(kù)文件復(fù)制到項(xiàng)目,方便以后的布署。

          “下一步(Next)” 創(chuàng)建 SessionFactory 類(lèi),”Java package” 項(xiàng)設(shè)置為 “com.login.Hibernate” (沒(méi)有則點(diǎn)擊”New”按鈕添加),”Class name” 項(xiàng)修改為”SessionFactory” ,Java Compliance Level選擇和創(chuàng)建項(xiàng)目時(shí)選擇的Java版本。(本例中并沒(méi)有用到SessionFactory類(lèi),留作今后擴(kuò)展)

          點(diǎn)擊 “完成(Finish)”。

          4.4. 創(chuàng)建對(duì)象關(guān)系映射(ORM)的相關(guān)文件

          操作:[Menu] Window/Open Perspective/MyEclipse Database Explorer

          選中 user_table 表,點(diǎn)擊右鍵,在出現(xiàn)的菜單中選擇 “Hibernate Reverse Engnieering” 。

          在彈出的窗口中保持 “Java package” 項(xiàng)為 “com.login” ;

          選中 “Hibernate mapping file (*.hbm.xml) for each databases table” ,并保持 “Update hibernate…” 項(xiàng)選中;

          選中 “Java Data Object” 項(xiàng),并保持 “Create abstract class” 選中;

          “Base persistent class” 項(xiàng)留空;

          取消 “Java Data Access Object…” 項(xiàng)和 “Use custom templates” 項(xiàng)。

          點(diǎn)擊 “下一步(Next)” ,再點(diǎn)擊 “下一步(Next)” ,在 “Configure reverse engineering details” 頁(yè)選中 “user_table” 表,在右邊出現(xiàn)的 “Class Name” 項(xiàng)中輸入 “com.login.User”,其它不變。

          點(diǎn)擊 “完成(Finish)”。

          完成此操作,會(huì)在 “com.login” 包下創(chuàng)建三個(gè)文件:AbstractUser.java、User.java、User.hbm.xml。

          4.5. 創(chuàng)建 UserDAO.java 接口和 UserDAOImpl.java 類(lèi)

          UserDAO 和 UserDAOImpl 通過(guò) Hibernate 訪問(wèn)數(shù)據(jù)庫(kù)。

          UseDAO.java 內(nèi)容如下:

          package com.login;

          public interface UserDAO {
          public abstract boolean isValidUser(String username, String password);
          }

          UserDAOImpl.java 內(nèi)容如下:

          package com.login;

          import java.util.List;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

          public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
          private static String hql = “from User u where u.username=? “;

          public boolean isValidUser(String username, String password) {
          // 驗(yàn)證用戶(hù)
          List userList = this.getHibernateTemplate().find(hql, username);
          if (userList.size() > 0) {
          return true;
          }
          return false;
          }
          }

          4.6. 修改 LoginAction.java 文件

          使用 UseDAO 對(duì)象來(lái)驗(yàn)證:

          package com.login.struts.action;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;
          import com.login.struts.form.LoginForm;
          import com.login.UserDAO;

          public class LoginAction extends Action {
          private UserDAO userDAO;

          public UserDAO getUserDAO() {
          return userDAO;
          }

          public void setUserDAO(UserDAO userDAO) {
          this.userDAO = userDAO;
          }

          public ActionForward execute(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response) {

          LoginForm loginForm = (LoginForm) form;
          String username=loginForm.getUsername();
          String password=loginForm.getPassword();

          if( userDAO.isValidUser( username, password ) ){
          return mapping.findForward( “indexForword” );
          }else{
          return mapping.getInputForward();
          }
          }
          }

          綠色字體為修改部分。

          4.7. Spring 的最終配制文件 applicationContext.xml

          <?xml version=”1.0″ encoding=”UTF-8″?>
          <!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

          <beans>

          <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/test”></property>
          <property name=”username” value=”root”></property>
          <property name=”password” value=”root”></property>
          </bean>

          <!– 配置sessionFactory, 注意這里引入的包的不同 –>
          <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
          <property name=”dataSource”>
          <ref local=”dataSource” />
          </property>
          <property name=”mappingResources”>
          <list>
          <value>com/login/User.hbm.xml</value>
          </list>
          </property>
          <property name=”hibernateProperties”>
          <props>
          <prop key=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</prop>
          <prop key=”hibernate.show_sql”>true</prop>
          </props>
          </property>
          </bean>

          <bean id=”transactionManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
          <property name=”sessionFactory”>
          <ref local=”sessionFactory” />
          </property>
          </bean>

          <bean id=”userDAO” class=”com.login.UserDAOImpl”>
          <property name=”sessionFactory”>
          <ref local=”sessionFactory” />
          </property>
          </bean>

          <bean id=”userDAOProxy” class=”org.springframework.transaction.interceptor.TransactionProxyFactoryBean”>
          <property name=”transactionManager”>
          <ref bean=”transactionManager” />
          </property>
          <property name=”target”>
          <ref local=”userDAO” />
          </property>
          <property name=”transactionAttributes”>
          <props>
          <prop key=”insert*”>PROPAGATION_REQUIRED</prop>
          <prop key=”get*”>PROPAGATION_REQUIRED,readOnly</prop>
          <prop key=”is*”>PROPAGATION_REQUIRED,readOnly</prop>
          </props>
          </property>
          </bean>

          <bean name=”/login” class=”com.login.struts.action.LoginAction” singleton=”false”>
          <property name=”userDAO”>
          <ref bean=”userDAOProxy” />
          </property>
          </bean>

          </beans>

          4.8. 測(cè)試

          同第一次測(cè)試。 

          posted on 2008-07-09 14:13 飛飛 閱讀(3472) 評(píng)論(2)  編輯  收藏

          Feedback

          # MyEclipse開(kāi)發(fā)SSH(Struts+Spring+Hibernate)入門(mén) 2011-11-15 17:03 SISI
          HTTP Status 404 - Servlet action is not available
          SPRING 跑的時(shí)候有問(wèn)題啊,跳轉(zhuǎn)到login.do的時(shí)候報(bào)以上的錯(cuò)誤。
          麻煩幫忙看看
          謝謝了!  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 佛坪县| 六枝特区| 肥城市| 萨嘎县| 紫金县| 灌南县| 兴文县| 西乌| 高淳县| 靖安县| 雷州市| 神农架林区| 寿阳县| 大足县| 鲁甸县| 廉江市| 来安县| 旌德县| 景泰县| 丰宁| 腾冲县| 崇明县| 玛纳斯县| 博罗县| 衡水市| 鹿泉市| 西峡县| 金秀| 浙江省| 平泉县| 万盛区| 奉新县| 雷波县| 晋中市| 边坝县| 中方县| 绥化市| 武功县| 泾川县| 永寿县| 临清市|