<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://www.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://www.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)論
      
    主站蜘蛛池模板: 国产免费观看青青草原网站| 亚洲成aⅴ人片久青草影院按摩| 亚洲综合图片小说区热久久| 亚洲a∨无码男人的天堂| 亚洲av无码一区二区三区天堂古代| 亚洲 暴爽 AV人人爽日日碰| 国产亚洲高清在线精品不卡| 久久国产精品免费| 7m凹凸精品分类大全免费| 十八禁视频在线观看免费无码无遮挡骂过| 免费国产叼嘿视频大全网站| 免费做爰猛烈吃奶摸视频在线观看 | fc2免费人成为视频| 一个人看的www免费高清| a级在线观看免费| 1000部拍拍拍18勿入免费视频软件 | 久久国产乱子伦精品免费看| 国产h视频在线观看免费| 国产美女无遮挡免费网站| 77777亚洲午夜久久多人| 国产亚洲人成A在线V网站| 亚洲黄色在线视频| 婷婷亚洲综合五月天小说在线| 无码亚洲成a人在线观看| 国产精品亚洲一区二区三区久久 | 亚洲Av永久无码精品三区在线 | 337P日本欧洲亚洲大胆艺术图| 两个人看的www免费视频| 久久这里只有精品国产免费10| 亚洲国产婷婷综合在线精品| 中文字幕中韩乱码亚洲大片| 亚洲国产精品综合一区在线 | 亚洲中文字幕一二三四区| 国产精品视频全国免费观看| 歪歪漫画在线观看官网免费阅读| 免费吃奶摸下激烈视频| 浮力影院亚洲国产第一页| 亚洲剧场午夜在线观看| 一级成人生活片免费看| 久久不见久久见中文字幕免费| 亚洲精品无码mv在线观看网站|