練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術
關於JSP的問題 RSS feed
Forum Index » JWorld@TW緊急避難所
Author Message
player

十級學員

Joined: 2009/8/14
Messages: 2
Offline
我在試 JSP 輸出 JSON, 想接JQuery 的自動完成的外掛
可是
似乎WebLogic Server 7.0 被我弄到當掉了
因為我這邊的主機上的JSP是跑 JavaSE 1.4 所以要倒著回去用舊版的Java語法去寫, 有點小難

com.data.toolkit.SafeSql 與 com.data.toolkit.JsonUtil 算是自己改寫過的心得吧?
公布如下
http://www.player.idv.tw/prog/index.php/JsonUtil.java
http://www.player.idv.tw/prog/index.php/SafeSql.java
編譯好成 class檔後, 放到 \WEB-INF\classes\com\data\toolkit\ 目錄中

最後的實驗品是 AutoComplete.jsp
輸入 name 與 q 當傳入參數
自Oracle中取出幾個字串後
以JSON方式傳回

<%@ page contentType="application/json; charset=big5" %>
<%@ /*業務機密, 這行page import 略 */ %>
<%@ page import="java.sql.*, java.util.*, java.lang.*" %>
<%@ page import="com.data.toolkit.SafeSql, com.data.toolkit.JsonUtil" %>
<%
	String strName = request.getParameter("name");
	String strQ = request.getParameter("q");
	
	if (strQ != null)
	{
		//業務機密, 取得Oracle資料庫連線方式的這行略 qub=?

		StringBuffer sql = new StringBuffer();
		String strKeyName = "";
	
		//需求編號, reqNoQ
		if (strName == "reqNoQ")
		{
			strKeyName = "reqno";
		}
		
		if (strKeyName != "")
		{
			sql.append("select * from ( ");
				sql.append("select distinct ");
				sql.append(strKeyName);
				sql.append(" from tb_request where ");
				sql.append(strKeyName);
				sql.append(" like ");
				sql.append(SafeSql.QuoteLikeRight(strQ));
				sql.append(" order by ");
				sql.append(strKeyName);
			sql.append(" ) where ROWNUM >= 0 AND ROWNUM <= 20");
		

			ArrayList v = qub.executeQuery(sql.toString());
			StringBuffer responseText = new StringBuffer();
		
			responseText.append('[');
		
			if (!v.isEmpty()) 
			{
				boolean IsComma = false;
			
				for(int i=0;i<v.size();i++) 
				{
					HashMap hm = (HashMap)v.get(i);
					if (hm.containsKey(strKeyName))
					{
						if (IsComma == true) {
							responseText.append(',');
							IsComma = true;
						}
						responseText.append(JsonUtil.string2Json(hm.get(strKeyName)));
					}
				}
			}
			responseText.append(']');

			response.getWriter().print(responseText.toString());
		}
		else
		{
			response.getWriter().print("[]");
		}
	}
%>


此外
關於 http://kekeke.cc/twjug
不知為何
要貼任何字都貼不上了
天曉得是哪邊擋到了?
player

十級學員

Joined: 2009/8/14
Messages: 2
Offline
果然寫錯了
耗呆中? orz

1.字串比較的方式錯了
2.class未公開的成員函數, 不能直接用

總算應該差不多了?

<%@ page contentType="application/json; charset=big5" %>
<%@ /*業務機密, 這行page import 略 */ %>
<%@ page import="java.sql.*, java.util.*, java.lang.*" %>
<%@ page import="com.data.toolkit.SafeSql, com.data.toolkit.JsonUtil" %>
<%
	String strName = request.getParameter("name");
	String strQ = request.getParameter("q");
	boolean IsOutput = false;
	
	if (strQ != null)
	{
		//業務機密, 取得Oracle資料庫連線方式的這行略 qub=?

		StringBuffer sql = new StringBuffer();
		String strKeyName = "";
	
	
		//需求編號, reqNoQ
		if (strName.compareToIgnoreCase("reqNoQ") == 0)
		{
			strKeyName = "reqno";
		}
		
		if (strKeyName != "")
		{
			sql.append("select * from ( ");
				sql.append("select distinct ");
				sql.append(strKeyName);
				sql.append(" from tb_request where ");
				sql.append(strKeyName);
				sql.append(" like ");
				sql.append(SafeSql.QuoteLikeRight(strQ));
				sql.append(" order by ");
				sql.append(strKeyName);
			sql.append(" ) where ROWNUM >= 0 AND ROWNUM <= 20");
		

		//	ArrayList v = qub.executeQuery(sql.toString());
		//  測試用
			ArrayList v = new ArrayList();
			HashMap hm2 = new HashMap();
			hm2.put("reqno", sql.toString());
			v.add(hm2);
		
			StringBuffer responseText = new StringBuffer();
		
			responseText.append('[');
		
			if (!v.isEmpty()) 
			{
				boolean IsComma = false;
			
				for(int i=0;i<v.size();i++) 
				{
					HashMap hm = (HashMap)v.get(i);
					if (hm.containsKey(strKeyName))
					{
						if (IsComma == true) {
							responseText.append(',');
							IsComma = true;
						}
						responseText.append(JsonUtil.toJson(hm.get(strKeyName)));
					}
				}
			}
			responseText.append(']');

			IsOutput = true;
			response.getWriter().print(responseText.toString());
		}
	}
	
	if (IsOutput == false)
	{
		response.getWriter().print("[]");
	}
%>
 
Forum Index » JWorld@TW緊急避難所
Go to:   
Mobile view