session和jsp
1.將商品添加到購物車
點擊加入購物車提交到servlet,在servlet將購物的商品存入到session
創建一個map集合,key是商品的名稱,value是數量
代碼:
public class CartServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收商品名稱 String name = new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8"); //創建map集合用於保存購物信息 Map<String, Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart"); //如果沒有這個map就創建一個 if(map == null) { map= new LinkedHashMap<String, Integer>(); } //判斷購物車中是否已經買了該物品 if(map.containsKey(name)) { Integer count = map.get(name); count++; map.put(name, count); }else { map.put(name, 1); } //保存到session域中 request.getSession().setAttribute("cart", map); }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
2.session
session的創建:服務器第一次調用getSession()創建session
三種情況銷毀session:
1.session過期,默認過期時間為30分鐘
2.非正常關閉服務器,如果正常關閉session序列化到硬盤
3.手動調用session.invalidate
session的作用範圍:多次請求,一次會話
3.jsp
java服務器端的頁面
執行jsp:jsp翻譯成servlet,編譯這個servlet的類,生成class文件,得到執行
4.jsp的腳本
<%! %>:翻譯成servlet中的成員內容,定義變量,方法,類
<% %>:翻譯成servlet中service方法內部的內容,定義類,變量
<%= %>:翻譯成servlet中service方法中out.print();
jsp的註釋:<%--jsp的註釋--%>
5.jsp中的三個指令
language:jsp腳本中使用的語言
contentType:設置瀏覽器打開這個jsp的時候采用的默認的字符集編碼
pageEncoding:設置文件保存到本地硬盤,以及生成servlet後,servlet保存到硬盤上的編碼
import:在jsp中引入類對象,但是import可以出現多次
extends:設置jsp翻譯成servlet後繼承的類,默認值:org.apache.jasper.runtime.HttpJspBase,這個值要想修改,這個類必須是HttpServlet的子類
autoFlush:設置jsp的緩存自動刷出,true:自動刷出
buffer:設置jsp的緩沖區的大小,默認8kb
* 設置全局的錯誤友好頁面:
* 在web.xml中設置:
<error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page>
7.jsp的內置對象
* request HttpServletRequest getParameter(),setAttribute(String name,Object value);
* response HttpServletResponse setHeader(String name,String value);getOutputStream();getWriter();
* session HttpSession setAttribute();getAttribute();
* application ServletContext setAttribute();getAttribute();
* page Object toString();wait();
* pageContext PageContext setAttribute();getAttribute();
* config ServletConfig getServletName();getServletContext();
* out JspWriter write(),print();
* exception Throwable getMessage(),getCause(); 設置isErrorPage=”true”
page內置對象 :真實對象是Object,就是JSP翻譯成Servlet後的類的引用.
8.jsp的四個域中存取數據
JSP的四個域範圍:
* PageScope :當前頁面中有效. pageContext PageContext
* RequestScope :一次請求範圍. request HttpServletRequest
* SessionScope :一次會話範圍. session HttpSession
* ApplicationScope :應用範圍 application ServletContext
9.jsp的動作標簽
<jsp:forward /> :用於頁面的轉發.
<jsp:include /> :用於頁面的包含.(動態包含)
<jsp:param /> :用於帶有路徑的標簽下,傳遞參數.
<jsp:useBean /> :用於在JSP中使用JavaBean.
<jsp:setProperty /> :用於在JSP中向JavaBean設置屬性的.
<jsp:getProperty /> :用於在JSP中獲得JavaBean的屬性.
session和jsp