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

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

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

    posts - 42,  comments - 84,  trackbacks - 0
     
     

    1、 解決Action過多問題

    通過DispatchAction的方式

    建立一個繼承自DispatchActionAction

    此類Action允許我們在表單中帶有參數,根據參數執行Action中的不同方法,以此實現Action的多用

    步驟

         建立一個繼承自DispatchActionAction規定方法名稱

         在表單頁面中添加一個隱藏域值,假設為codi   value=”insert”

         Struts-config.xml的相應Formaction項目中設置parameter參數值為codi

    那么當表單提交的時候,Action中的insert()方法就會被執行,可以通過改隱藏域中的值的方式來改變Action要執行的方法

    2、 解決ActionForm過多的問題

    通過動態ActionForm的方式,即DynaActionForm

    步驟

         Struts-config.xml

    <form-beans>

     <form-bean name=”abcForm” type=”org.apache.struts.action.DynaActionForm”>

             <form-property name=”userid” type=”java.long.String”></form-property>             

    </form-bean>

    </form-beans>

         Struts-config.xml

    更改相應的action中的attributenameabcForm

    這樣就配置好了一個動態的ActionForm

    3、 解決動態ActionForm的驗證問題

    通過動態驗證ActonForm的方式,即DynaValidatorForm

    步驟

         Struts-config.xml

    2的第一步,但是type需要改成org.apache.struts.action.DynaValidatorForm

         配置一個validation.xml文件

    <form-validation>

        <formset>

            <form name="abcForm">

                <field property="userid" depends="required">

                    <arg key="err.userid" resource="true"/>

                </field>

            </form>

        </formset>

    </form-validation>

        在Struts資源文件中配置err.userid、以及errors.required

        在Struts-config.xml配置相應的action,添加validate=true添加驗證支持

        添加struts Plugin插件

    設置plugin class為org.apache.struts.validator.ValidatorPlugIn

    添加propertys

    Propertyà pathnames

    Valueà /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml

    這樣一個驗證框架就配置好了!

    posted @ 2008-02-12 13:47 Dong 閱讀(3489) | 評論 (6)編輯 收藏

    讀Excel:

    Workbook workbook = null;

      try
      {
          workbook = Workbook.getWorkbook(new File(path));
      }
      catch(Exception e)
      {
       System.out.println(e);
      }


    Sheet sheet = workbook.getSheet(0);
    Cell cell=sheet.getCell(i,j);//讀第i列,第j行表格的值
    System.out.println(cell.getContents());

    對于循環讀出可以使用
    sheet.getRows();方法得到行數
    sheet.getColumns();方法得到列數

    寫Excel:

    Workbook wb = Workbook.getWorkbook(new File(path));

    WritableCellFormat wcf = new WritableCellFormat();

    book = Workbook.createWorkbook(new File(path, wb);
    sheet = book.getSheet(0);

    jxl.write.Label name = new jxl.write.Label(i,j,"abc",wcf);//在第i列,第j行寫入"abc"值,風格為wcf,如果寫入的是數字則使用jxl.write.Number
    sheet.addCell(name);
    try
       {
        book.write();
        book.close();
       }
       catch(WriteException e){}
       catch(IOException e){}

    單元格風格:

    設置邊框—
    WritableCellFormat wcf = new WritableCellFormat();
    wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
    wcf.setBorder(Border.RIGHT,BorderLineStyle.THIN);
    wcf.setBorder(Border.LEFT,BorderLineStyle.THIN);
    wcf.setBorder(Border.BOTTOM,BorderLineStyle.THIN);

    合并單元格-
    sheet.mergeCells(0,1,0,2)
    合并(0,1)、(0,2)兩個單元格

    設置字體-
    WritableFont wf = new WritableFont(WritableFont.ARIAL,12, WritableFont.BOLD, false);
    WritableCellFormat wcf = new WritableCellFormat(wf);
    以及其它各種單元格樣式,如設置背景顏色
    都可以通過設置WritableCellFormat來設置

    還有一點需要說明一下,JXL組件對于公式的支持似乎比Apache的poi好
    posted @ 2008-02-01 16:16 Dong 閱讀(4979) | 評論 (2)編輯 收藏
    原來弄過QuaQua的東西,但是一直不能把JFrame和JDialog變成Ox mac的樣式
    原因是,如果系統并不是蘋果的系統就需要顯示的加載JFrame和JDialog的樣式



    System.setProperty("Quaqua.tabLayoutPolicy","wrap");
              
            
    if(!System.getProperty("os.name").toLowerCase().startsWith("mac"))
            
    {
                
    try
                
    {
                    Methods.invokeStatic(JFrame.
    class"setDefaultLookAndFeelDecorated", Boolean.TYPE, Boolean.TRUE);
                    Methods.invokeStatic(JDialog.
    class"setDefaultLookAndFeelDecorated", Boolean.TYPE, Boolean.TRUE);
                }

                
    catch(NoSuchMethodException e)
                
    {
                    e.printStackTrace();
                }

            }

            
    try 
            
    {
                UIManager.setLookAndFeel(
    "ch.randelshofer.quaqua.QuaquaLookAndFeel");
            }
     
            
    catch(Exception e){}
    posted @ 2008-01-26 13:01 Dong 閱讀(2961) | 評論 (6)編輯 收藏

    Junit主要是用來對我們的程序代碼進行白盒測試的一個組件。
    首先我們需要得到Junit.jar的包,可以到www.junit.org下載得到。
    下載以后將我們的Junit.jar包添加到工程里面,那么OK,就可以開始對我們的程序進行測試了。
    對一個文件進行測試的時候需要自己制作一個類并繼承TestCase,如:

    package cn.colorful.junit;

    import junit.framework.Assert;
    import junit.framework.TestCase;
    import cn.colorful.sample.*;

    public class TestSample extends TestCase {

     private Sample sam = null;

     protected void setUp() throws Exception {
      sam = new Sample();
     }

     protected void tearDown() throws Exception {
      sam = null;
     }

     public void testSample() {
      Assert.assertNotNull(sam);
      Assert.assertEquals("ab", sam.getName("a", "b"));
      Assert.assertEquals("dong", sam.getName("do", "ng"));
     }}

    其中程序的運行過程是TestCase的構造方法、setUp方法(對程序中使用的一些資源進行分配)、運行測試、tearDown()(去處一些使用到的資源)
    這樣程序會自動判斷Sample類中的getName方法返回的值是不是符合我們的要求,使用Junit測試的運行方式,程序會調用Assert類中的靜態方法對測試程序的返回值和期望值等情況進行判斷、還有一些判斷對象是否為空的方法,當出現綠色的時候代表程序是正常運行的
    當書寫了很多測試類后,可以條使用TestSuite類對測試類進行打包測試,如:

    package cn.colorful.junit;

    import junit.framework.Test;
    import junit.framework.TestSuite;

    public class TestPackage{
     public static Test suite()
     {
      TestSuite tes = new TestSuite("Test for cn.colorful.sample");
      tes.addTestSuite(TestSample.class);
      tes.addTestSuite(TestSampleTwo.class);
      
      return tes ;
     }
    }

    程序需要實現suite()方法,并且返回出一個TestSuite對象。

    posted @ 2007-12-25 16:12 Dong 閱讀(1256) | 評論 (2)編輯 收藏

    1、實現自定義Taglib的類需要實現javax.servlet.jsp.tagext.IterationTag或者

    javax.servlet.jsp.tagext.TagSupport、javax.servlet.jsp.tagext.BodyTag接口,目前J2EE提供了兩

    個分別實現了這兩個接口的類,我們只需要直接繼承就可以,它們分別為BodyTagSupport、TagSupport
    繼承兩個類中的一個就可以完成一個屬于自己的Taglib類
    package cn.dong;

    import java.io.IOException;
    import cn.dong.Person ;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.Tag;
    import javax.servlet.jsp.tagext.TagSupport;

    public class TagServer extends TagSupport {
     
     String name ;

     public void setName(String name) {
      this.name = name;
     }

     public int doStartTag() throws JspException {
      Person per = new Person() ;
      try {
       pageContext.getOut().println("Userid:"+name) ;
      } catch (IOException e) {
       e.printStackTrace();
      }
      return SKIP_BODY ;
     }


    }

    2、寫tld文件
    tld文件本身是xml標準文檔的一種,可以通過tld文件配置出Taglib的各種標記所對應的類實現
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

    "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>
     <tlibversion>1.0</tlibversion>//標簽描述
     <jspversion>1.1</jspversion>
     <shortname>mytag</shortname>
     <uri></uri>
     <tag>
      <name>hello</name>//標簽方法名
      <tagclass>cn.dong.TagServer</tagclass>//指向的類
      <bodycontent>empty</bodycontent>
      <info>Tag with Parameter</info>
      <attribute>//定義傳遞的屬性值
       <name>name</name>//屬性名
       <required>true</required>//屬性值是否必須傳輸
       <rtexprvalue>false</rtexprvalue>
      </attribute>
     </tag>
    </taglib>
    這樣一個自定義標記就寫好了,但是要使用它我們還需要在項目中配置
    3、項目部署文件web.xml
    <taglib>
     <taglib-uri>hello</taglib-uri>
     <taglib-location>/WEB-INF/Web.tld</taglib-location>
    </taglib>
    4、在JSP頁面中調用Taglib
    <%@ taglib uri="hello" prefix="show" %>
    這樣我們就完成了所有配置
    在頁面中使用類似<show:hello name="dong"/>就可以看到我們配置的Taglib起的作用了

    posted @ 2007-12-19 11:07 Dong 閱讀(1081) | 評論 (3)編輯 收藏

    我對DAO的理解就是對數據庫的訪問封裝在一個接口里,當用戶需要訪問數據庫的時候只需要簡單的對調用接口,而不需要和數據庫有直接的接觸。
    下面介紹一個簡單的DAO對數據庫訪問的建立:

    首先我們需要建立
    1、一個DAO接口:UserDAO.java在里面定義數據庫操作的所有方法
    2、一個實現了DAO接口的類、UserDAOImpl.java,完成了對DAO的實現并且將取得的數據存放到VO類中。
    3、一個數據庫訪問的基礎類、DataBaseConnection.java里面封裝了對數據庫的連接Connection,外部訪問這個類的方法可以返回一個Connection接口的實現
    4、一個VO類,UserVO.java,里面包含了所有需要返回的出來的數據、利用set方法和get方法對類對象進行基本的設置
    5、一個Factory類,封裝了具體實現了UserDAO接口的UserDAOImpl類對象,調用Factory類的時候直接返回一個UserDAO的對象

    這樣的話一個DAO設計就完成了
    這個時候當我們需要對數據庫進行訪問的時候只需要聲明一個UserDAO接口然后實例化一個工廠類實現UserDAO接口,這樣我們就可以遍歷VO類得到我們要的數據。

    posted @ 2007-12-16 16:30 Dong 閱讀(1140) | 評論 (1)編輯 收藏

    Filter Servlet中傳遞的request和response對象分別是ServletRequest和ServletResponse接口的對象,而不是一般Servlet中的HttpServletRequest和HttpServletResponse接口的對象,ServletRequest是HttpServletRequest的父接口,很多方法是沒有的,比如說request.getSession() ;所以如果想在Filter中讀取session對象必須對request做一定的向下轉型。

    而實現HttpSessionListener 的Listener Servlet中的傳遞的對象是HttpSessionEvent的對象,想在其中實現對Application對象的訪問的話:arg0.getSession().getServletContext().setAttribute();

    另:今天把MySQL裝到電腦上,利用Servlet連接了一下,老是報ClassNotFound的錯誤,原因是MySQL的JDBC驅動只有一個mysql-connector-java-5.0.8-bin.jar,另外一個不能夠拷到lib目錄下。

    posted @ 2007-12-13 01:02 Dong 閱讀(575) | 評論 (0)編輯 收藏
    Struts 使用 Model 2 架構。Struts 的ActionServlet 控制導航流。其他Struts 類,比如
    Action, 用來訪問業務邏輯類。當 ActionServlet 從容器接收到一個請求,它使用URI (或者
    路徑“path”) 來決定那個Action 將用來處理請求。一個 Action可以校驗輸入,并且訪問業務
    層以從數據庫或其他數據服務中檢索信息。
    為校驗輸入或者使用輸入來更新數據庫, Action 需要知道什么指被提交上來。并不是
    強制每個Action 從請求中抓取這些值,而是由 ActionServlet 將輸入綁定到JavaBean中。
    輸入 bean是Struts ActionForm c類的子類。ActionServlet 通過查找請求的路徑可以決定使用
    哪個ActionForm,Action 也是通過同樣的方法選取的。ActionForm 擴展
    org.apache.struts.action.ActionForm類。每個都必須以HTTP 響應進行應答。 通
    常, Struts
    Action 并不自行加工響應信息,而是將請求轉發到其他資源,比如JSP 頁面。Struts 提
    供一個ActionForward 類,用來將一個頁面的路徑存儲為邏輯名稱。當完成業務邏輯后,
    Action 選擇并向Servlet返回一個ActionForward。Servlet 然后使用存儲在ActionForward 對
    象中的路徑來調用頁面完成響應。
    Struts 將這些細節都綁定在一個ActionMapping 對象中。每個ActionMapping 相對于一
    個特定的路徑。當某個路徑被請求時,Servlet 就查詢ActionMapping 對象。ActionMapping
    對象告訴servlet,哪個Actions, ActionForms, 和 ActionForwards 將被使用。
    所有這些細節,關于Action, ActionForm, ActionForward, ActionMapping,以及其
    他一些東西,都在struts-config.xml 文件中定義。 ActionServlet 在啟動時讀取這個配置文件,
    并創建一個配置對象數據庫。在運行時,Struts 應用根據文件創建的配置對象,而不是文件
    本身
    posted @ 2007-12-08 10:52 Dong 閱讀(253) | 評論 (0)編輯 收藏
    <head>
    <title>無標題文檔</title>
    <style type="text/css">
    <!--

    .hidecontent 
    {display:none;}
    -->
    </style>
    <script language="javascript">
    function switchTag(content)
    {
    // alert(tag);
    //
     alert(content);
    for(i=1; i <6; i++)
    {

    if ("content"+i==content)
    {
    document.getElementById(content).className
    ="";
    }
    else{
    document.getElementById(
    "content"+i).className="hidecontent";
    }

    document.getElementById(
    "content").className=content;
    }

    }

    </script>
    </head>

    <body>
    <div id="container">
    <ul>
    <li><a href="#" onmouseover="switchTag('content1');this.blur();"><span>標題一</span></a></li>
    <li><a href="#" onmouseover="switchTag('content2');this.blur();"><span>標題二</span></a></li>
    <li><a href="#" onmouseover="switchTag('content3');this.blur();"><span>標題三</span></a></li>
    <li><a href="#" onmouseover="switchTag('content4');this.blur();"><span>標題四</span></a></li>
    <li><a href="#" onmouseover="switchTag('content5');this.blur();"><span>標題五</span></a></li>
    </ul>
    </div>
    <div id="content" class="content1">

    <div id="content1" >標題一中的東西</div>
    <div id="content2" class="hidecontent">標題二中的東西</div>
    <div id="content3" class="hidecontent">標題三中的東西</div>
    <div id="content4" class="hidecontent">標題四中的東西</div>
    <div id="content5" class="hidecontent">標題五中的東西</div>

    </div>
    </body>
    </html>
    只是一個簡單的實現方法,具體的樣式美觀方面的東西可以自己修改。
    posted @ 2007-11-11 11:39 Dong 閱讀(1517) | 評論 (4)編輯 收藏

            最近開發個后臺系統,使用到了eWebEditor,原先并沒有使用過相關方面的在線編輯器。所以一用起來問題一大堆!都不知道用什么編輯器好,研究了FCKEditor等一些國外的編輯器后還是覺得應該支持國貨!
             選頂了編輯器后之后還算順利,但是沒過多久就出現了另外一個問題,使用eWebEditor編輯后并保存到數據庫中的字符串是以HTML源碼的形式!這樣上傳和前臺顯示是都沒有問題的。但是后臺中有個修改新聞的功能,當我將HTML形式的代碼傳遞給eWebEditor的時候,驚喜就出現了!!編輯器顯然不買我的帳~~~沒反應???
            下面的就是調用編輯器的JS代碼,其中value中的content值代表Html源碼!!然后eWebEditor就不能顯示出來,也不報錯,就是在頁面中空了一塊,哪位仁兄知道解決辦法,麻煩告訴一下,Thanks!!!!!!

    <script language=javascript>

    document.write (
    "<INPUT type='hidden' name='content1' value='<%=content%>'>");
    document.write (
    "<IFRAME ID='eWebEditor1' src='ewebeditor.htm?id=content1&style=" + URLParams["style"+ "' frameborder='0' scrolling='no' width='580' height='300'></IFRAME>");

    setTimeout(
    "setValue();",1000);

    </script>
        經過一夜奮戰,以及對于問題的研究。終于找到解決方法了,步驟如下:
        1、講content的內容進行Html編譯,Server.HTMLEncode(content)
        2、第二個問題將隱藏的文本框改成文本域,就可以了
    posted @ 2007-11-08 23:59 Dong 閱讀(951) | 評論 (2)編輯 收藏
    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: 91嫩草亚洲精品| 国产精品亚洲精品日韩已方| 久久综合图区亚洲综合图区| 免费一级全黄少妇性色生活片 | 在线观看免费亚洲| 国产成人精品日本亚洲专一区| 久久精品免费一区二区| 亚洲校园春色小说| 国产人在线成免费视频| 亚洲妇女熟BBW| 四虎永久在线精品免费影视| 亚洲AV成人片无码网站| 又色又污又黄无遮挡的免费视| 男男gay做爽爽免费视频| 免费国产美女爽到喷出水来视频| 青青草国产免费国产是公开| 国产综合精品久久亚洲| 久久久久国产精品免费免费不卡| 久久综合亚洲鲁鲁五月天| 成视频年人黄网站免费视频| 亚洲综合久久精品无码色欲| 午夜国产羞羞视频免费网站| 国产精品免费看久久久香蕉| 中文字幕不卡亚洲| 99国产精品免费视频观看| 亚洲区视频在线观看| 日韩免费视频一区| 免费无码又爽又刺激网站直播| 亚洲精品视频在线播放| 香蕉视频在线观看免费国产婷婷| 无码的免费不卡毛片视频| 亚洲AV日韩AV永久无码绿巨人 | 搜日本一区二区三区免费高清视频 | 亚洲成AV人片在线观看无码| 一级毛片全部免费播放| 国产精品亚洲综合久久| 久久久久亚洲AV综合波多野结衣 | 自拍偷自拍亚洲精品被多人伦好爽| 花蝴蝶免费视频在线观看高清版| 亚洲伊人精品综合在合线| 亚洲精品动漫人成3d在线|