关于禁用cookie后,session的url重写

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class SessionTest extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			
		String name = request.getParameter("username");
		String password = request.getParameter("password");
		
		HttpSession session = request.getSession();
//		Cookie cookie = new Cookie("JSESSIONID", session.getId());
//		cookie.setMaxAge(50000);
//		response.addCookie(cookie);
		
		session.setAttribute("username", "name");
//url重写前,必须要有request.getSession(),不然不会再超链接后带上JSESSIONID。
		String url = response.encodeRedirectURL("/SessionTest/servlet/Test");
		response.sendRedirect(url);
		
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			
		doGet(request,response);
	}

}


实验演示禁用Cookie后servlet共享数据导致的问题。
解决方案:URL重写
response. encodeRedirectURL(java.lang.String url)
用于对sendRedirect方法后的url地址进行重写。
response. encodeURL(java.lang.String url)
用于对表单action和超链接的url地址进行重写
附加:
Session的失效
Web.xml文件配置session失效时间


 //下面是response. encodeURL(java.lang.String url)
用于对表单action和超链接的url地址进行重写

//网站首页,显示网站所有商品
public class ListBookServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  request.getSession();
  
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.write("本网站有如下书:<br/><br/>");
  //向用户展示网站所有的商品
  Map<String,Book> map = Db.getBooks();
  for(Map.Entry<String, Book> me : map.entrySet()){
   Book book = me.getValue();
   String url = response.encodeURL("/day07/servlet/BuyBookServlet?bookid="+book.getId());
   out.println(book.getName() + "   <a href='"+url+"' target='_blank'>购买</a>");
   out.println("<br/>");
  }
 }

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

  doGet(request, response);
 }
}


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值