在day13的案例中,有一个清空购物车的案例。
要使得购物车清空,有一些方法:一是map=null,或map.clear();二是销毁session或移除session里的变量map。
当然,根据后面判断来综合考虑选择会更好!
遇到的问题是:在购物车的当前页面进行购物车的清空,为何是重定向,而不是转发呢?这里还是需要理清各种跳转顺序、逻辑的问题。
转发是request.getDispatcherType("url").forward(request,response);
package com.Phone;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ClearPhoneServlet
*/
public class ClearPhoneServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@SuppressWarnings("unchecked")
Map<String, Integer> map = (Map<String,Integer>)request.getSession().getAttribute("map");
map.clear();
map = null;
request.getSession().invalidate();
// request.getRequestDispatcher("/day12_self/PayPhone.jsp").forward(request, response);
response.sendRedirect("/day12_self/PayPhone.jsp");
//这里清空购物车不能用转发!!!!!!!!!!
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
1、如果你想保留request范围内的数据,那么就需要用转发,如果你不像保留request范围内的数据和请求参数,那么可以重定向.