JSP學習(二)——頁面元素+九大內置對象

寫在前面

用eclipse創建一個jsp項目後,eclipse會複製tomcat文件到工作空間下,這樣導致原先下的tomcat和eclipse使用的tomcat是互不干擾的兩個服務器,修改原先下的tomcat配置文件不會影響eclipse項目中的tomcat。

jsp的頁面元素

  • 腳本 Scriptlet
    i. <% java代碼,定義局部變量 %>
    ii. <%! 定義全局變量,方法%>
    iii.<%=輸出表達式%> —>等價於 <% out.print(內容); %>
<% out.print("helloworld"); %>
<%! public void init() {} %>
<%="helloworld" %>
  • html、css、js
  • 指令
    i.page指令:<%@page…%> 屬性:language(jsp使用的腳本語言)、import(導入的包)、pageEncoding(jsp自身的編碼 jsp–>java)、contentType(瀏覽器解析的編碼)
<%@page import = "java.util.*"%>
<%@page contentType="text/html;charset=utf-8"%>
<%@page language="java" %>
<%@page pageEncoding="utf-8" %>

ii.include指令:<%@include…%>
iii.taglib指令:<%@taglib…%>

  • 註釋
    i.html註釋:可以查看源碼看到
    ii.java註釋 : 不會在網頁源代碼中顯示
    iii.jsp註釋:<%-- 註釋內容 --%> 不會在網頁源代碼中顯示

jsp 9大內置對象

jsp自帶的,不需要new的對象

out

向客戶端輸出內容

out.print("helloworld";

pageContext

request

請求對象;存儲了“客戶端向服務端發送的請求信息”

常見方法

  • String getParameter(String name)
    根據name取值,key–value
  • String[] getParameterValues(String name)
    根據name取一組值
  • void setCharacterEncoding(“utf-8”)
    設置請求編碼,默認根據tomcat的編碼(7以前是iso-8859-1,8之後爲utf-8)
  • getRequestDispatcher(“b.jsp”).forward(request,response)
    請求轉發,用於頁面跳轉
  • SerletContext getServeContext()
    獲取項目的SerletContext()對象

response

響應對象,
常用方法:

  • void addCookie(Cookie cookie);
    服務端向客戶端增加一個cookie對象
  • void sendRedirect(String location) throws IOException;
    重定向,頁面跳轉的一種方式
  • void setContentType(String type)
    設置服務端相應編碼(設置服務端Content編碼類型)

轉發和重定向的區別:

轉發 重定向
request response
地址欄保留轉發時的地址 地址欄變爲重定向後的地址
數據不丟失 數據丟失
請求一次 請求兩次
在服務端跳轉 在客戶端跳轉

轉發
在這裏插入圖片描述
重定向
在這裏插入圖片描述

cookie+ session

  • session : 在服務端,內置對象
  • cookie :在客戶端,不是內置對象,需要new

cookie

有服務端產生,發送給客戶端保存,作本地緩存,將一些數據存放在本地,可以提高訪問服務器效率,但是安全性較差。

裏面有鍵值對:name–value

建議cookie中不保存中文,否則要編碼和解碼
方法:

  • public Cookie(String name,String value);
  • String getName()
    獲取name
  • String getValue()
    獲取value
  • void setMaxAge(int expiry)
    設置最大有效期(單位:秒)

服務端發送cookie
1.response.addCookie(Cookie cookie)
2.頁面跳轉(轉發,重定向)
客戶端獲取cookie
request.getCookies()【只能一次性把cookie全拿到】

session

會話:打開一個網站到關閉網頁稱爲一次會話。

機制:

  • 服務器會給每一個連接的客戶端創建一個session。
  • 當客戶端第一次訪問服務器時,客戶端創建一個session。
  • 這個session中有sessionId,服務器會將這個sessionId保存到name爲JSESSIONID的cookie中
  • 將這個cookie發送給客戶端,用以區分不同的客戶端。
  • 當客戶端再次訪問時,可以直接尋找對應的session.
  • session在同一個用戶請求時共享

方法:

  • String getId() : 獲取sessionId
  • boolean isNew() : 判斷是否是 新用戶(第一次訪問)
  • void invalidate() : 使session失效(退出登錄、註銷)
  • void setAttribute(name ,value) : 存儲信息
  • Object getAttribute(name) : 獲得信息
  • void setMaxInactiveInterval(秒) : 設置最大有效 非活動時間
  • int getMaxInactiveInterval() : 查看最大有效 非活動時間
  • removeAttribute() : 刪除某一信息

區別:

cookie session
保存在客戶端 保存在服務端
較不安全 較安全
保存String–String 保存String – Object

application

全局對象,可以獲得全部信息。

  • String getContextPath():獲取當前路徑的虛擬路徑
  • String getRealPath(“虛擬路徑”):獲取絕對路徑(虛擬路徑相對的絕對路徑)

config

配置對象,(服務器配置信息)

page

當前JSP頁面對象,相當於java中的this.

exception

異常對象

四種範圍對象

  • pageContext(一般會說page對象,不是九大內置對象的page對象):當前頁面有效
  • request:同一次請求有效(請求轉發有效,重定向無效)
  • session:同一次會話有效(關閉/切換瀏覽器無效)
  • application:全局有效(整個項目有效,服務器重啓無效)

共有的方法:

  • Object getAttribute(String name):根據屬性名,獲取屬性值
  • void setAttribute(String name , Object obj):設置屬性值(新增,修改)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章