亚洲国产精品免费观看,亚洲精品成人a在线观看,精品亚洲综合在线第一区http://m.tkk7.com/georgehill/category/1287.html希望能和您交流Java編程的知識和見解zh-cnWed, 28 Feb 2007 00:32:37 GMTWed, 28 Feb 2007 00:32:37 GMT60用URLEncoder輸出<bean:write /&gt的值(struts1.1版)http://m.tkk7.com/georgehill/archive/2005/05/20/4988.html小米小米Fri, 20 May 2005 03:52:00 GMThttp://m.tkk7.com/georgehill/archive/2005/05/20/4988.htmlhttp://m.tkk7.com/georgehill/comments/4988.htmlhttp://m.tkk7.com/georgehill/archive/2005/05/20/4988.html#Feedback0http://m.tkk7.com/georgehill/comments/commentRss/4988.htmlhttp://m.tkk7.com/georgehill/services/trackbacks/4988.html      從struts的網站上下載1.1的源代碼:http://apache.justdn.org/jakarta/struts/source/jakarta-struts-1.1-src.zip,解壓到本地目錄。打開文件jakarta-struts-1.1-src\src\share\org\apache\struts\taglib\bean\WriteTag.java,新增一個布爾屬性encode,表示是否需要用UTF-8編碼輸出字符串。代碼片斷如下:

    /**
     * The encode flag for the value.
     * Added by George Hill, 05/19/2005
     
*/

    
protected boolean encode = false;
    
    
public boolean isEncode() {
        
return (this.encode);
    }

    
    
public void setEncode(boolean encode) {
        
this.encode = encode;
    }

      修改方法formatValue,把這段:


        
// Return String object as is.
        if ( value instanceof java.lang.String ) {
                
return (String)value;
        }
 else {

        }


      替換成:


        
// Return String object as is.
        if ( value instanceof java.lang.String ) {
            
if (encode)
                
return RequestUtils.encodeURL((String)value);
            
else
                
return (String)value;
        }
 else {

        }


      保存修改后的文件。然后需要修改文件jakarta-struts-1.1-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:


    
<attribute>
      
<name>encode</name>
      
<required>false</required>
      
<rtexprvalue>true</rtexprvalue>
      
<info>
      
<p>Added by George Hill, specifies the value need UTF-8 encode or not.</p>
      
</info>
      
<default>false</default>
    
</attribute>

      然后修改一下ant的編譯配置文件build.xml,這一部分和上一篇的隨筆類似,請參考上篇隨筆:<<用URLEncoder輸出<bean:write />的值>>
      運行ant,編譯后的jar文件保存在jakarta-struts-1.1-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。

小米 2005-05-20 11:52 發表評論
]]>
用URLEncoder輸出&lt;bean:write /&gt的值http://m.tkk7.com/georgehill/archive/2005/05/20/4966.html小米小米Thu, 19 May 2005 16:50:00 GMThttp://m.tkk7.com/georgehill/archive/2005/05/20/4966.htmlhttp://m.tkk7.com/georgehill/comments/4966.htmlhttp://m.tkk7.com/georgehill/archive/2005/05/20/4966.html#Feedback2http://m.tkk7.com/georgehill/comments/commentRss/4966.htmlhttp://m.tkk7.com/georgehill/services/trackbacks/4966.html      <a href="foo.do?param1=<bean:write name="n1" property="p1"/>&param2=<bean:write name="n2" property="p2"/>">Test</a>
      這樣在處理多個參數時,就不需要先放到一個Collection中。按照<html:link/>的多個參數的處理方法去做,有時確實是很繁瑣。不過這樣帶來一個新的問題,在處理中文參數值時,這樣就行不通了。用request.getParameter("param1")獲取的中文,在中文的個數為奇數個時,就會顯示不正確。例如“三個字”在getParameter中獲取的值是“三個?”。
      這個問題是由于<bean:write />沒有用URLEncoder的encode方法處理值,因為<bean:write />主要是用來在頁面上顯示bean的信息,并不是用在鏈接中當作參數的值。這個問題可以通過給<bean:write />增加新的屬性來解決。
      從Struts的網站上下載Struts 1.2.4的源代碼:http://apache.freelamp.com/struts/source/jakarta-struts-1.2.4-src.zip
      解壓到本地目錄,然后修改文件jakarta-struts-1.2.4-src\src\share\org\apache\struts\taglib\bean\WriteTag.java。新增一個屬性charset,表示需要用什么編碼進行編碼。代碼片斷如下:

    /**
     * Added by George Hill, the string value charset to encoding.
     * 05/19/2005
     
*/

    
protected String charset = null;

    
public String getCharset() {
        
return (this.charset);
    }


    
public void setCharset(String charset) {
        
this.charset = charset;
    }

      修改方法formatValue,把這段


        
if (value instanceof java.lang.String) {
                
return (String) value;
        }
 else {

        }


      替換為:


        
if (value instanceof java.lang.String) {
            
if (charset != null && charset.length() != 0)
                
return TagUtils.getInstance().encodeURL((String) value, charset);
            
else
                
return (String) value;
        }
 else {

        }


      保存修改后的文件。然后需要修改文件jakarta-struts-1.2.4-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:


  
<tag>
    
<name>write</name>

    
<attribute>
      
<name>charset</name>
      
<required>false</required>
      
<rtexprvalue>true</rtexprvalue>
      
<info>
      
<p>Added by George Hill, use this charset to encoding the value.</p>
      
</info>
    
</attribute>

  
</tag>

      然后修改一下ant的編譯配置文件build.xml,有幾個部分需要修改:
      1.屬性catalina.home需要修改成你安裝的tomcat的目錄;
      2.compile.classpath需要修改,把jar文件的路徑指向正確;
      3.prepare.library taget部分的copy,把相關的jar文件的路徑指向正確。
      運行ant,編譯后的jar文件保存在jakarta-struts-1.2.4-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。如果不寫charset屬性,那么和原來的<bean:write />處理是一樣的。
      這樣,類似于下面的鏈接地址:
      <a href="foo.do?param1=<bean:write name="n1" property="p1"/>&param2=<bean:write name="n2" property="p2"/>">Test</a>
      就可以修改成:
      <a href="foo.do?param1=<bean:write name="n1" property="p1" charset="UTF-8"/>&param2=<bean:write name="n2" property="p2" charset="UTF-8"/>">Test</a>
      在request.getParameter("param1")中將會獲得正確的中文值。
      對于struts 1.1,程序又稍微有些不同。我將在下一篇隨筆中介紹。


小米 2005-05-20 00:50 發表評論
]]>
Struts的國際化完整解決方案http://m.tkk7.com/georgehill/archive/2005/05/13/4263.html小米小米Fri, 13 May 2005 06:26:00 GMThttp://m.tkk7.com/georgehill/archive/2005/05/13/4263.htmlhttp://m.tkk7.com/georgehill/comments/4263.htmlhttp://m.tkk7.com/georgehill/archive/2005/05/13/4263.html#Feedback11http://m.tkk7.com/georgehill/comments/commentRss/4263.htmlhttp://m.tkk7.com/georgehill/services/trackbacks/4263.html      在網上有很多有關Struts的中文解決方案,但是很多都說得很零碎,不夠完整。下面是我的一個完整解決方案。
      要使網頁能夠真正實現多語言,有三個地方都需要修改:
      1.在頁面部分,一定要把頁面的編碼設成UTF-8,就是在開頭加上這一句:<%@ page contentType="text/html; charset=UTF-8" %>。并且把所有的文字信息都放到resource文件中。
      以前我在寫網頁的時候,沒有指定頁面的編碼,總是在獲取表單的內容后,要人工的用new String(s.getBytes("ISO8859-1"))轉換一下,這樣是很繁瑣的,而且很容易出錯。網頁中如果沒有指定編碼,那么默認的就是用ISO8859-1編碼的。
      2.相應的資源文件需要用native2ascii轉換一下。
      對于簡體中文的資源文件:native2ascii -encoding gbk ApplicationResources_zh.properties convert\ApplicationResources_zh.properties
      對于繁體中文的資源文件:native2ascii -encoding big5 ApplicationResources_zh_tw.properties convert\ApplicationResources_zh_tw.properties

      3.需要用一個filter設置一下request的編碼,我的代碼如下:

 1import java.io.*;
 2import java.util.*;
 3import javax.servlet.*;
 4import javax.servlet.http.*;
 5
 6/**
 7 * <p>Title: </p>
 8 * <p>Description: </p>
 9 * <p>Copyright: Copyright (c) 2003</p>
10 * <p>Company: </p>
11 * @author George Hill
12 * @version 1.0
13 */

14
15public class CharsetFilter implements Filter {
16
17  private FilterConfig filterConfig;
18
19  /**
20   * Request設置的Charset encoding
21   */

22  private String encoding;
23
24  /**
25   * 是否忽略設置Request的Charset encoding
26   */

27  private boolean ignore;
28
29  //Handle the passed-in FilterConfig
30  public void init(FilterConfig filterConfig) {
31    this.filterConfig = filterConfig;
32
33    encoding = filterConfig.getInitParameter("encoding");
34    String value = filterConfig.getInitParameter("ignore");
35    if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value)
36        || "on".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value)) {
37      ignore = true;
38    }

39  }

40
41  //Process the request/response pair
42  public void doFilter(ServletRequest request, ServletResponse response,
43                       FilterChain chain) throws IOException, ServletException {
44    if (!ignore) {
45      request.setCharacterEncoding(encoding);
46    }

47
48    chain.doFilter(request, response);
49  }

50
51  //Clean up resources
52  public void destroy() {
53    this.filterConfig = null;
54  }

55}

56

      web.xml的相關片斷如下:

 1  <filter>
 2    <filter-name>charsetfilter</filter-name>
 3    <filter-class>xxx.CharsetFilter</filter-class>
 4    <init-param>
 5      <param-name>encoding</param-name>
 6      <param-value>UTF-8</param-value>
 7    </init-param>
 8    <init-param>
 9      <param-name>ignore</param-name>
10      <param-value>false</param-value>
11    </init-param>
12  </filter>
13  <filter-mapping>
14    <filter-name>charsetfilter</filter-name>
15    <url-pattern>/*</url-pattern>
16  </filter-mapping>

      這樣,在Action中處理表達的內容時,就不需要再做轉換;而且在Action中處理數據給頁面顯示時,也不需要做轉換。在頁面中可以同時顯示簡體和繁體的內容,不需要去設置IE的編碼。
      另外需要說明的就是如果數據庫也支持編碼的話,最好也是設成UTF-8編碼,這樣才能夠完整的解決多語言的問題。例如MySQL 4.1以上的版本可以設置編碼成utf8,在JDBC的URL中可以指定編碼為UTF-8。

小米 2005-05-13 14:26 發表評論
]]>
如何在Struts中實現分頁顯示數據(2)http://m.tkk7.com/georgehill/archive/2005/05/13/4254.html小米小米Fri, 13 May 2005 03:33:00 GMThttp://m.tkk7.com/georgehill/archive/2005/05/13/4254.htmlhttp://m.tkk7.com/georgehill/comments/4254.htmlhttp://m.tkk7.com/georgehill/archive/2005/05/13/4254.html#Feedback20http://m.tkk7.com/georgehill/comments/commentRss/4254.htmlhttp://m.tkk7.com/georgehill/services/trackbacks/4254.html閱讀全文

小米 2005-05-13 11:33 發表評論
]]>
如何在Struts中實現分頁顯示數據(1)http://m.tkk7.com/georgehill/archive/2005/05/13/4252.html小米小米Fri, 13 May 2005 03:18:00 GMThttp://m.tkk7.com/georgehill/archive/2005/05/13/4252.htmlhttp://m.tkk7.com/georgehill/comments/4252.htmlhttp://m.tkk7.com/georgehill/archive/2005/05/13/4252.html#Feedback0http://m.tkk7.com/georgehill/comments/commentRss/4252.htmlhttp://m.tkk7.com/georgehill/services/trackbacks/4252.html閱讀全文

小米 2005-05-13 11:18 發表評論
]]>
主站蜘蛛池模板: 免费爱爱的视频太爽了| 最近2019中文字幕免费直播| 永久免费毛片手机版在线看| 亚洲粉嫩美白在线| 色吊丝永久在线观看最新免费| 亚洲精品无码久久久久APP| 女人让男人免费桶爽30分钟| 亚洲日韩久久综合中文字幕| 国产免费看插插插视频| 新最免费影视大全在线播放| 国产午夜亚洲精品理论片不卡| 国产一级黄片儿免费看| 亚洲AV无码久久精品蜜桃| 3344永久在线观看视频免费首页| 亚洲码一区二区三区| 免费激情视频网站| yellow免费网站| 亚洲国产精品久久| 最近最新MV在线观看免费高清| 亚洲av永久无码精品网址| 亚洲午夜无码片在线观看影院猛| 东北美女野外bbwbbw免费| 久久精品国产亚洲AV电影| 毛片免费观看的视频在线| 一级做a毛片免费视频| 亚洲av无码乱码国产精品| 成人片黄网站色大片免费| 人妻免费久久久久久久了| 亚洲国产精品久久久久网站 | a级毛片毛片免费观看永久| 亚洲午夜在线电影| 日产乱码一卡二卡三免费| 久久一区二区免费播放| 亚洲喷奶水中文字幕电影| 亚洲AV永久无码精品一区二区国产| 免费一区二区三区| 国产亚洲人成在线播放| 亚洲国产第一页www| 日韩成人免费视频播放| 久久久精品免费视频| 亚洲成a人片在线不卡一二三区|