1. 程式人生 > >session和jsp

session和jsp

count ssi public prop stream per 關閉 span -1

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