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

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

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

    隨筆-42  評論-578  文章-1  trackbacks-0
            前段時間,朋友做了一個“基于MVC的JSP+Servlet+JavaBean整合開發的例子”,有老師質疑它這個是不是真正的MVC標準?至于這個問題,我們在這里不討論,本文目的是用Struts2.1.6來取代Servlet。經我這位朋友同意,我把他所做的那個“JSP+Servlet+JavaBean”的例子,發布給大家,大家可以跟著我的步驟,一步一步地,把這個Servlet的例子,改寫成Struts2.1.6的例子。
            附件下載:/Files/rongxh7/MvcModel.rar
            這是我朋友的例子,大家先下載下來,導入Eclipse-jee,并把相應的數據庫文件導入SQL Server 2000,運行一下他這個小項目。如果出現什么問題,可以到他的技術博客給他留言。http://m.tkk7.com/gdhqs
            本文重點是如何把他這個Servlet的小項目改寫成Struts2.1.6的項目。首先,下載Struts2.1.6的類庫,http://struts.apache.org/2.1.6/index.html, 下載下來后是這個文件:struts-2.1.6-all.zip,解壓縮后,在lib目錄下,找到以下必需的jar包,把它們添加到我們項目的lib目錄下。這些jar有:
    xwork-2.1.2.jar
    struts2-core-
    2.1.6.jar
    struts2-convention-plugin-
    2.1.6.jar
    ognl-
    2.6.11.jar
    freemarker-
    2.3.13.jar
    commons-loggin-
    1.0.4.jar
    commons-fileupload-
    1.2.1.jar

            我還是在我朋友的項目基礎上做吧,先把“MvcModel”(他的項目名)項目下的web.xml修改一下。你可以把他配置的所有Servlet給刪除掉,然后,配置是Struts2的過濾器,代碼如下:
        <filter>
            
    <filter-name>struts2</filter-name>
            
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        
    </filter>
        
    <filter-mapping>
            
    <filter-name>struts2</filter-name>
            
    <url-pattern>/*</url-pattern>
        
    </filter-mapping>
           這樣,就簡潔了許多,比配置N個Servlet簡潔了。
           接著,在項目的Web-INF目錄下,新建一個文件夾名為"content",這個目錄名要是這個,如果要改成其它名的話,還得在相應的配置文件中配置,但初學的時候,就按它默認的吧。我們編寫的JSP文件,就放在此目錄下。這樣做,目的之一為了提高安全性,因為在Web-INF下的所有文件,不能直接訪問的。
           我們可以把我朋友的那個項目的主頁index.jsp文件移到content目錄下,或者,自己新建一個也可以。以下是index.jsp的代碼,注意,這個是我朋友項目中的有所不同了,編碼改成了UTF-8.
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding
    ="UTF-8"
    %>
    <!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=ISO-8859-1">
    <title>MVC MODEL</title>
    </head>
    <body>
    <h1>MVC MODEL</h1>
    <ul>
        
    <li><href="people!input.action">添加人員</a></li>
        
    <li><href="people.action">人員列表</a></li>
    </ul>
    </body>
    </html>


            我們在瀏覽器中輸入地址http://localhost:8060/MvcModel/index, 注意,我的端口號與你的可能不同,這個訪問路徑“index”不能帶".jsp"后綴,否則會報找不到action的錯誤。或者,你加個".action"的后綴也可以。Struts2.1.6與Struts2.0不同之處之一是,Struts2.1.6中的“xxx.action”可以沒有Action類與它對應,它如果找不到有相應的action類,它會去找xxx.jsp,xxx.htm等文件。
            我們做到這一步,如果能夠通過上面的路徑預覽index.jsp的話,就說明,Struts2.1.6配置正確了。繼續下面的步驟吧。
      
          來寫一個Struts的action類,命名為"PeopleAction",代碼如下:
    package cn.he.action;

    import java.util.List;
    import org.apache.struts2.convention.annotation.Result;
    import org.apache.struts2.convention.annotation.Results;
    import cn.he.manager.Manager;
    import cn.he.pojo.People;
    import com.opensymphony.xwork2.ActionSupport;

    @Results(
    {
        @Result(name 
    = "reload", location = "people.action", type = "redirect")
    }
    )
    public class PeopleAction extends ActionSupport {
        
        
    private static final long serialVersionUID = 1L;
        
    private Manager manager = new Manager();
        
    private int id;
        
    private People people;
        
    private List<People> peoples;
        
        
    //默認的操作
        @Override
        
    public String execute() throws Exception {
            
    return list();
        }

        
        
    //查詢列表的操作
        public String list() throws Exception {
            System.out.println(
    "list");
            peoples 
    = manager.queryAllPeople();
            System.out.println(
    "name = " + peoples.size());
            
    return SUCCESS;
        }

        
        
    //進入編輯頁面前的操作
        public String input() throws Exception {
            System.out.println(
    "input");
            
    return INPUT;
        }

        
        
    //保存操作
        public String save() throws Exception {
            manager.addPeople(people);
            
    return "reload";
        }

        
        
    //刪除操作
        public String delete() throws Exception {
            manager.delPeople(id);
            
    return "reload";
        }


        
    //自動生成相應的getter和setter方法
        public int getId() {
            
    return id;
        }

        
    public void setId(int id) {
            
    this.id = id;
        }

        
    public People getPeople() {
            
    return people;
        }

        
    public void setPeople(People people) {
            
    this.people = people;
        }

        
    public List<People> getPeoples() {
            
    return peoples;
        }

        
    public void setPeoples(List<People> peoples) {
            
    this.peoples = peoples;
        }


    }
             注意,這個類的包名“cn.he.action”,要有名為“action”或者"struts",或者"web"等,相關的命名規范請參考  struts2采用convention-plugin實現零配置,Struts2.1.6默認會把這些包下或者這些包的子包下的類,納入自己的管理范圍之內。
     
           接著在content目錄下,寫兩個JSP文件,一是查詢列表的JSP頁面:people.jsp,代碼如下:
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding
    ="utf-8"
    %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!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>People列表頁</title>
    </head>
    <body>
    <table>
    <tr>
        
    <td>id</td>
        
    <td>name</td>
        
    <td>delete</td>
    </tr>
    <s:iterator value="peoples" var="peo">
    <tr>
        
    <td><s:property value="people.id"/> </td>
        
    <td>${peo.name}</td>
        
    <td><href="people!delete.action?id=${peo.id}">刪除</a></td>
    </tr>
    </s:iterator>

    </table>

    </body>
    </html>

           另一個添加人員的頁面:people-input.jsp,代碼如下:
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding
    ="utf-8"
    %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!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>People添加頁</title>
    </head>
    <body>
    <form action="people!save.action" method="post">
    名字:
    <input type="text" name="people.name"/> <br/>
    <input type="submit" value="添加"/>
    </form>
    </body>
    </html>
     
          運行一下看看效果吧!



    本文原創,轉載請注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢帆影JavaEE技術博客)
        

    posted on 2009-06-10 02:37 心夢帆影 閱讀(2899) 評論(4)  編輯  收藏 所屬分類: Struts2.x

    評論:
    # re: 從Servlet到Struts 2.1.6 2009-06-10 09:03 | HiMagic!
    servlet不是指xml中的那些定義,2.1.6的實現是為site弄了一個同一個的gate,相當于一個general controller。盡管JSP的本質就是servlet,似乎可以不再寫單獨的servlet類,但在具體業務上,其還是有存在的必要性的。  回復  更多評論
      
    # re: 從Servlet到Struts 2.1.6 2009-06-10 21:03 | 小人物
    學習了!受益匪淺!  回復  更多評論
      
    # re: 從Servlet到Struts 2.1.6[未登錄] 2009-06-12 15:26 | 逍遙
    Struts.xml 你沒有配置?
    好像freemarker不用加載吧  回復  更多評論
      
    # re: 從Servlet到Struts 2.1.6 2009-07-03 00:04 | 心夢帆影
    freemarker用于加載Struts2內部的配置文件struts-defualt.xml,如果沒有的話,就會拋異常.Struts2應用無法啟動.  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品国产精品国自产网站| 亚洲伊人tv综合网色| 羞羞视频免费网站日本| 亚洲毛片一级带毛片基地| 亚洲免费观看在线视频| 亚洲理论在线观看| 亚洲a一级免费视频| 亚洲白色白色在线播放| 99久久免费国产精品特黄| 成年男女男精品免费视频网站| 亚洲欧洲国产日韩精品| 亚洲精品资源在线| 亚洲免费观看在线视频| 亚洲人成电影在线天堂| 99精品国产成人a∨免费看| 日韩高清免费观看| 亚洲一区二区三区四区在线观看| 永久在线免费观看| 国产午夜亚洲精品| 亚洲精品国产成人片| 丝瓜app免费下载网址进入ios| 亚洲精品在线电影| 日日噜噜噜噜夜夜爽亚洲精品| 一二三四免费观看在线视频中文版 | **真实毛片免费观看| 美女被免费网站在线视频免费| 亚洲av无码不卡| 四虎永久免费地址在线网站| 1a级毛片免费观看| 久久国产一片免费观看| 亚洲精品乱码久久久久久蜜桃图片 | 亚洲精品和日本精品| 成在人线AV无码免费| 性xxxxx大片免费视频| 日本一区二区三区免费高清在线| 免费va人成视频网站全| 91麻豆最新在线人成免费观看| 在线观看免费黄网站| 亚洲国产精品热久久| 亚洲精品无码99在线观看 | 亚洲AV日韩AV高潮无码专区|