<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      struts1.x和struts2.x隨筆

      網(wǎng)上有很多關(guān)于struts1.x和struts2.x的文章,但是都不太清楚,本人身為初學(xué)者,把自己的心得分享給和我一樣的初學(xué)者,如有不對的地方請多多指出,謝謝。如果需要轉(zhuǎn)載請注重個(gè)人學(xué)習(xí)成果,請注明出處,謝謝!
      另外參考網(wǎng)上高手寫的struts心得原創(chuàng),地址:http://www.blogjava.net/nokiaguy/archive/2008/04/15/193229.html 建議看看。

      首先我測試的工具是myeclipse9.0 M2。

      筆記開始:

             首先先給大家看看目錄:
             struts1.x的整站結(jié)構(gòu)圖: 圖片    struts2.x的整站結(jié)構(gòu)圖: 圖片

      首先給出struts1.x 的搭建過程,之后是struts2的搭建過程,在搭建過程中會對struts1.x和struts2.x的重點(diǎn)進(jìn)行說明并說說他們的區(qū)別。在搭建環(huán)境之前說明一下,我是用myeclipse9.0 M2開發(fā)的,myeclipse會自動生成struts的jar包等文件及配置文件,如果是使用eclipse或者是其它工具開發(fā)的話,需要到網(wǎng)站下載struts框架需要的jar包,并添加到相應(yīng)的目錄,例如:在eclipse中開發(fā)struts1.x時(shí),需要把struts1.x的支持jar包復(fù)制到/WEB_INF/lib目錄下,把需要的tld文件復(fù)制到/WEB_INF目錄下。struts的框架請自己百度下載,在這里就不給的地址了。對于各個(gè)配置文件屬性的詳細(xì)說明,請讀者自己在百度搜索,百度很多的,都寫得很好。

      struts1.x------------------------------------------------------------------------------------------------------------------------------------

      現(xiàn)在開始搭建struts,搭建環(huán)境Struts1.x的基本步驟。

      1.        安裝Struts1.x。由于Struts的入口點(diǎn)是ActionServlet,所以得在web.xml中需要配置這個(gè)Servlet

      2.        編寫ActionForm類(一般從org.apache.struts.action.ActionForm類繼承),這一步不是必須的,如果要接收客戶端提交的數(shù)據(jù),需要執(zhí)行這一步。

      3.       編寫Action類(一般從org.apache.struts.action.Action類繼承)。

       4.        struts-config.xml文件中配置ActionActionForm

      5.        如果要采集用戶錄入的數(shù)據(jù),一般需要編寫若干JSP頁面,并通過這些JSP頁面中的form將數(shù)據(jù)提交給Action

      根據(jù)上面的步驟,就可以搭建出struts1.x的的環(huán)境

       (一)編寫web.xml文件(如果沒有就新建),配置要使用struts1.x必須配置web.xml文件,這樣web才能支持struts,配置代碼如下:

      (二)編寫ActionForm類,在ActionForm類可以說是一個(gè)簡單的POJO類,在它的內(nèi)容里只需要定義對象的屬性和定義每個(gè)參數(shù)的get和set方法(這里的參數(shù)就是表單中的的參數(shù),名字可以根據(jù)自己習(xí)慣,最好是見名知意),所以struts1.x的ActionForm代碼如下

      struts1.x 的Form文件:LoginForm.java的類文件代碼如下:

      package struts1.form;

      import javax.servlet.http.HttpServletRequest;
      import org.apache.struts.action.ActionErrors;
      import org.apache.struts.action.ActionForm;
      import org.apache.struts.action.ActionMapping;

       public void reset(ActionMapping mapping, HttpServletRequest request) {
        // TODO Auto-generated method stub
       }

        public String getUsername() {
        return username;
       }

       public void setUsername(String username) {
        this.username = username;
       }

        public String getPassword() {
        return password;
       }

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

      (三)編寫Action,struts1.x 的Action類是最關(guān)鍵的類,它是必須的。Action類必須繼續(xù)Action類并實(shí)現(xiàn)Action類中的execute方法,這個(gè)方法中的的內(nèi)容就是我們的重點(diǎn),我們把數(shù)據(jù)的控制都寫在這里,這個(gè)Action類接收表單的數(shù)據(jù),進(jìn)行判斷處理,然后根據(jù)結(jié)果返回一個(gè)頁面轉(zhuǎn)向(我這里的只是簡單的測試,并沒有涉及數(shù)據(jù)庫操作,所以比較簡單),所以struts1.x的Action代碼如下
      struts1.x 的Action文件:LoginAction.java的類文件代碼如下:

      package struts1.action;

      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import org.apache.struts.action.Action;
      import org.apache.struts.action.ActionForm;
      import org.apache.struts.action.ActionForward;
      import org.apache.struts.action.ActionMapping;

      import struts1.form.LoginForm;

      public class LoginAction extends Action {
       public ActionForward execute(ActionMapping mapping, ActionForm form,
         HttpServletRequest request, HttpServletResponse response) {
        LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
        String username=loginForm.getUsername();
        String password=loginForm.getPassword();
        
        if(username.equals("aaa")&&password.equals("000")){
         return mapping.findForward("Success");
        }else return mapping.findForward("Fail");
       }
      }

       (四)struts-config.xml文件中配置ActionActionForm。這個(gè)配置就是讓服務(wù)器知道怎么工作,比如:當(dāng)用戶在登錄頁面點(diǎn)擊登錄之后,它就根據(jù)action的配置工作,當(dāng)然還有其他的一下配置,在這個(gè)測試中不需要就不寫了。

      struts1.x 的struts-config.xml配置頁面代碼如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

      <struts-config>
        <data-sources />
        <form-beans >
          <form-bean name="loginForm" type="struts1.form.LoginForm" />

        </form-beans>

        <global-exceptions />
        <global-forwards />
        <action-mappings >
          <action
            attribute="loginForm"
            name="loginForm"
            path="/login"
            scope="request"
            type="struts1.action.LoginAction">
            <forward name="Success" path="/success.jsp"></forward>
            <forward name="Fail" path="/fail.jsp"></forward>
          </action>

        </action-mappings>

        <message-resources parameter="struts1.ApplicationResources" />
      </struts-config>

       
      第五步的內(nèi)容已經(jīng)在前面寫好了,各個(gè)頁面的代碼如上面所示,現(xiàn)在就可以運(yùn)行測試了。到此struts1.x測試完成。

      struts2.x----------------------------------------------------------------------------------------------------------------------------------------------

      開始搭建struts2.x。在說struts2.x之前先說一下webwork吧,WebWork2.2版本發(fā)布之后,官方宣稱WebWork框架將要和Struts合并。這讓一些WebWork的用戶產(chǎn)生了擔(dān)憂,合并之后,是不是就意味著自己在WebWork這方面技術(shù)和經(jīng)驗(yàn)的積累都已浪費(fèi)?已使用或即將使用WebWork的項(xiàng)目是不是就意味著更多的風(fēng)險(xiǎn)?

       

        答案是:完全不用擔(dān)心這些。WebWork和Struts的合并,是各取所長,然后誕生出一個(gè)更加高效的Web框架。而這個(gè)框架用得就是WebWork的優(yōu)秀技術(shù)和Struts的強(qiáng)大社區(qū)。

       

        合并的情況如下:

       

        1、 產(chǎn)生一個(gè)新的項(xiàng)目Struts Action 2.0 = WebWork2.2 + 一些Struts的功能和特性。

       

        2、 WebWork框架將會中止新功能的增加,如果有新的版本發(fā)布都會是Bug的修改。

       

        3、 代碼、框架的開發(fā)者、社區(qū)都將移到Struts。

       

        4、 合并的目標(biāo)是致力于生產(chǎn)率的提高。

       

        5、 Struts不再是一個(gè)框架,它是一個(gè)社區(qū)。

       

        6、 Struts社區(qū)中主要有兩個(gè)Web框架。一個(gè)是基于Action模型的Struts Action;另一個(gè)是基于組件模型的Struts Shale。

             由上面的說明可以看到,struts2.x是webwork和struts1.x的合并產(chǎn)物,他們各取其優(yōu),但是要說明的是Struts2雖然在大版本號上是第二個(gè)版本,但基本上在配置和使用上已經(jīng)完全顛覆了Struts1.x的方式(當(dāng)然,Struts2仍然是基于MVC模式的,也是動作驅(qū)動的,可能這是唯一沒變的東西)。Struts2實(shí)際上是在Webwork基礎(chǔ)上構(gòu)建起來的MVC框架。我們從Struts2的源代碼中可以看到,有很多都是直接使用的xwork(Webwork的核心技術(shù))的包。既然從技術(shù)上來說Struts2是全新的框架,那么就讓我們來學(xué)習(xí)一下這個(gè)新的框架的使用方法。

      搭建環(huán)境Struts2.x的基本步驟。

      1.        安裝Struts2.x ,web.xml中需要配置struts

      2.       編寫Action類(包含了struts1.x中的Action和ActionForm,一般從com.opensymphony.xwork2.ActionSupport繼承)。

       3.        struts.xml文件中配置Action

      4.        如果要采集用戶錄入的數(shù)據(jù),一般需要編寫若干JSP頁面,并通過這些JSP頁面中的form將數(shù)據(jù)提交給Action

        

      根據(jù)上面的步驟,就可以搭建出struts2.x的的環(huán)境

      (一)安裝Struts2.x,配置web.xml文件,這一步對于Struts1.xStruts2都是必須的,只是安裝的方法不同。Struts1的入口點(diǎn)是一個(gè)Servlet,而Struts2的入口點(diǎn)是一個(gè)過濾器(Filter)。因此,Struts2要按過濾器的方式配置。下面是在web.xml中配置Struts2的代碼:

      struts2.x 的web.xml配置頁面代碼如下:

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

      (二)編寫Action類,這一步和Struts1.x也必須進(jìn)行。只是Struts1.x中的動作類必須從Action類中繼承,而Struts2.x的動作類需要從com.opensymphony.xwork2.ActionSupport類繼承。
           Struts1.x中,必須要單獨(dú)建立一個(gè)ActionForm類(或是定義一個(gè)動作Form),而在Struts2ActionFormAction已經(jīng)二合一了。從下面的代碼可以看出,前面部分就是應(yīng)該寫在ActionForm類中的內(nèi)容。
           從下面的代碼可以看出,動作類的一個(gè)特征就是要覆蓋execute方法,只是Struts2execute方法沒有參數(shù)了,而Struts1.xexecute方法有四個(gè)參數(shù)。而且execute方法的返回值也不同的。Struts2只返回一個(gè)String,用于表述執(zhí)行結(jié)果(就是一個(gè)標(biāo)志)。

         所以Action類代碼如下:

      struts2.x 的Action類,LoginAction類文件的代碼如下:

      package com.struts2.action;

      import com.opensymphony.xwork2.ActionSupport;

      public class LoginAction extends ActionSupport {
       private String username;
       private String password;
       
       public String getUsername() {
        return username;
       }
       public void setUsername(String username) {
        this.username = username;
       }
       public String getPassword() {
        return password;
       }
       public void setPassword(String password) {
        this.password = password;
       }
       @Override
       public String execute() throws Exception {
        // TODO Auto-generated method stub
        if(getUsername().equals("bbb")&&getPassword().equals("111")){
         return "Success";
        }
        else
        {
         return "Fail";
        }
       }


      }

       (三)struts.xml文件中配置Action,這一步struts1.xstruts2.x都是必須的,只是在struts1.x中的配置文件一般叫struts-config.xml(當(dāng)然也可以是其他的文件名),而且一般放到WEB-INF目錄中。而在struts2.x中的配置文件一般為struts.xml,放在src目錄下,當(dāng)程序運(yùn)行的時(shí)候會自動復(fù)制到/WEB-INF下。

      struts2.x 的struts.xml配置頁面代碼如下:

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
      <struts>
       <package name="struts2" extends="struts-default" >
           <action name="Login" class="com.struts2.action.LoginAction">
               <result name="Success">/success.jsp</result>
                  <result name="Fail">/fail.jsp</result>
              </action>
          </package>
      </struts>   

        <struts>標(biāo)簽中可以有多個(gè)<package>,第一個(gè)<package>可以指定一個(gè)Servlet訪問路徑(不包括動作名),如“/mystruts”。extends屬性繼承一個(gè)默認(rèn)的配置文件“struts-default”,一般都繼承于它,大家可以先不去管它。<action>標(biāo)簽中的name屬性表示動作名,class表示動作類名。

      到此struts2.x配置完成。

      -------------------------------------------------------------------------------------------------------------------------------------------------------------

      各個(gè)頁面代碼如下:

      index.jsp,success.jsp,fail.jsp的頁面代碼(struts1.x和struts2.x的一樣):
      index.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'index.jsp' starting page</title>
        </head>
       
        <body>
         <a href="login.jsp">登錄</a> <br>
        </body>
      </html>

      success.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'success.jsp' starting page</title>   
       
        </head>
       
        <body>
          登錄成功! <br>
        </body>
      </html>


      fail.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'success.jsp' starting page</title>   
       
        </head>
       
        <body>
          登錄失敗! <br>
        </body>
      </html>


        
      struts1.x 的login.jsp頁面代碼如下:

      <%@ page language="java" pageEncoding="gb2312"%>
      <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
      <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
       
      <html>
       <head>
        <title>JSP for LoginForm form</title>
       </head>
       <body>
        <html:form action="/login">
         username : <html:text property="username"/><br/>
         password : <html:password property="password"/><br/>
         <html:submit/><html:cancel/>
        </html:form>
       </body>
      </html>



        struts2.x 的login.jsp頁面代碼如下:

      <%@ page language="java" pageEncoding="gb2312"%>
      <%@ taglib prefix="s" uri="/struts-tags"%>

       
      <html>
       <head>
        <title>JSP for LoginForm form</title>
       </head>
       <body>
        <s:form action="Login">
         <s:textfield name="username" label="username" />
         <s:password name="password" label="password" />
         <s:submit/>
        </s:form>
       </body>
      </html>

      ----------------------------------------------------------------------------------------------------------------------------------------

       

      struts2.x的其他一些特性:

      login.jsp中使用了Struts2帶的tag。在Struts2中已經(jīng)將Struts1.x的好幾個(gè)標(biāo)簽庫都統(tǒng)一了,在Struts2中只有一個(gè)標(biāo)簽庫/struts-tags。這里面包含了所有的Struts2標(biāo)簽。但使用Struts2的標(biāo)簽大家要注意一下。在<s:form>中最好都使用Struts2標(biāo)簽,盡量不要用HTML或普通文本,大家可以將struts2.x中的login..jsp的代碼改為如下的形式,看看會出現(xiàn)什么效果:
             ........
             <body>
               <s:form action="Login">
                 username : <s:textfield name="username" />
                 password : <s:password name="password" />
               <s:submit/>
              </s:form>
             </body>

                 提示一下,在<s:form>Struts2使用<table>定位。如果使用上面的寫法,在瀏覽器中將會看到username和文本框不在同一行內(nèi)。

          <result>標(biāo)簽的name實(shí)際上就是execute方法返回的字符串,如果返回的是“positive”,就跳轉(zhuǎn)到positive.jsp頁面,如果是“negative”,就跳轉(zhuǎn)到negative.jsp頁面。在<struts>中可以有多個(gè)<package>,在<package>中可以有多個(gè)<action>。我們可以用如下的URL來訪問這個(gè)動作:

      Struts1.x的動作一般都以.do結(jié)尾,而Struts2是以.action結(jié)尾。

      到此struts2.x配置完成。

      -------------------------------------------------------------------------------------------------------------------------------------------------------------

      各個(gè)頁面代碼如下:

      index.jsp,success.jsp,fail.jsp的頁面代碼(struts1.x和struts2.x的一樣):
      index.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'index.jsp' starting page</title>
        </head>
       
        <body>
         <a href="login.jsp">登錄</a> <br>
        </body>
      </html>

      success.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'success.jsp' starting page</title>   
       
        </head>
       
        <body>
          登錄成功! <br>
        </body>
      </html>


      fail.jsp頁面代碼如下:

      <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>    
          <title>My JSP 'success.jsp' starting page</title>   
       
        </head>
       
        <body>
          登錄失敗! <br>
        </body>
      </html>


        
      struts1.x 的login.jsp頁面代碼如下:

      <%@ page language="java" pageEncoding="gb2312"%>
      <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
      <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
       
      <html>
       <head>
        <title>JSP for LoginForm form</title>
       </head>
       <body>
        <html:form action="/login">
         username : <html:text property="username"/><br/>
         password : <html:password property="password"/><br/>
         <html:submit/><html:cancel/>
        </html:form>
       </body>
      </html>



        struts2.x 的login.jsp頁面代碼如下:

      <%@ page language="java" pageEncoding="gb2312"%>
      <%@ taglib prefix="s" uri="/struts-tags"%>

       
      <html>
       <head>
        <title>JSP for LoginForm form</title>
       </head>
       <body>
        <s:form action="Login">
         <s:textfield name="username" label="username" />
         <s:password name="password" label="password" />
         <s:submit/>
        </s:form>
       </body>
      </html>

      ----------------------------------------------------------------------------------------------------------------------------------------

       

      struts2.x的其他一些特性:

      login.jsp中使用了Struts2帶的tag。在Struts2中已經(jīng)將Struts1.x的好幾個(gè)標(biāo)簽庫都統(tǒng)一了,在Struts2中只有一個(gè)標(biāo)簽庫/struts-tags。這里面包含了所有的Struts2標(biāo)簽。但使用Struts2的標(biāo)簽大家要注意一下。在<s:form>中最好都使用Struts2標(biāo)簽,盡量不要用HTML或普通文本,大家可以將struts2.x中的login..jsp的代碼改為如下的形式,看看會出現(xiàn)什么效果:
             ........
             <body>
               <s:form action="Login">
                 username : <s:textfield name="username" />
                 password : <s:password name="password" />
               <s:submit/>
              </s:form>
             </body>

                 提示一下,在<s:form>Struts2使用<table>定位。如果使用上面的寫法,在瀏覽器中將會看到username和文本框不在同一行內(nèi)。

      posted @ 2011-03-27 23:17  Java夜未眠  閱讀(599)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 天堂网亚洲综合在线| 久久亚洲精品中文字幕波多野结衣| 久久99国产精品尤物| 中文字幕日韩精品亚洲一区 | 国产无遮挡又黄又爽不要vip软件| 亚洲欧美人成人让影院| 国产成人精品日本亚洲| 国产精品亚洲аv无码播放| 99久久婷婷国产综合精品青草漫画 | 啊轻点灬大JI巴太粗太长了在线| 亚洲国产欧美一区二区好看电影| 国产精品制服丝袜无码| 97精品人妻系列无码人妻| 99热精品毛片全部国产无缓冲| 国产精品久久久国产盗摄| 国产高清在线男人的天堂| 丰满多毛的大隂户视频| 91久久天天躁狠狠躁夜夜| 91精品国产午夜福利| 制服丝袜另类专区制服| 男女扒开双腿猛进入爽爽免费看| 国产av中文字幕精品| 亚洲中少妇久久中文字幕| 亚洲国产成人精品无码区蜜柚| 2021国产精品视频网站| 亚洲成av人片乱码色午夜| 女人香蕉久久毛毛片精品| 波多野结衣av高清一区二区三区 | 二区三区亚洲精品国产| 天天综合色一区二区三区| 亚洲欧美综合人成在线| 亚洲色成人网站www永久四虎| 亚洲人成网线在线播放VA| 九九在线精品国产| 天天爽夜夜爱| 亚洲人成网线在线播放VA| 强奷乱码中文字幕| 国产亚洲一本大道中文在线| 最近中文字幕日韩有码| 亚洲av永久无码天堂影院| 亚洲国产精品久久久久婷婷图片|