成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JSP 學(xué)習(xí)記錄

BearyChat / 2020人閱讀

摘要:對象具有請求域,即完成客戶端的請求之前,該對象一直有效。提交的數(shù)據(jù)量最多不超過。安全性較低但效率比方式高。適合提交數(shù)據(jù)量大,安全性高的用戶信息。除非本次會話的所有頁面都關(guān)閉后再重新訪問某個或者,將會創(chuàng)建新的會話。

JSP 簡介

全名為Java Server Pages,其根本是一個簡化的Servlet設(shè)計,實現(xiàn)了在Java當(dāng)中使用HTML標簽。JSP是一種動態(tài)網(wǎng)頁技術(shù)標準,也是JavaEE的標準,JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。
軟件開發(fā)三大方向:

桌面應(yīng)用程序

Web應(yīng)用程序

嵌入式應(yīng)用程序(手機的APP)

一、Web 開發(fā)知識補充 1.1 靜態(tài)網(wǎng)頁 VS 動態(tài)網(wǎng)頁 1.1.1 靜態(tài)網(wǎng)頁

內(nèi)容固定,不會更新

HTML,CSS

1.1.2 動態(tài)網(wǎng)頁

通過程序動態(tài)顯示,自動更新

所需技術(shù):HTML,CSS,JS,XML,數(shù)據(jù)庫庫,一門高級語言(Java,C#,PHP)

主流的動態(tài)網(wǎng)頁腳本技術(shù):JSP/Asp.net/php

1.2 搭建 Java Web
JDK , Tomcat, IDE
推薦:JDK1.7,Tomcat7.0,MyEclipse10
1.2.1 Tomcat 目錄結(jié)構(gòu)
目錄 說明
/bin 存放各種平臺下用于啟動和停止Tomcat的命令文件
/conf 存放Tomcat服務(wù)器的各種配置文件
/lib 存放Tomcat服務(wù)器所需的各種JAR文件
/logs 存放Tomcat的日志文件
/temp Tomcat運行時用于存放臨時文件
/webapps 當(dāng)發(fā)布Web應(yīng)用時
/work Tomcat把由JSP生成的Servlet放于此目錄下
1.2.2 WEB-INF 目錄結(jié)構(gòu)

WEB_INF:Java的Web應(yīng)用的安全(客戶端無法訪問,只有服務(wù)端可以訪問的)目錄。

web.xml 項目部署文件

classes:放置*.class文件,放在WEB_INF目錄下,IDEA需要手動建立

lib文件夾:放置需要的jar包,放在WEB_INF目錄下,IDEA需要手動建立

1.3 如何修改Tomcat的端口?

修改 Tomcat的conf/server.xml的:

    

修改Port就能成功修改Tomcat的默認端口

1.4 常見動態(tài)網(wǎng)站開發(fā)技術(shù)對比

JSP:Java平臺,安全性高,適合開發(fā)大型的,企業(yè)級的Web應(yīng)用程序

Asp.net:.Net平臺,簡單易學(xué),但是安全性以及跨平臺性差

PHP:簡單,高效,成本低開發(fā)周期短,特別適合中小型企業(yè)的Web應(yīng)用開發(fā)(LAMP:Linux+Apache+MySQL+PHP)

JSP 適合分布式的,Hadoop
二、JSP 基礎(chǔ)語法

頁面元素組成:

靜態(tài)內(nèi)容

指令

注釋

腳本

聲明

表達式

2.1 JSP指令
指令 說明
page 通常位于JSP頁面的頂端,同一個頁面可以有多個page指令
include 將一個外部文件嵌入到當(dāng)前JSP文件中,同時解析這個頁面中的JSP語句
taglib 使用標簽庫定義新的自定義標簽,在JSP頁面中啟用定制行為
2.1.1 page指令

語法:

<%@ page 屬性1="屬性值" 屬性2="屬性值1,屬性值2"... 屬性n="屬性值n" %>
屬性 描述 默認值
language 指定JSP頁面使用的腳本語言 Java
import 通過該屬性來引用腳本語言中使用到的類文件
contentType 用來指定JSP頁面所采用的編碼方式 text/html,ISO-8859-1
2.2 JSP 注釋

HTML 注釋

  //客戶端可見,審查元素時

JSP的注釋:

<%-- JSP 的注釋 -- %> //客戶端不可見

JSP 腳本注釋:客戶端不可見

// 單行注釋
/* 多行注釋
*/ 
2.3 JSP 腳本

語法:

<% Java代碼 %>
2.4 JSP 聲明
在JSP中定義變量或者方法

語法:

<%! Java代碼%>

例子:

<%!
    String s = "張三";    //聲明了一個字符串
    int add(int x, int y){   //聲明了一個函數(shù),返回兩個整數(shù)的求和
        return x+y
    }
%>
2.5 JSP的表達式
JSP中執(zhí)行的表達式
<%= 表達式%>  // 注意表達式不以分號結(jié)束
三、JSP 內(nèi)置對象 3.1 內(nèi)置對象簡介

JSP內(nèi)置對象是web容器創(chuàng)建的一組對象,不用new關(guān)鍵字就可以使用的內(nèi)置對象

<%
    int[] value = {60,70,80}
    for(int i:value){
        out.println(i)
    }
%>

JSP內(nèi)置對象:

out

request

response

session

application

Page/pageContext/exception/config

3.2 out

JspWriter類的實例,向客戶端(瀏覽器)輸出內(nèi)容常用的對象
常用方法如下:

void println()向客戶端打印字符串

void clear() 清除緩沖區(qū)的內(nèi)容,如果在flush之后調(diào)用會拋出異常

void clearBuffer() 清除緩沖區(qū)的內(nèi)容,如果在flush之后調(diào)用不會拋出異常

void flush() 將緩沖區(qū)內(nèi)容輸出到客戶端

int getBufferSize() 返回緩沖區(qū)以字節(jié)數(shù)的大小,如不設(shè)緩沖區(qū)則為0

int getRemaining() 返回緩沖區(qū)還剩余多少可用

boolean isAutoFlush() 返回緩沖區(qū)滿時,是自動清空還是拋出異常

void close() 關(guān)閉輸出流

3.3 request/response

客戶端的請求信息被封裝在Request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng)。它是HttpServletRequest類的實例。request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。

3.3.1 補充:get 和 post區(qū)別
表單:

表單提交方式:get和post

get:以明文的方式通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到。提交的數(shù)據(jù)量最多不超過2KB。安全性較低但效率比post方式高。適合提交數(shù)據(jù)量不大,安全性不高的數(shù)據(jù)。比如:搜索、查詢等功能。
例如結(jié)果如下:

 http://localhost:8080/ServletDemo/dologin.jsp?username=12&password=12

post:將用戶提交的信息封裝在HTML HEADER內(nèi)。適合提交數(shù)據(jù)量大,安全性高的用戶信息。比如:注冊,修改,上傳等功能

3.3.2 常用方法
1. String getParameter(String name) 返回name指定參數(shù)的參數(shù)值
2. String[] getParameterValues(String name)返回包含參數(shù)name的所有值的數(shù)據(jù)
    

request 內(nèi)置對象

<% request.setCharacterEncoding("utf-8"); %> 用戶名:<%=request.getParameter("username")%>
愛好:<% String[] favorites = request.getParameterValues("favorite"); for (int i = 0; i < favorites.length; i++) { out.println(favorites[i]+"  "); } %>
request.setCharacterEncoding("utf-8”);
避免中文在客戶端顯示亂碼

通過URL提交表單,如果是中文可能還會亂碼

解決方法:配置Tomcat
tomcat的conf目錄下的 server.xml

需要重啟Tomcat生效

3. void setAttribute(String, Object) 存儲此請求中的屬性
4. object getAttribute(String name) 返回指定屬性的屬性值

如我們在解析request時候,可以設(shè)置默認項(密碼):

request.setAttribute("password", "123456");

然后讀取這個值

密碼:<%=request.getAttribute("password")%>
5. String getContentType() 得到請求體的MIME類型
6. String getProtocol() 返回請求用的協(xié)議類型及版本號
7. String getServerName() 返回接收請求的服務(wù)器主機名
3.3.3 其他方法:
1. int getServerPort() 返回服務(wù)器接收此請求所用的端口號
2. String getCharaterEncoding() 返回字符編碼方式
3. void setCharacterEncoding() 設(shè)置請求的字符編碼方式
4. int getContentLength() 返回請求體的長度(字節(jié)數(shù))
5. String getRemoteAddr() 返回請求的客戶端IP地址
6. String getRealPath(String path) 返回一虛擬路徑的真是路徑
3.4 response 對象

包含了響應(yīng)客戶端請求的有關(guān)信息,但是在JSP中很少使用到它。它是HttpServletResponse類的實例。response對象具有頁面作用域,即訪問一個頁面時,該頁面的response對象只能對這次訪問有效,其他頁面的response對象對當(dāng)前頁面無效

3.4.1 常用方法:
1. String getCharacterEncoding() 返回響應(yīng)用的是何種字符編碼
2. void setContentType(String type)設(shè)置響應(yīng)的MIME類型
3. PrintWriter getWriter() 返回可以向客戶端輸出字符的一個對象(注意比較PrintWriter與內(nèi)置out對象的區(qū)別)

區(qū)別:

out和response.getWriter的類不一樣,一個是JspWriter,另一個是java.io.PrintWriter。

執(zhí)行原理不同:JspWriter相當(dāng)于一個帶緩存功能的printWriter,它不是直接將數(shù)據(jù)輸出到頁面,而是將數(shù)據(jù)刷新到response的緩沖區(qū)后再輸出,response.getWriter直接輸出數(shù)據(jù)(response.print()),所以(out.print)只能在其后輸出。 (如果想要out對象強制在前輸出,可以out之后使用flush()方法)

out為jsp的內(nèi)置對象,刷新jsp頁面,自動初始化獲得out對象,所以使用out對象是需要刷新頁面的,而response.getWriter()響應(yīng)信息通過out對象輸出到網(wǎng)頁上,當(dāng)響應(yīng)結(jié)束時它自動被關(guān)閉,與jsp頁面無關(guān),無需刷新頁面?!感蜗蟮谋扔鳎寒?dāng)我們調(diào)用response.getWriter()這個對象同時獲得了網(wǎng)頁的畫筆,這時你就可以通過這個畫筆在網(wǎng)頁上畫任何你想要顯示的東西?!?/p>

out的print()方法和println()方法在緩沖區(qū)溢出并且沒有自動刷新時候會產(chǎn)生ioexception,而response.getWrite()方法的print和println中都是抑制ioexception異常的,不會有ioexception 。

4. sendRedirect(java.lang.String location) 重定向客戶端的請求

請求轉(zhuǎn)發(fā)與請求重定向的區(qū)別:

請求重定向:客戶端行為,response.sendRedirect(),從本質(zhì)上講等同于兩次請求,前一次的請求對象不會保存,地址欄的URL地址會改變

請求轉(zhuǎn)發(fā):服務(wù)器行為,request.getRequestDispatcher().forward(req,resp);是一次請求,轉(zhuǎn)發(fā)后請求對象會保存,地址欄的URL地址不會改變

例子:辦理護照
? ? ? ?重定向:你先去了A局,A局的人說:“這事不歸我們管,去B局”,然后你從A退了出來,乘車去了B局
? ? ? ?轉(zhuǎn)發(fā):你去了A局,A局看了以后,知道這個事情應(yīng)該B局管,沒有退出來,讓你坐了一會,自己倒了后面辦公室聯(lián)系了B的人,讓他們辦好后,送了過來。

3.5 session

表示客戶端與服務(wù)器的一次會話

Web中的session指的是用戶在瀏覽某個網(wǎng)站時,從進入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過這段時間,也就是用戶瀏覽這個網(wǎng)站所花費的時間

從上述定義可以看到,session實際上是一個特定的時間概念

3.5.1 什么是Session?

在服務(wù)器的內(nèi)存中保存著不同用戶的session,每一個用戶一個session。

3.5.2 session 對象

JSP內(nèi)置對象

在第一個JSP頁面被裝載時自動創(chuàng)建,完成會話期管理

從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶端關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話

當(dāng)客戶訪問一個服務(wù)器時,可能在服務(wù)器的幾個頁面之間切換,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是一個客戶,就需要session對象

session對象是HTTPSession類的實例

3.5.3 常用方法:
1. long getCreationTime():返回Session創(chuàng)建時間
2. public String getID(): 返回session創(chuàng)建時JSP引擎為它設(shè)的唯一ID號
3. public Object setAttribute(String name, Object value):使用指定名稱對象綁定此會話
4. public Object getAttribute(String name):返回此會話中的指定名稱綁定在一起時的對象
如果沒有對象綁定在該名稱,返回Null
5. String[] getValueNames():返回一個包含此session中所有可用屬性的數(shù)組
6. int getMaxInactiveInterval(): 返回兩次請求間隔多長時間此session被取消(單位秒)
3.5.4 Session 生存周期

創(chuàng)建

活動

銷毀

3.5.4.1 創(chuàng)建:

當(dāng)客戶端第一次訪問某個JSP或者servlet時候,服務(wù)器會為當(dāng)前會話創(chuàng)建一個sessionId,每次客戶端向服務(wù)器發(fā)送請求時,都會將此SessionId攜帶過去,服務(wù)端會對此SessionId進行校驗

3.5.4.2 活動:

某次會話當(dāng)中通過超鏈接打開的新頁面屬于同一次會話。

只要當(dāng)前會話頁面沒有全部關(guān)閉,重新打開的新瀏覽器窗口訪問同一個項目資源時屬于同一次會話。

除非本次會話的所有頁面都關(guān)閉后再重新訪問某個JSP或者Servlet,將會創(chuàng)建新的會話。

注意事項:注意原有會話還存在,只是這個舊的sessionId仍存在服務(wù)端,只是再也沒有客戶端會攜帶它然后交于服務(wù)端校驗
3.5.4.3 銷毀:

session的銷毀方式只有三種:

調(diào)用session.invalidate()方法

session過期(超時)

服務(wù)器重啟

設(shè)置超時時間兩種方式:

session.setMaxInactiveInterval(時間)時間是秒

web.xml配置



    10 //分鐘

3.6 application

實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量

開始于服務(wù)器的啟動,終止于服務(wù)器的關(guān)閉

在用戶的前后連接或不同用戶之間的連接中,可以對application對象的同一屬性進行操作

在任何地方對application對象屬性的操作,都將影響到其他用戶對此的訪問

服務(wù)器的啟動和關(guān)閉決定了application對象的聲明

application對象是ServletContext類的實例

常用方法:

public void serAttribute(String name, Object value)使用指定名稱將對象綁定到此會話

public Object getArrtibute(String name) 返回與此會話中的指定名稱綁定在一起的對象,如果沒有對象綁定在此名稱下,則返回null

Enumeration getAttributeNames()返回所有可用屬性名的枚舉

String getServerInfo()返回JSP(Servlet)引擎名及版本號

3.7 page / pageContext / exception / config 3.7.1 page 對象

指當(dāng)前JSP頁面本身,有點像類中的this指針,它是Java.long.Object類的實例

常用方法(Object類的方法):

class getClass() 返回此Object 的類

int hashCode() 返回此Object的Hash碼

boolean equals(Object obj) 判斷此Object是否與指定的Object對象相等

void copy(Object obj)把此Object拷貝到指定的Object對象中

Object clone() 克隆此Object對象

String toString 把Object對象轉(zhuǎn)換成String類的對象

void notify() 喚醒一個等待的線程

void notifyall() 喚醒所有等待的線程

void wait(int timeout)使一個線程處于等待直到timeout結(jié)束或者被喚醒

void wait() 使一個線程處于等待直到被喚醒

3.7.2 pageContext對象

提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問

可以訪問到本頁所在的session,也可以取本頁面所在的application的某一個屬性值

相當(dāng)于頁面中所有功能的集大成者

本類名也叫pageContext

常用方法:

JspWriter getOut() 返回當(dāng)前客戶端響應(yīng)被使用的JspWriter流(out)

HttpSession getSession() 返回當(dāng)前頁中的HttpSession對象(session)

Object getPage() 返回當(dāng)前頁的Object對象(page)

ServletRequest getRequest() 返回當(dāng)前頁的ServletRequest對象(request)

ServletResponse getResponse() 返回當(dāng)前頁的ServletResponse對象(response)

void setAttribute(String name, Object attribute)設(shè)置屬性及屬性值

Object getAttribute(String name, int scope)在指定范圍內(nèi)取屬性的值

int getAttributeScope(String name) 返回某個屬性的作用范圍

void forward(String relativeUrlPath) 使當(dāng)前頁面重導(dǎo)到另一頁面

void include(String relativeUrlPath)在當(dāng)前位置包含另一文件

3.7.3 Exception對象

異常對象,當(dāng)一個頁面在運行過程中發(fā)生了異常,就產(chǎn)生這個對象。如果一個JSP頁面要應(yīng)用此對象,就必須把isErrorPage設(shè)置為true,否則無法編譯。它實際上是java.lang.Throwable的對象
常用方法:

String getMessage() 返回描述異常的消息

String toString() 返回關(guān)于異常的簡短描述信息

void printStackTrace() 顯示異常及其棧軌跡

Throwable FillInStackTrace() 重寫異常的執(zhí)行棧軌跡

需要處理異常的頁面,頁面頭要加上errorPage

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="exception.jsp" %>

Exception頁面要在page中填寫isErrorPage

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
3.7.4 Config 對象

在Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(shù)(通過屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過傳遞一個ServletContext對象)
常用方法如下:

ServletContext getServletContext() 返回含有服務(wù)器相關(guān)信息的 ServletContext 對象

String getInitParameter(String name)返回初始化參數(shù)的值

Enumeration getInitParameterNames() 返回Servlet初始化所需所有參數(shù)的枚舉

四、JavaBean 4.1 JavaBean 簡介

就是符合某種特定的規(guī)范的Java類。使用Javabeans的好處是解決代碼重復(fù)編寫,減少代碼冗余,功能區(qū)分明確,提高了代碼的維護性。

4.2 JavaBean的設(shè)計原則

公有類

無參的公有構(gòu)造方法

屬性私有

getter和setter方法

Javabean 設(shè)計原則舉例

//設(shè)計學(xué)生類
public class Students // 公有類
{
    private String name; //屬性私有
    private int age; //屬性私有
    public Students() //無參的公有構(gòu)造方法
    {}
    // getter 和 setter 方法
    public void setName(String name){this.name =name;}
    public String getName(){return this.name}
    public void setAge(int age){this.age = age;}
    public int getAge(){return this.age;}
}
什么是Jsp動作

JSP動作元素(acion elements)為請求處理階段提供信息。動作元素遵循XML元素的語法,有一個包含元素名的開始標簽,可以有屬性、可選內(nèi)容、與開始標簽匹配的結(jié)束標簽。

第一類:存取與JavaBean有關(guān)「重要」

第二類:JSP1.2開始有的基本元素,包含6個動作元素

第三類:JSP2.0新增加的元素,主要與JSP Document有關(guān),包含6個元素

第四類:JSP2.0新增加的動作元素,主要是用來動態(tài)生成XML元素標簽的值,包括3個動作

第五類:JSP2.0 新增加的動作元素,主要使用在Tag File中,有2個元素

4.3 如何在JSP頁面中使用Javabeans? 4.3.1 像使用普通類一樣創(chuàng)建Javabeans實例
  
    <%
        Users user = new Users();
        user.setUsername("admin");//設(shè)置用戶名
        user.setPassword("123456");  //設(shè)置密碼
    %>
    

使用普通方式創(chuàng)建javabean實例


用戶名:<%=user.getUsername()%>
密碼:<%=user.getPassword()%>
4.3.2 JSP頁面中通常使用動作標簽使用javabean
useBeans動作  setProperty動作 getProperty動作


作用:在jsp頁面中實例化或者在指定范圍內(nèi)使用javabean:

    
    

使用useBean動作創(chuàng)建javabean實例


用戶名:<%=myUsers.getUsername()%>
密碼:<%=myUsers.getPassword()%>

作用:給已經(jīng)實例化的JavaBean對象的屬性復(fù)制,一共有四種形式
(與表單關(guān)聯(lián))
(與表單關(guān)聯(lián))
(手工設(shè)置)
(與request參數(shù)關(guān)聯(lián))

    
    

setProperty動作元素


<%-- --%> <%-- --%> <%-- --%> 用戶名:<%=myUsers.getUsername()%>
密碼:<%=myUsers.getPassword()%>
第四種:form提交的action中設(shè)置了mypass參數(shù)  

作用:獲取指定JavaBean對象的屬性值


用戶名:<%=myUsers.getUsername()%>
密碼:<%=myUsers.getPassword()%>
用戶名:
密碼:
JavaBean的四個作用域范圍

說明:使用useBeans 的scope屬性可以用來指定JavaBean的作用范圍

page //當(dāng)前頁面有效

request //可以通過HttpRequest.getAttribute()方法獲取JavaBean對象

session //可以通過HttpSession.getAttribute()方法獲取JavaBean對象

application // 可以通過application.getAttribute() 方法獲取JavaBean對象

作用域 描述
存儲在application對象中的屬性 可以被同一個WEB應(yīng)用程序中的所有Servlet和JSP頁面訪問
存儲在session對象中的屬性 可以被屬于同一個會話(瀏覽器打開直到關(guān)閉稱為一次會話,且在此期間會話不失效)的所有Servlet和JSP頁面訪問
存儲在request對象中的屬性 可以被屬于同一個請求的所有Servlet和JSP頁面訪問(在有轉(zhuǎn)發(fā)的情況下可以跨頁面獲取屬性值),例如使用PageContext.forward和PageContext.include方法連接起來的多個Servlet和JSP頁面
存儲在pageContext對象中的屬性 僅可以被當(dāng)前JSP頁面的當(dāng)前響應(yīng)過程中調(diào)用的各個組件訪問,例如,正在響應(yīng)當(dāng)前請求的JSP頁面和它調(diào)用的各個自定義標簽類
    

JavaBean四個作用域范圍


用戶名:
密碼:
<%-- 用戶名:<%=((Users)application.getAttribute("myUsers")).getUsername()%>>
密碼:<%=((Users)application.getAttribute("myUsers")).getPassword()%>>
--%> <%-- 用戶名:<%=((Users)application.getAttribute("myUsers")).getUsername()%>>
密碼:<%=((Users)application.getAttribute("myUsers")).getPassword()%>>
--%> 用戶名:<%=((Users)request.getAttribute("myUsers")).getUsername()%>>
密碼:<%=((Users)request.getAttribute("myUsers")).getPassword()%>>
request 通過請求轉(zhuǎn)發(fā)還可以獲取到,但是page在其他頁面無法獲取到
Model1 簡介

Model 1模型出現(xiàn)前,整個Web應(yīng)用的情況:幾乎全部由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理后直接作出響應(yīng)。
弊端:在界面層充斥著大量的業(yè)務(wù)邏輯的代碼和數(shù)據(jù)訪問層的代碼,Web程序的可擴展性可維護性非常差。

JavaBean的出現(xiàn)可以使JSP頁面中使用JavaBean封裝的數(shù)據(jù)或者調(diào)用JavaBean的業(yè)務(wù)邏輯代碼,這樣大大提升了程序的可維護性

Model1簡單來說就是JSP+JavaBean的開發(fā)模式
五、JSP 狀態(tài)管理 5.1 HTTP協(xié)議無狀態(tài)性

無狀態(tài):瀏覽器發(fā)送請求給服務(wù)器的時候,服務(wù)器響應(yīng)客戶端請求。但是當(dāng)同一個瀏覽器再次發(fā)送請求給服務(wù)器的時候,服務(wù)器并不知道它就是剛才那個服務(wù)器。

簡單地說,就是服務(wù)器不會記錄你,就是無狀態(tài)協(xié)議
5.2 保存用戶狀態(tài)的兩大機制(session&cookie) cookie

中文名:“小甜餅”
Web服務(wù)器保存在客戶端的一系列文本信息
典型應(yīng)用一:判定注冊用戶是否已經(jīng)登錄網(wǎng)址 (如十天內(nèi)免登錄…)
典型應(yīng)用二:“購物車的處理”

Cookie的作用

對特定對象的追蹤

保存用戶網(wǎng)頁瀏覽記錄與習(xí)慣

簡化登錄

安全風(fēng)險:容易泄漏用戶信息
JSP中創(chuàng)建與使用Cookies

創(chuàng)建Cookie對象:

Cookie newCookie = new Cookie(String key, Object value);

寫入Cookie對象:

response.addCookie(newCookie)

讀取Cookie對象:

Cookie[] cookies = request.getCookies();

Cookie常用方法:

方法名稱 說明
void setMaxAge(int expiry) 設(shè)置cookie的有效期,以秒為單位
void setValue(String value) 在cookie 創(chuàng)建后,對cookie進行賦值
String getName() 獲取cookie名稱
String getValue() 獲取cookie的值
int getMaxAge() 獲取cookie的有效時間,以秒為單位
session 和cookie對比
session cookie
服務(wù)器端(內(nèi)存)保存用戶信息 客戶端(文本文件)保存用戶信息
session中保存的是Object類型 cookie 保存的是String類型
隨會話的結(jié)束而將其存儲的數(shù)據(jù)銷毀 cookie可以長期保存在客戶端
保存重要的信息 保存不重要的用戶信息
安全性 :session 比 cookie要高
六、指令與動作 6.1 include指令

語法:
<%@ include file=“URL”%>

6.2 include動作

語法:

常用page和flush:
page:要包含的頁面
flush: 被包含的頁面是否從緩沖區(qū)讀取

6.3 include指令和include動作的區(qū)別
include 指令 jsp:include 動作
語法格式 <%@ include file= “…” %>
發(fā)生作用的時間 頁面轉(zhuǎn)換期間 請求期間
包含的內(nèi)容 文件的實際內(nèi)容(代碼) 頁面的輸出(結(jié)果)
轉(zhuǎn)換成的Servlet 主頁面和包含頁面轉(zhuǎn)換成一個Servlet 主頁面和包含頁面轉(zhuǎn)換為獨立的Servlet
編譯時間 較慢——資源必須被解析 較快
執(zhí)行時間 稍快 較慢——每次資源必須被解析
6.4 動作

語法:

等同:
request.getRequestDispatcher(“/url”).forward(request, response);

6.5

語法:

常常作為的子標簽
案例:

  
    
     //修改密碼
七、知識點補充 7.1 JSP對象 怎樣獲得
JSP 對象 怎么獲得
out resp.getWriter
request servlet 方法的 req參數(shù)
response servlet 方法的 resp參數(shù)
session req.getSession() 函數(shù)
application getServletContext() 函數(shù)
exception Throwable
page this
pageContext PageContext
config getServletConfig()

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76615.html

相關(guān)文章

  • JavaWeb從0開始學(xué)(一)-----第一個Web應(yīng)用程序與JSP工作原理

    摘要:當(dāng)后繼請求相同的頁面時,容器加載之前生成的類,并且通知去執(zhí)行已經(jīng)存在的字節(jié)碼,從而省去了轉(zhuǎn)換的過程,這也是第一次執(zhí)行頁面時間較長的原因。 以往學(xué)習(xí)的時候大多是看完書或者看完視頻,動手實踐一下就OK了。然而過了一段時間我發(fā)現(xiàn)東西都忘差不多了,需要復(fù)習(xí)才能重新掌握?,F(xiàn)在開始學(xué)習(xí)JavaWeb了,我將在這里記錄自己的學(xué)習(xí)的一點一滴,不僅便于自己以后回顧知識點,也希望能對JavaWeb初學(xué)者有...

    CloudDeveloper 評論0 收藏0
  • 深入分析JavaWeb Item1 -- JavaWeb開發(fā)入門

    摘要:中主要是使用語言。將的動態(tài)功能和標準的安全性引入大型網(wǎng)絡(luò)應(yīng)用的開發(fā)集成部署和管理之中。提供了一個圖形界面的管理工具,稱為信息服務(wù)管理器,可用于監(jiān)視配置和控制服務(wù)。 一、基本概念 1.1、WEB開發(fā)的相關(guān)知識   WEB,在英語中web即表示網(wǎng)頁的意思,它用于表示Internet主機上供外界訪問的資源?! nternet上供外界訪問的Web資源分為: 靜態(tài)web資源(如html 頁面...

    tinna 評論0 收藏0
  • Thymeleaf學(xué)習(xí)記錄(1)--啟動模板及建立Demo

    摘要:是什么是適用于和獨立環(huán)境的現(xiàn)代服務(wù)器端模板引擎。建立打開,選擇下一步下一步選中然后點擊完成,文件結(jié)構(gòu)如下添加,再下右鍵,添加內(nèi)容如下測試點擊右鍵,啟動項目,輸出如下啟動成功打開瀏覽器輸入顯示如下成功。? ? ? Thymeleaf是什么? Thymeleaf是適用于Web和獨立環(huán)境的現(xiàn)代服務(wù)器端Java模板引擎。相比于JSP,Thymeleaf更簡潔,渲染性能更好,維護性更好,它可以XML/...

    GeekGhc 評論0 收藏0
  • 全棧通用分頁查詢

    摘要:前言給大家講解全棧通用分頁查詢碼字不易,點個關(guān)注轉(zhuǎn)載請說明開發(fā)工具思維導(dǎo)圖目錄一所需要的包二后端數(shù)據(jù)庫幫助類通用查詢分頁父類書籍層類分頁工具類三前端文件助手類前端界面四一所需要的包二后端數(shù)據(jù)庫 前言:給大家講解全棧通用分頁查詢 碼字不易,點個關(guān)注 轉(zhuǎn)載請說明! 開發(fā)工具:eclipse 思維...

    Ashin 評論0 收藏0
  • JavaWeb從0開始學(xué)(二)-----JSP基本語法與編譯指令

    摘要:下面我們再打開對應(yīng)的文件,我們會看到如下部分內(nèi)容靜態(tài)測試調(diào)用我是文件,我被文件調(diào)用了我們發(fā)現(xiàn),在該包含文件被引入處那條語句被執(zhí)行了。 在上一節(jié)中我們學(xué)習(xí)了如何搭建一個簡單的Web應(yīng)用,并且已經(jīng)知曉了一個JSP頁面主要由靜態(tài)的HTML內(nèi)容和動態(tài)的Java腳本共同組成。JSP的基本語法共有JSP注釋、JSP聲明、輸出JSP表達式與JSP程序片段四種,用來控制動態(tài)向頁面輸出內(nèi)容的。現(xiàn)在我們就...

    fancyLuo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<