<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿

    隨筆檔案(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開發這評估應用在壓力下的承受能力

    游戲

    源碼托管

    經營

    資源

    金融/財務

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 亚洲天堂福利视频| 一级毛片在线免费视频| 国产免费久久精品99re丫y| 2020国产精品亚洲综合网| 妞干网免费观看视频| 久久亚洲中文字幕无码| 亚洲日韩在线观看| 久久免费精彩视频| 亚洲综合色丁香婷婷六月图片 | 亚洲av中文无码乱人伦在线播放| 97无码人妻福利免费公开在线视频 | 亚洲精品乱码久久久久久久久久久久| 久久久久国色av免费看| 精品久久久久久亚洲精品| 国产亚洲福利一区二区免费看| 中国一级毛片免费看视频| 亚洲成人网在线播放| 亚洲AV伊人久久青青草原| 99国产精品免费观看视频| 亚洲AV香蕉一区区二区三区| 久久亚洲国产成人影院网站| 巨波霸乳在线永久免费视频| 午夜亚洲乱码伦小说区69堂| 西西人体44rt高清亚洲| 国产青草视频免费观看97| 秋霞人成在线观看免费视频 | 日韩视频免费一区二区三区| 中文字幕免费在线看线人动作大片 | 五月天婷婷免费视频| 亚洲日本香蕉视频| 亚洲视频在线精品| 97免费人妻无码视频| 亚洲一级片免费看| 亚洲1区1区3区4区产品乱码芒果| 国产精品亚洲不卡一区二区三区 | 久久亚洲AV无码精品色午夜麻| 拍拍拍又黄又爽无挡视频免费| 永久免费不卡在线观看黄网站| 亚洲.国产.欧美一区二区三区| 亚洲视频免费在线观看| 亚洲AV无码乱码在线观看牲色|