【问题标题】:JOptionpane is showing on server machine onlyJOptionpane 仅在服务器机器上显示
【发布时间】:2013-09-05 07:42:28
【问题描述】:
JOptionPane.showMessageDialog(null, "User Account already Exist !!", "Signup", JOptionPane.ERROR_MESSAGE);
response.sendRedirect("http://localhost:8084/app/index.html");

我在servlet中写了上面的代码。

第一个问题:

我在本地机器上得到对话框,但是在对话框之后,页面没有重定向到index.html。我的意思是它保持在同一个屏幕上。

第二个问题:

当我尝试使用像http://xxx.xxx.xxx.xxx:8084/app/index.html 这样的 IP 地址从不同的机器访问我的应用程序时。在这种情况下,对话框显示在服务器机器上而不是在客户端机器上。

请帮我解决这些问题。另外,对话框总是显示在浏览器后面,有什么办法可以显示在浏览器前面的屏幕上?

【问题讨论】:

    标签: java swing servlets response joptionpane


    【解决方案1】:

    这是因为您使用的是独立的 Swing JdialogBox,不能在 Web 应用程序上使用。 如果您需要为客户端显示任何对话框,那么最好使用如下所示的 Javascript 警报

    function x()
    {
    alert("user account already exists");
    }
    

    看看 javascript 警报是如何工作的

    link

    【讨论】:

    • “这是因为您使用的是独立的 Swing JdialogBox,不能在 Web 应用程序上使用” 技术上不正确,但仍然是一个公平的观点 ;)
    • @MadProgrammer 我可以知道为什么它在技术上不正确。
    • Applets ;) 是的,我知道 OP 正在通过一个 servlet 运行,但是您的概括 ;)
    【解决方案2】:

    您不能在Servlet. 中使用Java Swing 组件

    相反,您可以显示Javascript Alert

    //servlet code
    PrintWriter out = response.getWriter();  
    response.setContentType("text/html");  
    out.println("<script type=\"text/javascript\">");  
    out.println("alert('User Account already Exist !!');");  
    out.println("</script>");
    

    编辑(我自己试过,效果很好)

    我的小服务程序

    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class JavaScriptAlertServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public JavaScriptAlertServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            PrintWriter out = response.getWriter();
            response.setContentType("text/html");
            out.println("<script type=\"text/javascript\">");
            out.println("alert('User Account already Exist !!');");
            out.println("</script>");
        }
    
    }
    

    【讨论】:

    • 这应该可以。使用 Firebug 调试,看看是否有任何 Javascript 错误。
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多