-1

私はpost method to servletサーブレットがリクエストを別のページに転送した後にウェブページを返すので、
getServletContext().getRequestDispatcher("/AnotherServlet").forward(request, response);
直接リダイレクトすることはできませんwindow.location ="/Anotherservlet"
。多くの解決策を試し
ましvar w = window.open(); w.document.write(data);た。しかし、ページのURLはまだ私のホームページであり、ページがサーバーからダウンロードされてもページはまだロードされているため(readyステートメントを含むすべての機能が機能していません)、href = "#"のボタンをクリックするとホームページにリダイレクトされます。 URL =/ not =/anotherservletの前に言った
ように、それを行うメソッドやCookieを取得するのは好きではありません。他の解決策を探し
ます。これが私のサーブレットです:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    String name= request.getParameter("name");
    String pass=request.getParameter("pass");

     if (name.equals("a")&&pass.equals("0cc175b9c0f1b6a831c399e269772661"))
    {
    getServletContext().getRequestDispatcher("/BookListServlet").forward(request, response);
    }
    else 
    {
     response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.print("error");
        out.flush();
        out.close();
    }

}


これは私の BookListServlet です:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    books= new bookiml().get_books();   
    String name= request.getParameter("name");
    String ipAddress = request.getRemoteAddr();

request.setAttribute("books", books);
request.setAttribute("userip", ipAddress);
request.setAttribute("user", name);
request.setAttribute("title", "Book listing");

getServletContext().getRequestDispatcher("/META-INF/pages/book-list.jsp").forward(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}

ログイン認証を確認した後、サーブレットからページを取得したくありませんが、そのようなリンクでパラメーターを渡さずにはなりません:`

$.ajax({
                    url: 'identification',
                    type: 'POST',
                    data:{pass:$hash,name:$name},
                    timeout: 1000,
                    success: function(data){
                     var target = document.getElementById('spinner');
                                    spinner = new Spinner(opts).spin(target);
                                    $('#spinner').fadeIn();

                                    if (data=='error')
                                    {
                                    $("#messages").html(" Check your username and password.");
                                    $('#name').css('border-color','#B94A48');
                                    $('#pass').css('border-color','#B94A48');
                                    $('#spinner').fadeOut();
                                    }

                                    else 

                                        {
                                        $("#messages").html("");


            $('#spinner').fadeOut();
                                    window.location ="/BookListServlet?name="+$name;
                                    }


                }
            });`
4

2 に答える 2

0

servlet私が理解したように、あなたは単に?を使用してリダイレクトしたいだけです.

response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "http://splinky.com/");
于 2012-08-11T15:16:03.113 に答える
0

成功した場合にリダイレクトしたい ajax 応答に URL を入れることができます。

js 応答の例:

{ status: 'ok', redirect: '/example' }

そしてクライアント側のjsでリダイレクトします。

クライアント側のコード:

$("form.ajaxForm").submit( function(e) {
        var form = $(this);
        form.ajaxSubmit({
            dataType: 'json',
            success: function(data) {
                if( data.redirect != "" ) {
                    window.location = data.redirect;
                }
            }
        });

        return false;
    });

これを機能させるには、jQuery フォーム プラグインを使用する必要があります。参照: http://jquery.malsup.com/form/#getting-started

于 2012-08-11T15:19:31.703 に答える