posts - 0,  comments - 17,  trackbacks - 0

          說明:此教程是oksonic視頻教程的修改,我移植到eclipse3.2+myEclipse5.0環境下。原來放在我在和訊的博客上,寫的比較早,完成于去年下半學期,當時還在學校,現在出來打工了,今年7月畢業。感覺在CSDN的高手多,所以轉移至此。

          功能:集合了SSH框架,完成簡單的登陸功能

          工具:
              eclipse-SDK-3.2.1
          、MyEclipse_5.0.1GA_E3.2、Tomcat_5.5.15、mysql-5.0.18

          相關資料下載
          原來的資料都是放在gbaopan下,現在gbaopan關了,沒有地方放了,只能放在郵箱里,在發件箱里的附件中


          視頻教程下載郵件主題: struts+hibernate+spring視頻.part1
                struts+hibernate+spring
          視頻.part2

          工程下載郵件主題:  struts+hibernate+spring_src.part1     
                struts+hibernate+spring_src.part1
          說明文件郵件主題:  struts+hibernate+spring_說明
          properties2GBK.bat  struts+hibernate+spring_
          說明 
           
          開始。。新建工程:名稱為 login
           
          創建Struts框架
           
          創建 index.jsp,增加一鏈接指向 login.jsp
          <html>
            <head>
              <title>Struts+Spring+Hibernate</title>
            </head>
           
            <body>
              <a href="login.jsp">Login</a>
            </body>
          </html>
           
          按下Ctrl + N,創建 login.jsp、LoginAction,使用MyEclipse的向導就可以了,記得選對正確的版本
           
          在ActionForm配置頁中選擇類型為動態Form,并繼承于DynaValidatorForm,新增兩個屬性:username、password,
          在創建jsp文件打上鉤,將路徑改為/login.jsp,然后下一步,改LoginAction的Input source改為/login.jsp,點擊完成
           
          按下Ctrl + N 創建一個forwards,記得選對正確的版本
          name
          輸入 indexGo
          路徑選擇 /index.jsp
           
          配置validator
          先添加Struts插件,使用向導
          Plugin class : org.apache.struts.validator.ValidatorPlugIn
          Property : pathnames
          Value : /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml
          這里需要兩個xml文件
          現在創建“validation.xml” 文件

           
          文件內容如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "validator_1_1_3.dtd" >
          <form-validation>
           <formset>
            <form name="loginForm">
             <field property="username" depends="required">
              <arg0 key="prompt.username" />
             </field>
             <field property="password" depends="required">
              <arg0 key="prompt.password" />
             </field>
            </form>
           </formset>
          </form-validation>
           
          編輯資源文件“ApplicationResources.properties”
          增加以下內容
           
          prompt.username=User Name
          prompt.password=User Password
          errors.required={0} is required.
           
          再創建中文件資源文件“ApplicationResources_zh_CN.properties”
          增加以下內容

          prompt.username=用戶名稱
          prompt.password=
          登錄密碼
          errors.required={0}
          必需填寫!

          我這沒有用Properties Editor插件,所以在tomcat發布后會顯示亂碼,我們可以用native2ascii來解決
          我建了個批處理文件properties2GBK.bat
          native2ascii -encoding gbk ApplicationResources_zh_CN.properties temp.properties
          del ApplicationResources_zh_CN.properties
          rename temp.properties ApplicationResources_zh_CN.properties
          放在你的classpath下,或者拷到你要轉GBK的地方,雙擊一下就可以了
          我剛開始在eclipse編輯中文properties文件,保存后再打開,也會出現亂碼,只要在eclipse上設置一下就可以了
          具體設置:Eclipse-->Preferences...-->在“type filter text“欄中輸入”Content Types“查找,
          然后在選擇右邊的Text下邊相應的文件后綴名,即properties.修改其編碼就可。可以修改成GBK
          我這已經改好了,直接打開就是漢語了。。。
          建議下載 properties Editor插件,我這上不了外國網站,沒有辦法。。。。有空再下吧。。
           
          修改struts-config.xml文件
          在以下位置增加validate="true"
          <action-mappings >
              <action
                attribute="loginForm"
                input="/login.jsp"
                name="loginForm"
                path="/login"
                scope="request"
                validate="true"
                type="com.test.struts.action.LoginAction" />
            </action-mappings>
           
          這里說明提交的數據必需經過驗證,而驗證則是通過validator框架進行的。

          修改web.xml文件
          增加
           <welcome-file-list>
             <welcome-file>index.jsp</welcome-file>
            </welcome-file-list>
          顯示主頁
           
          修改LoginAction.java文件的execute方法,內容如下
          public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) {
            DynaValidatorForm loginForm = (DynaValidatorForm) form;
            String username=loginForm.getString("username");
            String password=loginForm.getString("password");
            if(username.equals("test")||password.equals("test")){
             return mapping.findForward("indexGo");
            }else{
             return mapping.getInputForward();
            }
           }
           
          現在再修改一下login.jsp
          增加以下部份
          <%@ page language="java" contentType="text/html; charset=UTF-8" %>
           
          其中charset=UTF-8 是使用UTF-8的字符編碼,這也是為了支持國際化而使用的。要不然中文還是會顯示亂碼
          關于亂碼解決,網上查資料,一查就有一堆
          我們現在還沒有傳遞中文參數,要不然還得加個過濾器。。

           
          好了,現在可以啟動Tomcat進行測試了
          http://localhost:8080/login/

           
          如果不輸入任何數據而直接提交表單的話就可以看到效果了。
           
          好了,如果沒有什么問題的話就繼續往下看吧,如果有問題的話就得往上看了^_^
          出現了亂碼,我們用native2ascii來解決,非得我重啟一下!> ok了
           
          現在創建Spring框架了,在這里我將Spring所有的包全部加載進去,因為我還不知道具體用到哪些類,全部加進去方便點
           
          單選框選第二個,這樣的話所有的類庫和標簽等都將拷貝到項目中去,這樣方便以后的布署
          下一步后是創建配置文件,將文件放到“WebRoot/WEB-INF”目錄下,文件名稱為“applicationContext.xml”
           
           
          配置struts-config.xml文件,添加(spring)的插件
           
          <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
              <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
            </plug-in>
           
           
          修改LoginAction配置
           
          原:
          <action
                attribute="loginForm"
                input="/login.jsp"
                name="loginForm"
                path="/login"
                scope="request"
                validate="true"
                type="com.test.struts.action.LoginAction" />
           
            </action-mappings>
           
          改為:
          <action
                attribute="loginForm"
                input="/login.jsp"
                name="loginForm"
                path="/login"
                scope="request"
                validate="true"
                type="org.springframework.web.struts.DelegatingActionProxy" />
            </action-mappings>
           
           
          這里將使用spring的代理器來對Action進行控制
           
          當提交到/login.do是將控制權交給了spring,然后由spring來決定是否轉回到struts的Action
           
          現在來配置spring
           
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "  
          <beans>
           <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
          </beans>

           
          屬性singleton="false",指明了Action 的實例獲取方式為每次重新創建。解決了Struts中令人詬病的線程安全問題(Struts中,由一個Action實例處理所有的請求,這就導致了類公用資源在并發請求中的線程同步問題。)(摘自spring開發指南)
          測試一下,如果沒有什么問題的話就繼續往下看吧,如果有問題的話就得往上看了^_^
          好的,struts spring倆人成為朋友了,友好的集成到了一起。。。
           
          建立數據庫在 這里我使用的是mysql-5.0.18
          配置好mySql連接......
          不好意思,這里我忘記驅動怎么寫了。。。
          CREATE TABLE `user` (
            `ID` int(11) NOT NULL auto_increment,
            `USERNAME` varchar(50) NOT NULL default '',
            `PASSWORD` varchar(50) NOT NULL default '',
            PRIMARY KEY  (`ID`)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
           
          添加記錄 insert into user (USERNAME,PASSWORD) values ('test','test')

          創建Hibernate框架
          新建包com.test.hibernate
          com.test.beans
          選hibernate3.1 libraries全選,我也不知道那個具體有什么用^_^,可能只選第一個也行,但考慮還要用DAO,第三個也選上了,
          看第二是高級支持,也加上了,沒試里面的作用,大家有空可以試一下。。
          第二步選 spring configuration file 我們直接在Spring配置hibernate的連接。。就不用創建hibernate.cfg.xml了
          第三步選existing Spring configuration file我們剛才已經創建了一個。。
           SessionFactory ID
          就直接填sessionFactory
          第四步 Bean Id填 dataSource 我們用JDBC Driver,DB Profile選剛才配置好的

          使用MyEclipse的數據Database Explorer工具創建User.hmb.xml、AbstractUser.java、User.java,UserDAO文件
          這里選項比較多,大家看視頻。。我就不一一說明了。。。不懂的看書^_^

          打開User.hbm.xml配置文件,把 catalog="meilvin" 這一項刪除了,要不后果很嚴重。因為mySql在連接的時候要寫上數據庫
          如果我們在這里也寫上數據庫的名字的話就會重復了,就變成了meilvin.meilvin.user,顯然是錯的。后面就會報錯,我深有體會。


          修改UserDAO,增加如下方法
          public boolean isValidUser(String username, String password) {
            String hql = "from User u where u.username=? and u.password=?";
            String []userInfo=new String[2];
            userInfo[0]=username;
            userInfo[1]=password;
            List userList = this.getHibernateTemplate().find(hql, userInfo);
            if (userList.size() > 0) {
             return true;
            }
            return false;
           }

           
          修改LoginAction.java文件,使用userDao的方法來進行用戶驗證
          package com.test.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 org.apache.struts.validator.DynaValidatorForm;
           
          import com.test.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) {
            DynaValidatorForm loginForm = (DynaValidatorForm) form;
            // TODO Auto-generated method stub
            String username = (String) loginForm.get("username");
            String password = (String) loginForm.get("password");
            loginForm.set("password", null);
            if (userDAO.isValidUser(username,password)) {
             return mapping.findForward("indexGo");
            } else {
             return mapping.getInputForward();
            }
           }
          }
           
          現在剩下最后的spring配置了
          把原來的
          <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
          刪除了
          在最底下增加
           <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
            <property name="userDAO">
             <ref bean="UserDAO" />
            </property>
           </bean>
          利用反轉控制產生action
          現在可以進行測試了,可以登陸了^-^
          老是說log4j沒有配置,下次視頻配置一下。。。成功了。。


          注冊新用戶,用戶瀏覽、刪除用戶

          打開 UserDAO.java 文件,增加以下方法:
           public boolean addUser(User user) {
            try {
             //
          調用前面save方法
             save(user);
            } catch (Exception e) {
             System.out.println(e.getMessage());
             return false;
            }
            return true;
           }


          按下 Ctrl + N ,使用向導創建 adduser.jsp 、AdduserForm(DynaValidatorForm)、AdduserAction.java文件,這是注冊新用戶的Action
          我用的是maxthon瀏覽器,如果是add.jsp,它會當做廣告攔下來,,,,多加個user...

          修改配置內容如下:
          <action
                attribute="adduserForm"
                input="/adduser.jsp"
                name="adduserForm"
                path="/adduser"
                validate="true"
                type="org.springframework.web.struts.DelegatingActionProxy" />

          第一句實現了必須對提交的數據進行驗證
          第二句實現了和spring集成

          修改 AdduserAction.java 文件,內容如下:

           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) {
            DynaValidatorForm adduserForm = (DynaValidatorForm) form;
            User user = new User();
            user.setUsername(adduserForm.getString("username"));
            user.setPassword(adduserForm.getString("password"));
            adduserForm.set("password", null);
            if (userDAO.addUser(user)) {
             return mapping.findForward("indexGo");
            } else {
             return mapping.getInputForward();
            }
           }

          關于在Action中使用 User 對像,我在這里沒有使用 IoC 方式進行管理,這不好,希望大家在正式應用中使用。

          在spring配置文件(applicationContext.xml)中加入以下內容:
           <bean name="/adduser" class="com.test.struts.action.AdduserAction"
            singleton="false">
            <property name="userDAO">
             <ref bean="UserDAO" />
            </property>
           </bean>

          修改 index.jsp 文件
          <html>
            <head>
              <title>Struts+Spring+Hibernate</title>
            </head>
           
            <body>
              <a href="login.jsp">Login</a>
              <br>
              <a href="add.jsp">Add User</a>
            </body>
          </html>

          修改 adduser.jsp 文件的首行,替換為以下內容,目的是為了使用UTF-8的編碼格式顯示頁面
          <%@ page language="java" contentType="text/html; charset=UTF-8" %>

          修改 validation.xml 文件,加入以下內容:
            <form name="adduserForm">
             <field property="username" depends="required">
              <arg0 key="prompt.username" />
             </field>
             <field property="password" depends="required">
              <arg0 key="prompt.password" />
             </field>
            </form>


          現在整個 AddUser 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!

          創建一個Action用于查詢數據,名稱為 find

          創建 display.jsp 文件,用于顯示所有用戶

          創建一個 forward displayGO 指向 display.jsp 選中 redirect

          修改 UserDAO.java 文件,增加 findAllUser() 方法,代碼如下:
           public List findAllUser() {
            List users=this.getHibernateTemplate().find("from User u");
            if(users.size()>0)
             return users;
            return null;
           }

          修改 struts-config.xml 文件
          <action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />

          修改 FindAction.java 文件,內容如下:
           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) {
            List users=userDAO.findAllUser();
            if(users!=null){
             HttpSession session=request.getSession();
             session.setAttribute("users",users);
             return mapping.findForward("displayGo");
            }
            return mapping.getInputForward();
           }

          在spring配置文件(applicationContext.xml)中加入以下內容:
           <bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
            <property name="userDAO">
             <ref bean="UserDAO" />
            </property>
           </bean>

          修改 display.jsp 文件,內容如下:
          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          <%@ taglib uri="
          <%@ taglib uri=" <%@ taglib uri=" <html>
            <head>
              <title>DISPLAY</title>
            </head>
            <body>
              <logic:present name="users">
              <form action="del.do">
              <table border="1">
              <logic:iterate id="element" name="users">
           <tr><td width="100">
            <input type="radio" name="select" value="<bean:write name="element" property="id"/>">
               <bean:write name="element" property="username"/>
              </td></tr>
              </logic:iterate>
              </table>
              <INPUT type="submit" name="Submit" value="submit">
              </form>
              </logic:present>
            </body>
          </html>

          現在整個 Display 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!

          新建一個 Action 用于刪除選中的用戶,name:del

          修改 struts-config.xml 文件中的以下內容為:
          <action path="/del" type="org.springframework.web.struts.DelegatingActionProxy" />

          修改 UserDAO.java 文件,增加以下方法
           public boolean delUser(Integer lid) {
            try {
             User user=(User)findById(lid);
             this.getHibernateTemplate().delete(user);
            } catch (Exception e) {
             System.out.println(e.getMessage());
             return false;
            }
            return true;
           }

          修改 DelAction.java 文件,內容如下:
          public class DelAction 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) {
            Integer selid=Integer.valueOf(request.getParameter("select"));
            if(userDAO.delUser(selid))
             return mapping.findForward("indexGo");
            return mapping.getInputForward();
           }
          }
          Ctrl+Shift+o
          導入包
          在spring配置文件(applicationContext.xml)中加入以下內容:
           <bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
            <property name="userDAO">
             <ref bean="UserDAO" />
            </property>
           </bean>

          修改 index.jsp 文件
          <html>
            <head>
              <title>Struts+Spring+Hibernate</title>
            </head>
           
            <body>
              <a href="login.jsp">Login</a>
              <br>
              <a href="add.jsp">Add User</a>
              <br>
              <a href="find.do">Display</a>
            </body>
          </html>


          代碼已經全部完成,可以進行測試了!!!

          如果測試不成功,請往回查看。。。。完了!!!
          失誤失誤,大小寫不注意,就是這種后果,大家以后要注意點哦
          好了,成功了,祝大家都成功!
          拜拜!


          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿

          隨筆檔案(1)

          文章分類(44)

          文章檔案(46)

          收藏夾(1)

          Adobe

          AOP

          API

          appServer

          BI

          c

          • c-free
          • codeblocks
          • codelite
          • CodeLite IDE 是一個強大的開源,跨平臺的 C/C++整合開發環境. 支持包括 Windows、Linux 和 Mac 系統下運行
          • codelite官網
          • dev-c++
          • Dev-C++是一個C&C++開發工具,它是一款自由軟件,遵守GPL協議。
          • GCC
          • GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴展,變得可處理 C++。之后也變得可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。

          Cache

          CMS

          DB

          eclipse

          FreeMarker

          hibernate

          html5

          ibatis

          java

          jquery

          js

          json

          Linux

          Log

          mail server

          mobile

          mysql

          oauth

          openID

          other

          PHP

          portal

          report

          Scheduler

          schema

          Security

          SOA

          spring

          struts

          UI原型設計

          w3c

          Wap

          webservice

          xml

          供應鏈管理

          博客鏈接

          好網站

          工作流

          開源網

          招聘

          插件下載

          操作系統

          構建可伸縮的系統

          構建工具

          測試

          • IETest
          • IE官網
          • OpenSTA
          • Siege
          • Siege是一個壓力測試和評測工具,設計用于WEB開發這評估應用在壓力下的承受能力

          游戲

          源碼托管

          經營

          資源

          金融/財務

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 弥渡县| 翁源县| 分宜县| 花莲县| 达州市| 防城港市| 盐边县| 马尔康县| 潢川县| 公安县| 信宜市| 丘北县| 晋宁县| 富阳市| 鄂托克前旗| 左贡县| 东兴市| 望城县| 休宁县| 临安市| 和林格尔县| 年辖:市辖区| 扶风县| 卫辉市| 耿马| 东莞市| 封丘县| 灵寿县| 南澳县| 黄大仙区| 普定县| 虎林市| 高唐县| 时尚| 喀喇沁旗| 博罗县| 惠州市| 平江县| 嵩明县| 廉江市| 南漳县|