Jsp基礎總結

jsp指令

page指令:<%@ page language="java"import="java.util*,java.io*,..." contentType="text/html;charset="utf-8" %>

include指令:<%@ include file="controller.jsp"%>

taglib指令:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


jsp編寫

  jsp聲明:<%! java方法(或者變量,一般不用,涉及線程安全)%>

  jsp小腳本:<% java語句%>

  jsp表達式:<%=result***(無分號)***%>(相當于out.print(result))

html注釋:

 <!--html注釋-->  

jsp注釋:

jsp外部注釋:<%--jsp外部注釋--%>
jsp內部注釋:<%//內部單行注釋  %>
jsp內部多行注釋:<%/*內部多行注釋*/%>     

jsp運行原理

第一次訪問時:

1.用戶通過瀏覽器訪問jsp的時候,tomcat負責把jsp轉化為java文件:

 jsp聲明->java文件的成員方法;

 jsp腳本->java文件中的_jspServices方法中的一段代碼;

 jsp表達式->_jspServices方法中的一段代碼 out.write(html標簽);

2.服務器再把java文件編譯成class文件;

3.服務器執(zhí)行class文件:

  首先對生成的java類進行實例化;

  調用實例化后對象的_jspServices()方法輸出html給瀏覽器;

4.瀏覽器渲染html數據.

第二次訪問時:

1.服務器執(zhí)行class文件:

  首先對生成的java類進行實例化; 

  調用實例化后對象的_jspServices()方法輸出html給瀏覽器;

2.瀏覽器渲染html數據:


jsp內置對象

1.不經常使用的內置對象:

pageContext:(內置對象的集大成者pageContext.getOut(),可以獲得其他內置對象)

config:(指定jsp頁面初始配置的)

page:(當前jsp實例化的對象,object類型)

exception:(處理頁面異常,使用java代碼處理異常errorpage="true"或"false")

2.經常使用的內置對象:

out
out.print(Object c);//向瀏覽器打印數據(將各種類型的數據轉換成字符串)

out.write(charset);//向瀏覽器打印數據(字符,字符數組,字符串(不能打印空字符))

out.println(Objct c); //向瀏覽器打印數據(將各種類型的數據轉換成字符串)并換行(源代碼換行相當是頁面回車,瀏覽器渲染是空格)頁面的換行用

out.print(null); // 頁面打印的是null

out.write(null) ; //出現空指針異常的報錯


request

String getParameter(String name);//根據表單組件名稱獲取提交數據

String getParanmeterValues(String name);//獲取表單組件對應多個值時的請求數據

void setCharacterEncoding(String charset);//指定每個請求的編碼

RequestDispatcher getRequestDispatcher(String path);//返回RequestDispatcher 對象,該對象的forward()方法用于轉發(fā)請求


編碼:

jsp頁面本身的編碼 utf-8

1. pageEncoding:頁面本身的編碼

2. contentType:瀏覽器渲染頁面的時候采用的編碼格式

一旦其中一種pageEncodingcontentType編碼格式已經指定,另外 一種編碼格式如果不進行指定,默認都采用已經指定的編碼格式。
服務器保存數據采用的編碼(resquest)

使用utf-8編碼來保存數據

(1)以POST方式提交數據
1.設置讀取請求數據的字符編碼為UTF-8:request.setCharterEncoding("UTF-8");
2.設置的request內部保存數據的格式,不包括url

(2)以GET方式提交數據

對請求的數據進行字符編碼:

第一種處理方式:

 String name=request.getParameter("name");
 name=new String(name.getBytes("ISO-8859-1"),"utf-8");

第二種處理方式:

tomcat/config/server.xml下的找到URIEncoding="ISO-8859-1"設置為URIEncoding="UTF-8"。


response
void sendRedirect(String location);//重定向

客戶端將重新發(fā)送到請求到指定的url,即【重定向】(客戶端通過發(fā)送一個新的請求實現頁面轉向,在地址欄中可以顯示轉向后的地址):通過響應告訴瀏覽器請求一個地址,瀏覽器訪問指定url(瀏覽器發(fā)出至少兩次請求,會導致第一次請求失效,狀態(tài)碼302告訴瀏覽器該重定向了)

第一次請求失效的兩種解決方法:
1.當第一次請求失效的時候,把數據進行保存,使用數據作為參數發(fā) 起第二次請求。
2.只發(fā)出一次請求完成頁面的跳轉(使用轉發(fā)取代頁面完成實現頁面跳轉)【轉發(fā):服務器端將同一請求在服務器資源之間進行傳遞,地址欄不會顯示轉 向后的地址)】:將請求發(fā)送給服務器上的其他資源,以完成一次請求的處理。
轉發(fā):request.getRequestDispatcher(String path).forward(request,respons);


session

一個會話就是在一段時間內,一個客戶端與Web服務器的一連串相關的交互過程。

String getId();//獲取sessionid

void setMaxInactiveInterval(int interval);//設定session的最大空閑時長(單位:秒)

int getMaxInactiveInterval();//獲取session的最大空閑時長(單位:秒)

void invalidate();//設置session對象失效

void setAttribute(String key, object value);//以key/value的形式保存對象值

object getAttribute(String key);//通過key獲取對象值

void removeAttribute(String key);//從session中刪除指定名稱(key)所對應的對象

設定session的最大空閑時長:

第一種方式:硬編碼:void setMaxInactiveInterval(int interval);

第二種方式:配置項目的web.xml或者tomcat/conf/web.xml,tomcat/conf/web.xml默認時長30分鐘
項目的web.xml(比tomcat的web.xml優(yōu)先)和tomcat的web.xml(全局配置)1(單位:分鐘)


application

實現用戶之間的數據共享

void setAttribute(String key,Object value);//以key/value的形式保存對象值

Object getAttribute(String key);//通過key獲取對象值

String getRealPath(String path);//返回相對路勁的真實路徑

網站訪問量(application應用):

Integer count=(Integer)application.getAttribute("count");

if(count==null){

application.setAttribute("count", 1);

}else{

application.setAttribute("count", count+1);

}

四大作用域(用于數據的保存)

application作用域:對應整個應用的上下文

session:對應一個用戶會話

request:對應一次請求

page:本jsp頁面的范圍(pageContext.getAttribute();pageContext.setAttribute();pageContext.include(String filename))

cookie(瀏覽器緩存cookie)

cookie是web服務器保存在客戶端的一系列文本信息

cookie作用:

1. 對特定對象的追蹤

2. 實現各種個性化服務

3. 簡化登錄

安全性能:容易泄露信息

Cookie newCookie=new Cookie(String key,String value);  //創(chuàng)建  cookie對象
respose.addCokie(newCookie);     //寫入cookie
Cookie[] cookies=request.getCookies();//讀取cookie
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,588評論 19 139
  • 一. Java基礎部分.................................................
    wy_sure閱讀 4,017評論 0 11
  • 因為是在Ubuntu上部署,所以遇到了很多坑,記錄一下。 主要是用jodconverter+openOffice實...
    kirno閱讀 2,904評論 0 3
  • 最近,在讀了很多書之后。我在做任何事之前,都要用整體思維,稍微想一想。先從想我這個人開始,我現在是什么樣子的?過去...
    溫暖你的胸口閱讀 319評論 0 0

友情鏈接更多精彩內容