2013-08-29 20 views
-1

我創造了jsp.I JSP應用程序正在試圖重定向到Ajax請求登錄頁面,如果用戶沒有登錄。 我的做法訪問服務器端文本在阿賈克斯jQuery的

  1. 請求被髮送從傳遞一些參數的JavaScript到 url.The服務器端代碼檢查是用戶是否登錄。
  2. 服務器端代碼中有網址

我在哪裏卡住是我這個文本的客戶端從服務器的JavaScript通過,這樣我可以使用類似窗口問題構建標識的功能。 location.href = URL;

任何人都可以請解釋我如何傳遞這個url並在ajax成功函數的回調函數中訪問它。

有沒有其他辦法?..

回答

0

檢查用戶登錄也許應該由你的JSP代碼處理。

通過這種方式,您可以在頁面呈現之前發送重定向標頭,而不必等到重定向用戶之前返回ajax響應。使用ajax意味着他們會在重定向它們之前看到他們無法訪問的頁面。

0

有很多方法可以處理ajax請求。最簡單的方法(不一定最好)是創建一個servlet來處理你的ajax請求。下面的servlet實例將返回JSON字符串{ status: 'not logged in'}

package mycompany; 

public CheckLoginServlet extends HttpServlet { 
    protected doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
    res.setContentType("application/json"); 

    HttpSession session = req.getSession(); 
    // do your stuff to check if user logged in here .. 

    PrintWriter writer = res.getWriter(); 
    writer.append("{ status: 'not logged in' }"); 
    } 
} 

聲明對你的web.xml部署描述符文件&地圖這個servlet:

<web-app> 
    <servlet> 
    <servlet-class>mycompany.CheckLoginServlet</servlet-class> 
    <servlet-name>CheckLoginServlet</servlet-name> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>CheckLoginServlet</servlet-name> 
    <url-pattern>/checklogin</url-pattern> 
    </servlet-mapping> 
</web-app> 

該servlet現在映射到http://myhost/myappname/checklogin。然後,您可以通過jQuery AJAX發送POST請求到這個servlet:

$.ajax('checklogin', { 
    type: 'POST' 
}).done(function(res) { 
    console.log(res.status); // will give you 'not logged in' 
}); 

這種做法是ofcourse一個古老和過時的做法,但它是很好的爲你的servlet理解基礎知識。如果您正在構建真實企業應用程序,請考慮使用Web框架,如SpringJSF

0

您可以將響應中的用戶狀態和登錄URL作爲JSON發送。讓我們爲您的迴應創建一個模型。

public class Result { 

    private boolean status; 
    private String url; 

    Result() { 
    } 

    Result(boolean status, String url) { 
     this.status = status; 
     this.url = url; 
    } 

    // getters and setters 

    } 

現在,在您檢查用戶狀態並構建登錄網址的操作中,初始化您的模型。

Result res = new Result(status, url); 

現在我們需要發送這個模型作爲json響應。有很多方法可以做到,但我將使用Google GSON將模型序列化爲json字符串。

private String result; 

public void getResult() { 
return this.result; 
} 

public void setResult(Stringresult) { 
this.result = result; 
} 

Gson gson = new Gson(); 
result= gson.toJson(res); 
==> json is {"status": true,"url":"www.example.com"} 

最後一部分是檢查客戶端的響應並採取相應的措施。

$.ajax({ 
    // ... 
    success: function(response) { 
     var responseJson = JSON.parse (response.responseText); 
     if (!responseJson.status) { 
      window.location.href = responseJson.url; 
     } 
    } 
}); 

參考文獻:https://sites.google.com/site/gson/gson-user-guide