08-08
04
请教一个js访問Action的問趧
作者:Java伴侣 日期:2008-08-04
需求:网站中每一个用户都有自己的信箱,在用户没有操作的情况下,该用户如果收到了其他用户发来的邮件,该邮件便会自动打开一个窗口来显示器内容。
我的想法是这樣:做一个页面,这个页面被打开之后是静止的,里面Js的代码每隔半分钟去调用一次Action,Action中来判断是否有了新的邮件,如果出现新邮件则在Session里面存储一个值,页面在Js在循环的时候,如果该值为非空的时候则打开一个姒该值为地址的新窗口,窗口中来显示新邮件的内容。
Action里面
JSP里面的Javascript
引用了prototype1.4.js
我的想法是这樣:做一个页面,这个页面被打开之后是静止的,里面Js的代码每隔半分钟去调用一次Action,Action中来判断是否有了新的邮件,如果出现新邮件则在Session里面存储一个值,页面在Js在循环的时候,如果该值为非空的时候则打开一个姒该值为地址的新窗口,窗口中来显示新邮件的内容。
Action里面
复制内容到剪贴板 程序代码
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
MessageForm messageForm = (MessageForm)form;
UserBean userBean = (UserBean)request.getSession().getAttribute("userBean");//得到用户信息的JavaBean
List list = ims.ifMessage(Integer.parseInt(userBean.getUser_dwid()));//这个方法为显示状态为未读的信息列表;
//如果有信息,则输出信息的id号;否则则输出0
if(list.size()>0){
DccMessage dccMessage = (DccMessage)list.get(0);
out.print(dccMessage.getId());
}else{
out.print("0");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
MessageForm messageForm = (MessageForm)form;
UserBean userBean = (UserBean)request.getSession().getAttribute("userBean");//得到用户信息的JavaBean
List list = ims.ifMessage(Integer.parseInt(userBean.getUser_dwid()));//这个方法为显示状态为未读的信息列表;
//如果有信息,则输出信息的id号;否则则输出0
if(list.size()>0){
DccMessage dccMessage = (DccMessage)list.get(0);
out.print(dccMessage.getId());
}else{
out.print("0");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
JSP里面的Javascript
引用了prototype1.4.js
复制内容到剪贴板 程序代码
<script type="text/javascript">
setInterval("showMessage()", 30000);//每隔30秒执行一次
//定义Ajax
function showMessage(){
new Ajax.Request("/DCCCZXT/message/ifMessageAction.do",{method:'get',onComplete:po});
}
//如果接收到Action里面out出来的值为非0的情况下,则打开该新消息的窗口
function po(res){
var a=res.responseText
if(a!=0){
window.open("/DCCCZXT/message/openMessageAction.do?id="+res.responseText,"","width=320,height=400");
}
}
</script>
setInterval("showMessage()", 30000);//每隔30秒执行一次
//定义Ajax
function showMessage(){
new Ajax.Request("/DCCCZXT/message/ifMessageAction.do",{method:'get',onComplete:po});
}
//如果接收到Action里面out出来的值为非0的情况下,则打开该新消息的窗口
function po(res){
var a=res.responseText
if(a!=0){
window.open("/DCCCZXT/message/openMessageAction.do?id="+res.responseText,"","width=320,height=400");
}
}
</script>
评论: 0 | 引用: 0 | 查看次数: 815
发表评论