一路拾遺
          Collect By Finding All The Way ......
          posts - 81,comments - 41,trackbacks - 0

          Struts實質上就是在JSP Model 2的基礎上實現的一個MVC框架。由一組相互協作的類、Servlet以及JSP TagLib組成。Struts的核心組件主要包括:ActionServlet 、Action、 ActionMapping 、ActionForward、 ActionForm 、ActionError 及Struts標簽庫組成。

          Struts 對于一個出學者來說,確實有一點困難,感覺是無形的,抓不住各個組件之間的邏輯,本實例主要是運用Myeclipse開發Struts的用戶登錄程序,把無形的Struts變成有形的。

          本應用程序主要由以下5個文件組成:login.jsp 登錄頁面,success.jsp提交成功后的頁面,如果提交失敗,在次返回登錄頁面;LoginForm.java(ActionForm,存放用戶提交信息),LoginAction.java(Action,簡單的處理用戶登錄事件);及數據庫連接文件DBConnect.java。

          下面我們又要開始了。。。

          S1。 新建J2EE工程的web Project工程,工程名為:LoginStrutsDemo

           

          然后給這個項目添加Struts框架必要的文件.在我們項目名上點擊右鍵,選擇MyEclipes --> Add Struts Capabilities...彈出對話框如下:

           

          其中Struts config path就是我們的struts配置文件,URL pattern我們選擇*.do,Default application resource為我們默認的資源文件地方,你可以選擇它的存儲位置,我們在這里保持默認。點擊Finish后,項目結構如下圖:

           

          然后雙擊打開/WEB-INF/web.xml文件,為其添加標簽庫。可以在Design界面或Source界面下添寫一個jsp-config標簽,如下圖:

           

           

          然后,右擊OutLine框的jsp-config標簽,添加三個taglib子標簽,添好之后如下頁面:

           

          或直接在Web.xml文件的Source 中將下面代碼添加至 </webapp> 上面:

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


          S2。打開struts-config.xml文件,點擊這個界面左下角的Design進入可視化設計界面。我們先建立success.jsp文件如下:

           

          把JSP托到面版中,彈出如下對話框:

           

          File Name successs.jsp

           完成后,struts-config.xml文件自動被更新,可視化界在上也出現了剛新建的JSP模塊。新建的jsp文件也打開了。覆蓋所有的<%@ taglib ...... ,用我們開始在/WEB-INF/web.xml中定義的:
              
            然后在<body></body>中添加:
            Hello ,<bean:write name="userName" scope="request" /> .
          這里將request中的屬性userName輸出在頁面上,所以等下我們在loginAction中,登錄成功后要設置一個相關屬性。

          S3。下面來開始我們最后三個文件的設計吧。在Struts-config.xml的Design模式中,在畫版的空白區域點右鍵,選擇New --> New Form, Action and JSP 彈出ActionForm的選項面板,我們按圖上輸入相關值,如下:

           

          因為我們這只是簡單的演示一個登錄片段,所以不用驗證用戶信息是否合法,所以將 Option Details的method選項卡的新建方法去掉,如圖:


           

          接下來選擇 Optional Details的JSP選項卡,我們選中Create JSP form? 這一步myeclipse將為我們創建一個簡單的與用戶交互的登錄頁面:

           

          點Next,進入Action選項面板.將Option Details的Form選項卡中Validate Form取消選擇,如圖:
           

          在添加兩個全局Forward,如下:

           

          點擊Finish完成。在Struts-config.xml的Design中,可以看到圖所示:

           

           最后,簡單的修改一下login.jsp,將所有<%@ taglib ...%>替換為:
            <%@ taglib uri="/tags/struts-html" prefix="html"%>
            <%@ taglib uri="/tags/struts-bean" prefix="bean"%>

          S4。運用MySQL建立數據庫腳本如下:

           

           Create database strutsuser; 
          User strutsuser; 
          Create table users( 
          Username 
          varchar(10primary key
          Password 
          varchar(10
          ); 
          Insert into users values(‘chen’,’123456’); 

           

          然后,添加數據庫驅動。右鍵點擊工程名LoginStrutsDemo,選擇PropertiesàJava Build PathàLiberariesàAdd External JARs…

           

          點擊OK之后,在把MySQL數據庫驅動文件拷貝到/WEB-INF/lib路徑下面,F5刷新。


           S5
          。建立數據庫連接文件:DBConnection.java

           

          代碼如下:

           

          package com.chen.struts.action;
          import java.sql.
          *;

          public class DBConnection {
              String sDBDriver 
          = "com.mysql.jdbc.Driver";
              String sConnstr 
          = "jdbc:mysql://192.168.1.103:3306/strutsUser?useUnicode=true&characterEncoding=GBK";
              Connection connect 
          = null;
              ResultSet rs 
          = null;
              Statement stmt 
          = null;
              
          public DBConnection()
              {
                      try
                      {
                              Class.forName(sDBDriver);
                      }
                      catch(ClassNotFoundException ex)
                      {
                              System.err.println(ex.getMessage());
                      }
              }

              
          public ResultSet executeQuery(String sql)
              {
                      try
                      {
                              this.connect 
          = DriverManager.getConnection(sConnstr,"root","");
                              this.stmt 
          = this.connect.createStatement();
                              rs 
          = stmt.executeQuery(sql);
                      }
                      catch(SQLException ex)
                      {
                              System.err.println(ex.getMessage());
                      }
                      
          return rs;
              }

              
          public int executeUpdate(String sql)
              {
                      
          int result = 0;
                      try
                      {
                              this.connect 
          = DriverManager.getConnection(sConnstr,"root","");
                              this.stmt 
          = this.connect.createStatement();
                              result 
          = stmt.executeUpdate(sql);
                      }
                      catch(SQLException ex)
                      {
                              System.err.println(ex.getMessage());
                      }
                      
          return result;
              }
          }


          修改LoginAction 如下所示:

          package com.chen.struts.action;


          import java.sql.
          *;
          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.chen.struts.form.LoginForm;

          /*
           * MyEclipse Struts
           * Creation date: 04-25-2007
           * 
           * XDoclet definition:
           * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request"
           * @struts.action-forward name="failture" path="/login.jsp"
           * @struts.action-forward name="success" path="/success.jsp"
           
          */



          public class LoginAction extends Action {
              
          /*
               * Generated Methods
               
          */

              
          /*
               * Method execute
               * @param mapping
               * @param form
               * @param request
               * @param response
               * @return ActionForward
               
          */

              
          public ActionForward execute(ActionMapping mapping, ActionForm form,
                     HttpServletRequest request, HttpServletResponse response) {
                 LoginForm loginForm 
          = (LoginForm) form;
                 String name 
          =loginForm.getUserName();
                 String password 
          =loginForm.getPassword();
                 DBConnection  myDb
          =new DBConnection();
                 ResultSet rs
          =null;
                 
          int result=0;

                 
          //String sql="select count(*as count from users where username = '"+name+"' and password = '"+password+"'";
                 String sql 
          = "select count(*as count from users where username = '"+name+"' and password = '"+password+"'";
                 try{
                     rs
          =myDb.executeQuery(sql);
                     
          if(rs.next()){
                        result
          =rs.getInt("count");
                     }
                 }catch(SQLException ex){
                     ex.printStackTrace();
                 }

                 
          if(result>0){
                     request.setAttribute("userName", name);
                     
          return mapping.findForward("success");
                 }

                 
          return mapping.findForward("failure");
              }
          }


          最后,部署MyEclipse J2EE Project 到服務器上,在啟動MyEcplisp服務器,打開內置瀏覽器,輸入:http://localhost:8080/LoginStrutsDemo/login.jsp,好了,就可以了 呵呵,終于完成了。

          posted on 2008-07-25 21:14 胖胖泡泡 閱讀(438) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 黑河市| 阿克苏市| 新河县| 霍邱县| 华亭县| 章丘市| 玛纳斯县| 大兴区| 崇仁县| 开封市| 福清市| 凉城县| 南涧| 鄂伦春自治旗| 靖西县| 江都市| 尼勒克县| 理塘县| 乌兰浩特市| 阿坝| 兖州市| 抚顺县| 九江县| 黔西县| 牙克石市| 化州市| 邢台市| 泰安市| 湘潭市| 长阳| 容城县| 武义县| 栾川县| 宜丰县| 新建县| 莆田市| 龙口市| 隆化县| 米泉市| 稻城县| 资溪县|