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

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

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

    隨筆-42  評(píng)論-578  文章-1  trackbacks-0
            前段時(shí)間,朋友做了一個(gè)“基于MVC的JSP+Servlet+JavaBean整合開發(fā)的例子”,有老師質(zhì)疑它這個(gè)是不是真正的MVC標(biāo)準(zhǔn)?至于這個(gè)問題,我們?cè)谶@里不討論,本文目的是用Struts2.1.6來取代Servlet。經(jīng)我這位朋友同意,我把他所做的那個(gè)“JSP+Servlet+JavaBean”的例子,發(fā)布給大家,大家可以跟著我的步驟,一步一步地,把這個(gè)Servlet的例子,改寫成Struts2.1.6的例子。
            附件下載:/Files/rongxh7/MvcModel.rar
            這是我朋友的例子,大家先下載下來,導(dǎo)入Eclipse-jee,并把相應(yīng)的數(shù)據(jù)庫文件導(dǎo)入SQL Server 2000,運(yùn)行一下他這個(gè)小項(xiàng)目。如果出現(xiàn)什么問題,可以到他的技術(shù)博客給他留言。http://m.tkk7.com/gdhqs。
            本文重點(diǎn)是如何把他這個(gè)Servlet的小項(xiàng)目改寫成Struts2.1.6的項(xiàng)目。首先,下載Struts2.1.6的類庫,http://struts.apache.org/2.1.6/index.html, 下載下來后是這個(gè)文件:struts-2.1.6-all.zip,解壓縮后,在lib目錄下,找到以下必需的jar包,把它們添加到我們項(xiàng)目的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

            我還是在我朋友的項(xiàng)目基礎(chǔ)上做吧,先把“MvcModel”(他的項(xiàng)目名)項(xiàng)目下的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個(gè)Servlet簡潔了。
           接著,在項(xiàng)目的Web-INF目錄下,新建一個(gè)文件夾名為"content",這個(gè)目錄名要是這個(gè),如果要改成其它名的話,還得在相應(yīng)的配置文件中配置,但初學(xué)的時(shí)候,就按它默認(rèn)的吧。我們編寫的JSP文件,就放在此目錄下。這樣做,目的之一為了提高安全性,因?yàn)樵赪eb-INF下的所有文件,不能直接訪問的。
           我們可以把我朋友的那個(gè)項(xiàng)目的主頁index.jsp文件移到content目錄下,或者,自己新建一個(gè)也可以。以下是index.jsp的代碼,注意,這個(gè)是我朋友項(xiàng)目中的有所不同了,編碼改成了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>


            我們?cè)跒g覽器中輸入地址http://localhost:8060/MvcModel/index, 注意,我的端口號(hào)與你的可能不同,這個(gè)訪問路徑“index”不能帶".jsp"后綴,否則會(huì)報(bào)找不到action的錯(cuò)誤?;蛘?,你加個(gè)".action"的后綴也可以。Struts2.1.6與Struts2.0不同之處之一是,Struts2.1.6中的“xxx.action”可以沒有Action類與它對(duì)應(yīng),它如果找不到有相應(yīng)的action類,它會(huì)去找xxx.jsp,xxx.htm等文件。
            我們做到這一步,如果能夠通過上面的路徑預(yù)覽index.jsp的話,就說明,Struts2.1.6配置正確了。繼續(xù)下面的步驟吧。
      
          來寫一個(gè)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;
        
        
    //默認(rèn)的操作
        @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;
        }

        
        
    //進(jìn)入編輯頁面前的操作
        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";
        }


        
    //自動(dòng)生成相應(yīng)的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;
        }


    }
             注意,這個(gè)類的包名“cn.he.action”,要有名為“action”或者"struts",或者"web"等,相關(guān)的命名規(guī)范請(qǐng)參考  struts2采用convention-plugin實(shí)現(xiàn)零配置,Struts2.1.6默認(rèn)會(huì)把這些包下或者這些包的子包下的類,納入自己的管理范圍之內(nèi)。
     
           接著在content目錄下,寫兩個(gè)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>

           另一個(gè)添加人員的頁面: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>
     
          運(yùn)行一下看看效果吧!



    本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
        

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

    評(píng)論:
    # re: 從Servlet到Struts 2.1.6 2009-06-10 09:03 | HiMagic!
    servlet不是指xml中的那些定義,2.1.6的實(shí)現(xiàn)是為site弄了一個(gè)同一個(gè)的gate,相當(dāng)于一個(gè)general controller。盡管JSP的本質(zhì)就是servlet,似乎可以不再寫單獨(dú)的servlet類,但在具體業(yè)務(wù)上,其還是有存在的必要性的。  回復(fù)  更多評(píng)論
      
    # re: 從Servlet到Struts 2.1.6 2009-06-10 21:03 | 小人物
    學(xué)習(xí)了!受益匪淺!  回復(fù)  更多評(píng)論
      
    # re: 從Servlet到Struts 2.1.6[未登錄] 2009-06-12 15:26 | 逍遙
    Struts.xml 你沒有配置?
    好像freemarker不用加載吧  回復(fù)  更多評(píng)論
      
    # re: 從Servlet到Struts 2.1.6 2009-07-03 00:04 | 心夢(mèng)帆影
    freemarker用于加載Struts2內(nèi)部的配置文件struts-defualt.xml,如果沒有的話,就會(huì)拋異常.Struts2應(yīng)用無法啟動(dòng).  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 久久九九AV免费精品| 一色屋成人免费精品网站| 青青草原亚洲视频| 久久免费看少妇高潮V片特黄| 亚洲中文字幕一二三四区苍井空| 国产资源免费观看| 野花香在线视频免费观看大全| 亚洲综合无码一区二区痴汉| 免费一看一级毛片全播放| 一个人免费日韩不卡视频| 亚洲欧美aⅴ在线资源| 亚洲综合色在线观看亚洲| 1000部国产成人免费视频| 亚洲人成网站999久久久综合| 自拍偷自拍亚洲精品被多人伦好爽| 3344永久在线观看视频免费首页 | 亚洲美女又黄又爽在线观看| 成人免费无码H在线观看不卡| 亚洲精品色午夜无码专区日韩| 日韩不卡免费视频| 亚洲精品日韩专区silk| 免费看的黄色大片| 一级毛片免费视频| 亚洲一区精彩视频| 久久精品国产亚洲香蕉| 亚洲色欲色欲www| 亚洲国产精品尤物yw在线| 国产成人无码免费看视频软件| 中国在线观看免费的www| 中文字幕无码亚洲欧洲日韩| 久久精品夜色国产亚洲av| 免费人成在线观看网站视频| av无码国产在线看免费网站| aa在线免费观看| 黄页网站在线免费观看| 亚洲欧美aⅴ在线资源| 亚洲精品一区二区三区四区乱码 | 亚洲视频在线一区二区三区| 久久精品夜色噜噜亚洲A∨| 最新69国产成人精品免费视频动漫 | 最新国产AV无码专区亚洲 |