国产亚洲精品2021自在线,亚洲国产精品高清久久久,亚洲天堂一区二区http://www.tkk7.com/rongxh7/category/40605.htmlStruts2.x+Spring2.x+Hibernate3.x+EJB3.0+JPA+Jquery+SOA+WebService+Eclipse+MySQL+Oracle+WebLogic+JBoss+.......探索與求知,尋找一條完美的路,通過夢想的世界!zh-cnFri, 14 Aug 2009 22:19:04 GMTFri, 14 Aug 2009 22:19:04 GMT60Struts 2.1.6 精簡實例系列教程(6):重寫用戶登錄模塊(整合Jquery+JSON)http://www.tkk7.com/rongxh7/archive/2009/08/14/291207.html心夢帆影心夢帆影Fri, 14 Aug 2009 14:32:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/08/14/291207.htmlhttp://www.tkk7.com/rongxh7/comments/291207.htmlhttp://www.tkk7.com/rongxh7/archive/2009/08/14/291207.html#Feedback0http://www.tkk7.com/rongxh7/comments/commentRss/291207.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/291207.html閱讀全文

心夢帆影 2009-08-14 22:32 發(fā)表評論
]]>
Struts 2.1.6 精簡實例系列教程(5):用戶注冊模塊(整合Jquery)http://www.tkk7.com/rongxh7/archive/2009/08/01/289402.html心夢帆影心夢帆影Sat, 01 Aug 2009 08:16:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/08/01/289402.htmlhttp://www.tkk7.com/rongxh7/comments/289402.htmlhttp://www.tkk7.com/rongxh7/archive/2009/08/01/289402.html#Feedback8http://www.tkk7.com/rongxh7/comments/commentRss/289402.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/289402.html閱讀全文

心夢帆影 2009-08-01 16:16 發(fā)表評論
]]>
Struts 2.1.6 精簡實例系列教程(4):新聞管理模塊的實現(xiàn)http://www.tkk7.com/rongxh7/archive/2009/07/27/288495.html心夢帆影心夢帆影Sun, 26 Jul 2009 17:14:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/07/27/288495.htmlhttp://www.tkk7.com/rongxh7/comments/288495.htmlhttp://www.tkk7.com/rongxh7/archive/2009/07/27/288495.html#Feedback2http://www.tkk7.com/rongxh7/comments/commentRss/288495.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/288495.html閱讀全文

心夢帆影 2009-07-27 01:14 發(fā)表評論
]]>
Struts 2.1.6 精簡實例系列教程(3):新聞管理Model層的開發(fā)(整合iBatis)http://www.tkk7.com/rongxh7/archive/2009/07/26/288414.html心夢帆影心夢帆影Sat, 25 Jul 2009 19:02:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/07/26/288414.htmlhttp://www.tkk7.com/rongxh7/comments/288414.htmlhttp://www.tkk7.com/rongxh7/archive/2009/07/26/288414.html#Feedback7http://www.tkk7.com/rongxh7/comments/commentRss/288414.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/288414.html閱讀全文

心夢帆影 2009-07-26 03:02 發(fā)表評論
]]>
Struts 2.1.6 精簡實例系列教程(2):用戶登錄模塊的實現(xiàn)http://www.tkk7.com/rongxh7/archive/2009/07/21/287554.html心夢帆影心夢帆影Mon, 20 Jul 2009 16:14:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/07/21/287554.htmlhttp://www.tkk7.com/rongxh7/comments/287554.htmlhttp://www.tkk7.com/rongxh7/archive/2009/07/21/287554.html#Feedback2http://www.tkk7.com/rongxh7/comments/commentRss/287554.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/287554.html用戶登錄幾乎是每一個Web系統(tǒng)的必需模塊,本期教程就通過用戶登錄模塊來講解Struts2.1.6的Action和Result的Annotation配置。

上期的Struts 2.1.6 精簡實例系列教程(1):環(huán)境的搭建與HelloSimple中,我們建的package名為“cn.simple.action”,這些包名有一個規(guī)則的,只要包含“action,actions,struts,struts2”都會默認(rèn)被掃描到為Action類,也就是說,我們只要配置了如“cn.simple.action”、“cn.simple.struts”、“cn.simple.action.admin”等包名,就可以不用在配置文件struts.xml(Struts2.0的配置文件)中配置這些Action類了。當(dāng)然,這些包名,也可以是別的,但要寫一點點配置,我們就用默認(rèn)的吧。關(guān)于這方面的詳細(xì)說明,還是強(qiáng)烈建議大家先看官方的文檔http://struts.apache.org/2.1.6/docs/convention-plugin.html

好,我們開始寫我們的用戶登錄模塊吧。先寫個loginform.jsp,記得,不要忘記我們把JSP文件放在Web-Inf/content/目錄下

<%@ 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" ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登錄頁</title>
</head>
<body>

<s:fielderror></s:fielderror>

<form action="login.action" method="post">
    賬號<input type="text" name="loginName" value="${loginName}"/><br/>
    密碼<input type="password" name="password"><br/>
    <input type="submit" value="登錄"/>
</form>

</body>
</html>

大家如果想用Struts 2的標(biāo)簽庫的話,也可以用Struts 2的Form標(biāo)簽,用之前,要在JSP頭配置上Struts 2標(biāo)簽庫,換成Struts 2標(biāo)簽的版本后,即:

<%@ 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" ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<s:fielderror></s:fielderror>

<s:form action="login">
    <s:textfield name="loginName"></s:textfield>
    <s:password name="password"></s:password>
    <s:submit value="登錄"></s:submit>
</s:form>

</body>
</html>

接著,我們寫一個登錄處理的Action類:loginAction.java,代碼如下:

package cn.simple.action;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;

@Results({
    @Result(name="success", location="admin/index.action", type="redirect"),
    @Result(name="input", location="loginform.jsp", type="dispatcher")
})

public class LoginAction extends ActionSupport {

    private String loginName;
    private String password;
    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }

    @Override
    public void validate() {
        if( ! "simple".equals(loginName)){
            addFieldError("loginName", "登錄名不正確!");
        }else if(! "simple".equals(password)){
            addFieldError("password", "密碼不正確!");
        }
    }

    //*******Getter和Setter方法***********//
    public String getLoginName() {
        return loginName;
    }
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

解釋一下這個類吧:

execute 這個方法是重寫了父類ActionSupport的方法,是Action默認(rèn)會執(zhí)行的方法,即訪問…/login.action或者…/login,它默認(rèn)會執(zhí)行這個方法。

validate 在執(zhí)行execute方法之前,它會先執(zhí)行validate這個方法,檢查登錄框是否輸入正確,這個方法也是重寫了父類的validate方法。

getter和setter,有了setter方法,才能使action能拿到上一個JSP頁面?zhèn)鬟^來的Request域的數(shù)據(jù);有了getter方法,下一個轉(zhuǎn)發(fā)(dispatcher)過去的頁面才能拿到此Action的Request域的數(shù)據(jù)。

執(zhí)行過程是這樣:表單提交給LoginAction,LoginAction先執(zhí)行validate方法,檢驗loginName和password是否符合要求,如果不符合,就會addFieldError (把錯誤信息放到Field棧里),如果Field棧里有錯誤信息的話,它就不會再執(zhí)行execute方法,直接轉(zhuǎn)發(fā)(Dispatcher)到INPUT即“input”所指定的錯誤處理頁面,這里為location="loginform.jsp",即讓它返回到表單登錄頁去,如果剛才validate方法中驗證正確,即Field棧中沒有錯誤信息,就會執(zhí)行execute方法。在這里execute返回SUCCESS,即“success”,根據(jù)Result注解,就會重定向到admin/index.action這個action。

返回SUCCESS重定向到的后臺主頁,其實簡單,admin/index.jsp,代碼很簡單,就在HTML中顯示一句“登錄成功”,代碼略。

這些的目錄結(jié)構(gòu)如下:

image

運行一下吧:

image

image

image

一點提醒:本項目網(wǎng)頁的排版以精簡為主,在真實的網(wǎng)站開發(fā)中,建議用Dreamweaver可視化排版,再作必要的修改和嵌入必要的動態(tài)標(biāo)簽。

“Struts 2.1.6 精簡實例系列教程(2):用戶登錄模塊的實現(xiàn)” 講解就到此,你也試一下吧,好,敬請關(guān)注下文!



心夢帆影 2009-07-21 00:14 發(fā)表評論
]]>
Struts 2.1.6 精簡實例系列教程(1):環(huán)境的搭建與HelloSimplehttp://www.tkk7.com/rongxh7/archive/2009/07/18/287258.html心夢帆影心夢帆影Sat, 18 Jul 2009 09:27:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/07/18/287258.htmlhttp://www.tkk7.com/rongxh7/comments/287258.htmlhttp://www.tkk7.com/rongxh7/archive/2009/07/18/287258.html#Feedback6http://www.tkk7.com/rongxh7/comments/commentRss/287258.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/287258.html下載Struts2.1.6,網(wǎng)址http://struts.apache.org/download.cgi#struts216,點擊下圖中選中的部分即可下載。

image

下載Eclipse for JavaEE(3.4 or 3.5),網(wǎng)址http://www.eclipse.org/downloads/,點擊下圖選中的鏈接,進(jìn)入下一個頁面,找到能夠下載的地方下載就行。

image

JDK6.0和Tomcat6.0,請大家自行下載。

另外,建議下載JSP標(biāo)準(zhǔn)標(biāo)準(zhǔn)庫JSTL,下載地址:/Files/rongxh7/jstl-jar.rar

好,暫時下載這些,以后,需要用到其他的時,再下載。至于JDK6.0,Tomcat6.0,Eclipse的安裝,請大家自行安裝,在這里就不演示安裝過程了,如有什么問題,再聯(lián)系我。

關(guān)于Eclipse的部分用法,如在Eclipse里配置Tomcat服務(wù)器,新建動態(tài)Web項目等,請看我的(Eclipse圖解教程),或者上網(wǎng)找一下其他的資料學(xué)習(xí)一下。

來開始我們的項目吧,先做個簡單的測試,New一個Dynamic Web Project,起名為“SimpleWeb”,將Struts2.1.6的下載包解壓后得到的lib目錄,在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

把這些包放進(jìn)項目的lib目錄下,同時,建議也把JSTL的核心jar包也放到lib目錄,這些JSTL的包主要有:

jstl.jar
standard.jar

我們先要在項目WEB-INF下的web.xml文件中配置Struts2應(yīng)用,配置后,web.xml全部代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SimpleWeb</display-name>
  <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>

</web-app>

我們在項目的WEB-INF目錄下新建一個文件夾命名為“content”,這個文件夾名一定要這樣,如果寫成別的,要另外配置一下,但初學(xué)的話,就按它默認(rèn)的吧。我們新建的這個content目錄,就是專門用來放JSP文件的。

我們在content目錄下建一個JSP文件,命名為“hello.jsp”,內(nèi)容可以很簡單,就在里面寫一個簡單的話:Hello SImple,代碼略。

這時,整個項目的文件夾視圖如下:

image

我運行Tomcat服務(wù)器,測試一下Struts2配置能不能用。首先我們在地址欄輸入:http://localhost:8060/SimpleWeb/hello.jsp ,很遺憾,不管用了,報錯了:HTTP Status 404 - The requested resource (/SimpleWeb/hello.jsp) is not available.截圖如下:

image

正確的做法是,輸入地址: http://localhost:8060/SimpleWeb/hello.action 或者http://localhost:8060/SimpleWeb/hello 如果出現(xiàn)如下結(jié)果,就說明Struts2配置成功了。

image

 

注意一點,這只是在WEB-INF/content目錄下的文件是通過這種方式訪問的;如果不是在這目錄下,而在項目目錄下,即Eclipse對應(yīng)項目的WebContent下,就不能這樣訪問了。舉例說,在項目根目錄下建個hello.jsp的文件,則我們只能通過http://localhost:8060/SimpleWeb/hello.jsp來訪問。

能通過hello.action或者h(yuǎn)ello訪問WEB-INF/content下的hello.jsp,這種做法,是Struts2.1.6跟Struts2.0不同之處之一。使用時請確保你使用的Struts版本是2.1.6+。相關(guān)的命名規(guī)范與默認(rèn)的action匹配規(guī)則,請參考官方的文檔:http://struts.apache.org/2.1.6/docs/convention-plugin.html

我們再新建一個Java類,命名為HelloAction,此類須繼承com.opensymphony.xwork2.ActionSupport,代碼如下:

package cn.simple.action;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;


public class HelloAction extends ActionSupport {

    @Override
    public String execute() throws Exception {
        System.out.println("HelloAction execute ... ");
        return SUCCESS;
    }
}

讓我們再次訪問:http://localhost:8060/SimpleWeb/hello.action 或者http://localhost:8060/SimpleWeb/hello 

可以看出,在Eclipse的控制臺確定打印出了以下信息,這說明,訪問請求確定經(jīng)過了HelloAction類。

image

同時頁面是跳到了WEB-INF/content/hello.jsp文件(如下圖),這說明請求的確是從HelloAction類轉(zhuǎn)發(fā)到了hello.jsp。

image

看來,好像在不做什么配置,Struts2.1.6也會找到名為HelloAction的類來處理…/hello.action或者…/hello的請求,而好像也沒有做什么配置,HelloAction會自動將請求轉(zhuǎn)發(fā)給名為hello.jsp的頁面,這正是Struts2.1.6的妙用之處,全賴struts2-convention-plugin-2.1.6.jar這個插件,具體了解,可看我上面提供的官方鏈接,或者看這位帥哥的翻譯之作:struts2采用convention-plugin實現(xiàn)零配置。

看了上面的HelloAction的代碼若感到莫名其妙的話,我這里把那些默認(rèn)的、約定俗成的代碼也寫出來,這樣,修改后的HelloAction類如下:

package cn.simple.action;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;

@Results({
    @Result(name="success",location="hello.jsp",type="dispatcher")
})

public class HelloAction extends ActionSupport {

    @Override
    public String execute() throws Exception {
        System.out.println("HelloAction execute ... ");
        return SUCCESS;
    }
}

這樣就容易明白許多了。解釋如下:

name = “success” 跟 Action里的execute()方法的返回值SUCCESS(也可寫成“success”)對應(yīng),即若此Action類一旦返回SUCCESS,就會跳到對應(yīng)的這個Result去處理。
location = “hello.jsp”,表示請求由這個Action跳轉(zhuǎn)到hello.jsp這個頁面。
type = “dispathcer”,表示轉(zhuǎn)發(fā)方式,具體解釋見下面。


其中type=”dispatcher”表示請求轉(zhuǎn)發(fā),還有另一種常用的叫做type=”redirect”重定向,在下文會出現(xiàn)。Struts2的請求轉(zhuǎn)發(fā)和重定向的區(qū)別其實跟Java Servlet里的是差不多的。Servlet里與其功能等價的的代碼片斷如下:

request.getRequestDispatcher("hello.jsp").forward(request, response);    //請求轉(zhuǎn)發(fā)
response.sendRedirect("hello.jsp");    //重定向

兩者的區(qū)別可以這樣理解:請求轉(zhuǎn)發(fā)(Dispatcher)在轉(zhuǎn)發(fā)到的另一頁面(如hello.jsp)還能保留Request域里的東西,而重定向(Redirect)的話,就跟它的名字“重定向”一樣,跳到了另一個頁面(如hello.jsp),不再跟原來頁面(或者一個action、或者一個Servlet,或者JSP頁面)有任何瓜葛,不會保存原來頁面Request域的東西。還有一個表面上的區(qū)別就是:請求轉(zhuǎn)發(fā)(Dispatcher)到另一個頁面(如hello.jsp)后,地址欄里顯示的仍然是上一個頁面(這里稱頁面不太合適)的路徑(如hello.action),而重定向則顯示的是新跳到的那個頁面的路徑。大家自己測試一下,觀察一下,其實也挺容易理解的。

Struts 2.1.6 精簡實例系列教程第一期——環(huán)境的搭建與HelloSimple介紹就到此,敬請期待下文!



心夢帆影 2009-07-18 17:27 發(fā)表評論
]]>
主站蜘蛛池模板: 大学生一级特黄的免费大片视频| 美美女高清毛片视频黄的一免费 | 国产精品1024在线永久免费| 国产精品视频永久免费播放| 亚洲一区二区三区免费观看| 在线观看免费av网站| 久久精品国产亚洲综合色| 国产裸体美女永久免费无遮挡| 日本免费高清视频| 亚洲人成色7777在线观看| 国产VA免费精品高清在线| 久久久久亚洲爆乳少妇无| 国产精品99爱免费视频| 亚洲女同成av人片在线观看| 无码日韩精品一区二区免费暖暖 | 日本特黄特黄刺激大片免费| 亚洲狠狠色丁香婷婷综合| 日韩成人免费视频播放| 麻豆91免费视频| 亚洲熟妇av一区二区三区| 另类免费视频一区二区在线观看| 亚洲综合精品一二三区在线| 国产亚洲视频在线观看| 国产成人精品久久亚洲| 免费观看一区二区三区| 亚洲国产理论片在线播放| 伊人久久大香线蕉免费视频| 亚洲AV区无码字幕中文色| 免费一本色道久久一区| 狼人大香伊蕉国产WWW亚洲| 亚洲中文字幕无码久久综合网| 久久久久久AV无码免费网站| 亚洲av无码一区二区三区观看| 手机看片久久国产免费| 中文字幕免费在线观看动作大片| 91亚洲一区二区在线观看不卡| 成人午夜18免费看| 亚洲视频无码高清在线| 亚洲日韩中文字幕日韩在线| 99久久久国产精品免费蜜臀| 精品韩国亚洲av无码不卡区|