日期:2014-05-16  浏览次数:20433 次

关于jsp页面弹出窗口的总结
方法一:

Login.Jsp代码
1. <s:form action="testty.action" method="post">
2. <table>
3. <tr>
4. <td>test</td><td><s:textfield name="username"/><label id="loginMessage"></label></td>
5. </tr>
6. <tr>
7. <s:submit value="submit" onclick=" submitLogin ();"/>
8. </tr>
9. </table>
    
10. </s:form>


submitLogin ()的js代码
1. function submitLogin ()
2. {
3. //testty.action为跳到action中处理(如果不需要到action中进行处理,可以直接写成main.jsp页面),返回页面以窗口方式显示
4. window.open("testty.action","ipmsWindow","toolbar=no,menubar=0,scrollbar=no,location=no,status=no,resizable=yes,directories=no");
5. //实现父窗口关闭,常用登录到主页面时,关闭login窗口
6. var w = window.open('','_self');
7. w.opener = null;
8. w.close();
9. }

总结:方法一,虽然可以实现到action中进行处理,但是仅仅适合查找,因为在action处理过程中如果发生了异常,在login页面就不能实现友好的提示。于是可以采用方法二:ajax实现。


方法二:
 
Login.Jsp代码
1. <s:form action="testty.action" method="post">
2. <table>
3. <tr>
4. <td>test</td><td><s:textfield name="username"/><label id="loginMessage"></label></td>
5. </tr>
6. <tr>
7. <s:submit value="submit" onclick="submitLogin ();"/>
8. </tr>
9. </table>
    
10. </s:form>
 
submitLogin ()的js代码
1. function submitLogin(){
2. if(true){
3. $.ajax({
4. type:"POST",
5. url:"testty.action",
6. data:"loginName="+""+"&password="+"",
7. async:false,
8. success:function(resMsg){
9. if("0"==resMsg){
10. window.open("fileUpload.jsp","ipmsWindow","toolbar=no,menubar=0,scrollbar=no,location=no,status=no,resizable=yes,directories=no");
11. var w = window.open('','_self');
12. w.opener = null;
13. w.close();
14. }
15. else if("1"==resMsg){
16. $("#loginMessage").text("用户名或密码输入有误,请重新登录!");
17. }
18. else{
19. $("#loginMessage").text(resMsg);
20. }
21. },
22. error:function(){
23. $("#loginMessage").text("系统异常!");
24. }
25. });

26. }

27. return false;
28. }
注:关于resMsg的值,后台是这么输出的:
PrintWriter pw = null;
        try
        {
            pw = ServletActionContext.getResponse().getWriter();
            pw.print("0");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        System.out.println("test");
        //return SUCCESS;
        return null;