亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

BearyChat / 2075人閱讀

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

JSP 簡(jiǎn)介

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

桌面應(yīng)用程序

Web應(yīng)用程序

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

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

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

HTML,CSS

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

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

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

主流的動(dòng)態(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 存放各種平臺(tái)下用于啟動(dòng)和停止Tomcat的命令文件
/conf 存放Tomcat服務(wù)器的各種配置文件
/lib 存放Tomcat服務(wù)器所需的各種JAR文件
/logs 存放Tomcat的日志文件
/temp Tomcat運(yùn)行時(shí)用于存放臨時(shí)文件
/webapps 當(dāng)發(fā)布Web應(yīng)用時(shí)
/work Tomcat把由JSP生成的Servlet放于此目錄下
1.2.2 WEB-INF 目錄結(jié)構(gòu)

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

web.xml 項(xiàng)目部署文件

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

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

1.3 如何修改Tomcat的端口?

修改 Tomcat的conf/server.xml的:

    

修改Port就能成功修改Tomcat的默認(rèn)端口

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

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

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

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

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

頁面元素組成:

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

指令

注釋

腳本

聲明

表達(dá)式

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

語法:

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

HTML 注釋

  //客戶端可見,審查元素時(shí)

JSP的注釋:

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

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

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

語法:

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

語法:

<%! Java代碼%>

例子:

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

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

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

JSP內(nèi)置對(duì)象:

out

request

response

session

application

Page/pageContext/exception/config

3.2 out

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

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

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

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

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

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

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

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

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

3.3 request/response

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

3.3.1 補(bǔ)充: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ù)量大,安全性高的用戶信息。比如:注冊(cè),修改,上傳等功能

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

request 內(nèi)置對(duì)象

<% 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提交表單,如果是中文可能還會(huì)亂碼

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

需要重啟Tomcat生效

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

如我們?cè)诮馕鰎equest時(shí)候,可以設(shè)置默認(rèn)項(xiàng)(密碼):

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

然后讀取這個(gè)值

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

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

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

區(qū)別:

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

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

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

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

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

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

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

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

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

3.5 session

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

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

從上述定義可以看到,session實(shí)際上是一個(gè)特定的時(shí)間概念

3.5.1 什么是Session?

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

3.5.2 session 對(duì)象

JSP內(nèi)置對(duì)象

在第一個(gè)JSP頁面被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期管理

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

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

session對(duì)象是HTTPSession類的實(shí)例

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

創(chuàng)建

活動(dòng)

銷毀

3.5.4.1 創(chuàng)建:

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

3.5.4.2 活動(dòng):

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

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

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

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

session的銷毀方式只有三種:

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

session過期(超時(shí))

服務(wù)器重啟

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

session.setMaxInactiveInterval(時(shí)間)時(shí)間是秒

web.xml配置



    10 //分鐘

3.6 application

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

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

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

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

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

application對(duì)象是ServletContext類的實(shí)例

常用方法:

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

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

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

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

3.7 page / pageContext / exception / config 3.7.1 page 對(duì)象

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

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

class getClass() 返回此Object 的類

int hashCode() 返回此Object的Hash碼

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

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

Object clone() 克隆此Object對(duì)象

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

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

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

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

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

3.7.2 pageContext對(duì)象

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

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

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

本類名也叫pageContext

常用方法:

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

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

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

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

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

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

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

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

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

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

3.7.3 Exception對(duì)象

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

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

String toString() 返回關(guān)于異常的簡(jiǎ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 對(duì)象

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

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

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

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

四、JavaBean 4.1 JavaBean 簡(jiǎn)介

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

4.2 JavaBean的設(shè)計(jì)原則

公有類

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

屬性私有

getter和setter方法

Javabean 設(shè)計(jì)原則舉例

//設(shè)計(jì)學(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動(dòng)作

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

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

第二類:JSP1.2開始有的基本元素,包含6個(gè)動(dòng)作元素

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

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

第五類:JSP2.0 新增加的動(dòng)作元素,主要使用在Tag File中,有2個(gè)元素

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

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


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


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

    
    

使用useBean動(dòng)作創(chuàng)建javabean實(shí)例


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

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

    
    

setProperty動(dòng)作元素


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

作用:獲取指定JavaBean對(duì)象的屬性值


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

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

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

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

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

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

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

JavaBean四個(gè)作用域范圍


用戶名:
密碼:
<%-- 用戶名:<%=((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 通過請(qǐng)求轉(zhuǎn)發(fā)還可以獲取到,但是page在其他頁面無法獲取到
Model1 簡(jiǎn)介

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

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

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

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

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

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

Cookie的作用

對(duì)特定對(duì)象的追蹤

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

簡(jiǎn)化登錄

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

創(chuàng)建Cookie對(duì)象:

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

寫入Cookie對(duì)象:

response.addCookie(newCookie)

讀取Cookie對(duì)象:

Cookie[] cookies = request.getCookies();

Cookie常用方法:

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

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

6.2 include動(dòng)作

語法:

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

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

語法:

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

6.5

語法:

常常作為的子標(biāo)簽
案例:

  
    
     //修改密碼
七、知識(shí)點(diǎn)補(bǔ)充 7.1 JSP對(duì)象 怎樣獲得
JSP 對(duì)象 怎么獲得
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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/76615.html

相關(guān)文章

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

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

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

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

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

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

    GeekGhc 評(píng)論0 收藏0
  • 全棧通用分頁查詢

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

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

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

    fancyLuo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<