在jsp中,如果需要處理復雜數據時,在上方定義一個java方法是很有效的解決方案,把處理數據的責任推給該方法,然後該jsp頁面的主流程就不受影響。當然也可以使用js定義方法來處理,js似乎更善於定義這樣的方法來處理前台數據,但有時候jsp和js之間倒騰數據時會出亂碼或者報一些找不到對象的錯誤,因此他們之間的互相傳值還是越少越好。 看一看jsp中定義一個字符串處理的方法: [java] <%! String splitString(String str, int a) { if (str != null && str.trim().length() > 0 && a > 0) { // 取得該字符串的字節長度 int length = str.getBytes().length; // 全部不包括漢字 if (str.length() == length) { // 如果截取長度是字符串長度以內,就substring,否則就取這個字符串 if (a < str.length()) { return str.substring(0, a); } else { return str; } } // 含有漢字 else { StringBuffer sb = new StringBuffer(); // 截取算法 遍歷字符串,並且監測a值 for (int i = 0; i < str.length() && a > 0; i++) { // 如果是漢字算2個長度。 if (str.charAt(i) >= '\u4e00' && str.charAt(i) <= '\u9fa5') { // 如果是漢字且不是最後一個字符,就加上,否則不加 if (a > 1) { sb.append(str.charAt(i)); a -= 2; } // 不是漢字只算一個長度 } else { sb.append(str.charAt(i)); a--; } } return sb.toString(); } } return "輸入有誤"; } %> 該方法的功能是,傳入一個字符串和長度,返回截取後的字符串,長度會按照漢字兩個、字母數字一個的方式來統計,如果最後一個是漢字,那麼這個漢字就放棄掉,絕不能出現半個漢字的情況。 jsp中定義方法,需要注意以下幾點: 1,需要使用<%! %>這樣的標簽包起來,這是jsp中定義變量或者方法的標志。 2,如果在方法中需要使用內置對象out時,一定要在方法的參數列表中傳過來,並且要讓方法跑出一個IO異常。 3,方法的范圍就不要定義了,反正就是內部使用,直接使用缺省范圍的就可以了。