Posted on 2006-01-12 00:09
JavaXP 阅读(1725)
评论(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里面扔东西。请高人指导一下!