Posted on 2006-01-12 00:09
JavaXP 閱讀(1729)
評論(0) 編輯 收藏 所屬分類:
Java
AJAX應該是現在談論最多的話題,一心寫業務邏輯的我也開始動心了,因為沒有研究過于深入所以寫的都是粗制濫造的東西,兄弟們見諒了,見笑了!
我不知道自己的理解是不是正確,下面是我實現的一段代碼~
問題:XXX物資管理系統,要求計劃員登錄時選擇一個倉庫類別,還有登錄上去僅僅顯示此倉庫類別下的倉庫。
方案:1,修改登錄界面讓他可以選擇登錄身份當選的是計劃員的時候再出倉庫類別的選項。(不爽~要該的東西太多,而且登錄過于復雜,讓局長也這樣登錄我就死了!)
2,在登錄的時候去檢擦session,isHas(storageType)?正常進入:彈出窗口選擇一個再回一次登錄頁面~(改的東西不多·多加幾個方法和類)
實現:選擇第二種方法~
具體代碼片斷:
logAction:
1
if(request.getSession().getAttribute(MmisConstants.STORAGETYPE_SESSION)==null)
{
PlanManagerLoginAjax.returnResponse(request, response);
2
}else if(request.getSession().getAttribute(MmisConstants.STORAGETYPE_SESSION)!=null &&
request.getSession().getAttribute(MisConstants.USER_ATTRIBUTE)!=null)
{
4
forward = MmisConstants.FORWARD_PLAN;
5
request.getSession().setAttribute(MisConstants.MENU_NAME,
7
MmisConstants.MENU_BUSINESS_PLAN);
8
} 在這里做了判斷,如果沒有就開始產生彈出窗體的代碼:
1
public class PlanManagerLoginAjax
{
2
static Logger log = Logger.getLogger("com.kaiwang.mmis.ajax.login.PlanManagerLoginAjax");
3
private static String HTML = "',window,'dialogWidth:500px;dialogHeight:400px;dialogLeft:200px;dialogTop:100px;center:yes;help:no;resizable:no;status:no');";
4
public static void returnResponse(HttpServletRequest request, HttpServletResponse response) throws IOException
{
5
6
StringBuffer htmlString = new StringBuffer();
7
AjaxUtils.buildHtmlHead(htmlString);
8
String url = request.getContextPath() + "/storageTypePrepareAction.do?action=select";
9
htmlString.append("showModalDialog('" + url + HTML);
10
11
AjaxUtils.buildHtmlFinality(response, htmlString);
12
log.info(htmlString.toString());
13
}
14
15
public static void closeSelectWindow(HttpServletRequest request, HttpServletResponse response) throws IOException
{
16
17
StringBuffer htmlString = new StringBuffer();
18
AjaxUtils.buildHtmlHead(htmlString);
19
20
htmlString.append("window.dialogArguments.location.reload();");
21
htmlString.append("window.close();");
22
23
24
AjaxUtils.buildHtmlFinality(response, htmlString);
25
log.info(htmlString.toString());
26
}
27
}
28
我用了一個dialog來做彈出的模式,其實就是在往response里面放東西,然后IE 自己去執行,我有兩個公共的方法,分別封裝了HTML的頭和尾:
1
public static void buildHtmlFinality(HttpServletResponse response,
2
StringBuffer htmlString) throws IOException
{
3
response.setContentType("text/html;charset=gb2312");
4
htmlString.append("</script>");
5
6
PrintWriter out = response.getWriter();
7
out.println(htmlString.toString());
8
out.flush();
9
out.close();
10
}
11
12
/** *//**
13
*
14
* @param htmlString
15
* @author gary.lee
16
*/
17
public static void buildHtmlHead(StringBuffer htmlString)
{
18
htmlString.append("<script language=\"javascript\">");
19
} 這樣一個斷js就拼接出來了。
當計劃員登錄的時候就彈出窗體,強制選擇,然后刷新父窗體。
完成。
但是我不知道這樣做算不算是AJAX技術的體現,我讀了一下ajax tags的 src 它也是往response里面扔東西。請高人指導一下!