session之URL重寫

session依賴Cookie,這是因爲服務器需要把sessionId保存到客戶端瀏覽器。如果用戶的瀏覽器關閉了Cookie功能,那麼session就不能使用了!

可以在瀏覽器關閉了Cookie後使用URL重寫的方法保存sessionId,這需要在每個URL後面都加上sessionId。這樣用戶的請求中就包含了sessionId,服務器就可以通過sessionId找到對應的session對象了。

使用response.encodeURL("請求地址")方法對URL進行編碼,這樣URL中會智能的添加sessionId。當瀏覽器支持cookie時,response.encodeURL()方法不會在URL後追加sessionId;當瀏覽器不支持cookie時,response.encodeURL()方法會在URL後追加sessionId。

jsp頁面中可以這麼寫:

<%
// 它會查看cookie是否存在,如果不存在,在指定的url後添加jsessionid參數
// 如果cookie存在,它就不會再url後添加任何東西
response.encodeURL("請求地址");
%>

或在Servlet中這麼寫:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet
{
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
    
        HttpSession session  = req.getSession();
        //下面請求重定向的路徑。
        String path = resp.encodeRedirectURL( "/world" );
        
        System.out.println( "jsessionId是:" + req.getSession().getId() );
    
    
        String sessionId = req.getSession().getId();
        
        req.setAttribute( "sessionId",sessionId );
        
        
                resp.sendRedirect( path );
        
    }
    
}

代碼引用地址:點擊打開鏈接


找到的另外一篇比較好的博客:點擊打開鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章