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

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

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

    推薦淘寶秋冬男裝熱賣網店

    追求無止境

    我的程序人生
    隨筆 - 31, 文章 - 2, 評論 - 20, 引用 - 0
    數據加載中……

    JSP Web框架研究:Struts

    在JSP 的各種Web框架中,據我看來Struts框架最為簡單。下面從Struts框架開始來研究JSP的web框架。

    1、MVC

    在研究這個框架之前,先要對MVC模式有所了解。幸好以前學習過設計模式,對MVC編程和模式了解一些,即將模型、視圖、控制器分開。使三者可以各負其責,處理自己的邏輯。

    2、Struts框架的介紹:

    Struts框架也采用了MVC結構:

    Model:在Struts框架中,Model模型的實現是JavaBean。在Struts框架中,通過使用JavaBean完成信息的存儲。

    Control:控制器即Java Servlet,由框架提供,負責視圖和模型之間的交互。控制器的每個入口都由名為struts-config.xml的配置文件設置。該文件把來自視圖的請求映射為特定的Java類

    以進行相應的處理,控制器還指定下一個視圖的位置。

    View:視圖,當然使用JSP了。

    是不是很簡單啊。

    下面的序列圖反映了一個簡單的Strut構架的運行過程:

     

    image (點擊看大圖)

    看到上面的序列圖,如果讓我們從頭來寫代碼,來實現Struts構架,這樣也太累了。Struts構架給我們提供了不少類,如果ActionServlet、Action、ActionForm等。通過繼承使用他們和使用框架,我們只需寫幾個繼承類,就可以寫出基于這個框架的代碼了。這就是框架的好處,他把一些細節給我們屏蔽了,我們只要實現了關鍵部分。OK,就可以了。結構又好,又方便。這就是框架的好處。

    通過上面的說明,或許你對框架會有些了解??蚣?,簡單的理解,就是我們小學時做的填空題,我們把重要的空填一下。就可以了。顯然,上面的描述不是很準確,但用來簡單的理解框架還是可以的。

    下面需要用一個實例來說明如何使用struts框架了。

    我們用Struts實現一個簡單的注冊信息頁面。

    需要注冊的信息只由用戶名和密碼。下面是具體的實現。

    首先定義一個User類:

       1: public class User {
       2:     private String userName;
       3:     private String password;
       4:  
       5:     public String getPassword() {
       6:         return password;
       7:     }
       8:  
       9:     public void setPassword(String password) {
      10:         this.password = password;
      11:     }
      12:  
      13:     public String getUserName() {
      14:         return userName;
      15:     }
      16:  
      17:     public void setUserName(String userName) {
      18:         this.userName = userName;
      19:     }
      20:     
      21: }
     
    User類定義了用戶的信息描述。下面的UserForm繼承了AcitonForm類,用于驗證請求信息并對表單信息進行檢查。
     
    public class UserForm extends ActionForm {
        private User user;
     
        public User getUser() {
            return user;
        }
     
        public void setUser(User user) {
            this.user = user;
        }
     
     
     
        public String getUserName() {
            return user.getUserName();
        }
     
        public String getPassword() {
            return user.getPassword();
        }
     
        @Override
        public void reset(ActionMapping a, HttpServletRequest r) {
           this.user = new User(); 
        }
     
        @Override
        public ActionErrors validate(ActionMapping a, HttpServletRequest r) {
           ActionErrors errors = new ActionErrors();
           if(user.getUserName()==null||(user.getPassword()==null)){
               errors.add("請填寫用戶名和密碼!",new ActionMessage("error.user.password"));
               
           }
           return errors;
        }
        
    }
     
    UserAction類:繼承了Action,用來相應請求??纯磂xecute函數就知道請求相關的參數包括映射(ActionMapping)、請求表單(ActionForm)、servlet請求(HttpServletRequest)和響應(HttpServletResponse)。那么就很容易的寫出處理請求的函數。
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    /**
     *
     * @author WangJing
     */
    public class UserAction extends Action {
     
        @Override
        public ActionForward execute(ActionMapping mapping, ActionForm arg1, HttpServletRequest request, HttpServletResponse arg3) throws Exception {
            UserForm userForm = new UserForm();
            try{
                UserBean bean = new UserBean();
                bean.addUser(userForm.getUser());
            }catch(Exception e){
                e.printStackTrace();
            }
            request.setAttribute("user",userForm.getUser());
            return (mapping.findForward("userCreated"));
        }
        
    }
    UserBean:它實現了具體的業務邏輯,她被Action調用。完成數據的存儲。
    class UserBean {
    
        void addUser(User user) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
        
        private Connection conn;
    
        public UserBean() {
            this.conn = DatabaseConn.getConnection();
        }
        public void addUser(User user){
            Statement s = (Statement) conn.createStatement();
            s.executeUpdate("insert into User values("+user.getUserName()+","+user.getPassword()+");");
        }
    }
    上面的代碼進行了數據的存儲處理。需要注意的是代碼中的DatabaseConn.getConnection()是沒有的。需要自己實現的。具體的實現可以參考本人的博客中關于連接數據庫的一篇文章。
    好了,下面就是最重要的顯示JSP文件代碼的編寫了:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib  uri="/struts-logic" prefix="logic" %>
    <%@ taglib  uri="/struts-bean" prefix="bean" %>
    <%@ taglib  uri="/struts-html" prefix="html" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <html:form aciton="createUser.do" method="GET">
                userName:<html:text property="user.userName"/>
                password:<html:text property="user.password"/>
                <html:submit property="submit"/>
            </html:form>
        </body>
    </html>
     
    下面用viewUser.jsp來作為響應頁面:
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <%
            User user= (User)request.getAttribute("User");
            
            %>
            已經創建了用戶:
            name:<%=user.getUserName()%>
            password:<%=user.getPassword()%>
            
        </body>
    </html>

    ok,所有的文件編好之后,下面就是配置和運行了。(累了,配置運行休息一會在弄吧。待續中。。。呵呵。。。。)

    posted on 2008-09-14 10:06 追求無止境 閱讀(2314) 評論(2)  編輯  收藏

    評論

    # re: JSP Web框架研究:Structs  回復  更多評論   

    拜托,是struts。。。
    2008-09-14 14:26 | Lv Yuanfang

    # re: JSP Web框架研究:Struts  回復  更多評論   

    @Lv Yuanfang
    汗。。。。沒想到竟然犯了這樣的錯誤。看書不認真啊。謝謝啦!
    2008-09-14 15:09 | 追求無止境

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧美国产精品专区久久| 成在人线av无码免费高潮水| 免费欧洲美女牲交视频| av午夜福利一片免费看久久| 亚洲黄色在线网站| 毛片免费视频观看| 国产A∨免费精品视频| 亚洲精品456在线播放| 国产zzjjzzjj视频全免费| 久久久久国产免费| 亚洲AV无码AV吞精久久| 亚洲高清在线播放| 免费二级毛片免费完整视频| 精品一区二区三区无码免费视频 | 成人永久免费福利视频网站| 中文字幕成人免费高清在线| 亚洲综合欧美色五月俺也去| 亚洲无线码在线一区观看| 国内免费高清在线观看| 国产色无码精品视频免费| 高清国语自产拍免费视频国产| 日本一区二区在线免费观看 | 国产免费女女脚奴视频网| 色多多免费视频观看区一区| 在线观看亚洲一区二区| 亚洲精品专区在线观看| 97在线观免费视频观看| 免费成人在线视频观看| 青青视频免费在线| 久久久久se色偷偷亚洲精品av| 亚洲精品无码永久在线观看你懂的| 女人被弄到高潮的免费视频| 无码国产精品一区二区免费vr | 国产日韩AV免费无码一区二区| 国产精品亚洲专区无码不卡| 亚洲中字慕日产2020| 亚洲AV无码一区二区三区系列| 亚洲成a人片在线观看久| 四虎免费在线观看| 国产精品久久久久久久久免费| 华人在线精品免费观看|