為了賬號安全,請及時綁定郵箱和手機立即綁定

JAVA遇上HTML-----JSP 篇基本概念

2016.05.15 13:05 10912瀏覽
Java Web簡介

1.什么是WEB應用程序:

Web應用程序是一種可以通過Web訪問的應用程序。Web應用程序的一個最大好處是用戶很容易訪問應用程序。用戶只需要有瀏覽器即可,不需要再安裝其他軟件。
Web應用程序開發,是目前軟件開發領域的三大方向之一。
軟件開發領域:
1、桌面應用程序(C/S架構)
2、Web應用程序(B/S架構)
3、嵌入式應用程序(移動開發等)

2.靜態網頁和動態網頁:

靜態網頁
表現形式:網頁中的內容是固定的,不會更新
所需技術:HTML,CSS
動態網頁
表現形式:網頁中的內容通過程序動態顯示,自動更新,學習制作動態網頁。
所需技術:HTML,CSS,數據庫技術,至少一門高級語言(JAVA,C#,PHP),JavaScript,XML等。主流的動態網頁腳本技術(JSP/ASP.NET/PHP)

3.Tomcat安裝步驟:

1、解壓Tomcat安裝包到指定目錄
2、配置Tomcat環境變量
變量名:CATALINA_HOME 變量值:Tomcat根目錄即解壓目錄
3、運行startup.bat 不要關閉這個窗口
4、打開瀏覽器測試 http://localhost:8080/

4.Tomcat服務器的目錄結構:

/bin 存放各種平臺下用于啟動和停止Tomcat的命令文件
/config 存放Tomcat服務器的各種配置文件
/lib 存放Tomcat服務器所需的各種JAR文件
/logs 存放Tomcat的日志文件
/temp Tomcat運行時用于存放臨時文件
/webapps 當發布Web應用時,默認會將Web應用的文件發布到于此目錄中
/work Tomcat把由JSP生成的Servlet放于此目錄下

5.WEB-INF目錄詳解:
WEB-INF是java的web應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。
如何讓hah.jsp成為歡迎界面?
在web-inf文件夾中配置項目部署文件web.xml。
添加標簽
<welcome-file-list>
<welcome-file>/hah.jsp</welcome-file>
<welcome-file-list>
修改完web.xml,需要重啟Tomcat

6.myeclipse配置jre:

window->preferences->java->installed jre->add->java(jdk的安裝目錄)
myeclipse集成tomcat:
window->preferences->myeclipse->servers->tomcat->選版本->選enable(并引入tomcat的安裝根目錄)->在版本下選擇jdk

7.修改tomcat默認端口號:

tomcat > conf > server.xml 文件中找到下面代碼
<Connector port="8080" Protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>

JSP基礎語法

1.Jsp簡介

1、JSP:Java Server Pages,其根本是一個簡化的Servlet設計,它實現了在Java中使用HTML標簽。
2、Jsp是一種動態網頁技術標準,也是JEE標準
3、Jsp與Servlet一樣,是在服務器端執行的。
4.jsp 頁面元素構成:
[靜態內容,指令,表達式,小腳本,聲明,注釋]

2.常見動態網站開發技術對比:

JSP 基于java平臺 跨平臺,安全高,適于企業級web
Asp.net 簡單易學 安全性差 跨平臺性差
php 簡單 高效 成本低 開發周期短 適合中小型企業web應用開發

3.Jsp指令:

1、page指令:通常位置jsp頁面頂端,同一個頁面可以有多個
(1)語法格式:<%@ page 屬性1="屬性值" 屬性2="屬性值1,屬性值2"...屬性n="屬性n"(鍵值對)%>
(2)常用屬性
? language 指定JSP頁面使用的腳本語言 默認值為java
? import 通過該屬性來引用腳本語言中使用的類文件 默認值為無
? contentType 用來指定JSP頁面所采用的編碼方式 默認值為text/html,ISO-885901
如:<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
2、include指令:將外部文件嵌入當前文件,同時解析這個頁面的JSP語句,是包含指令
3、taglib指令:使用標簽庫定義新的自定義標簽,在JSP頁面中啟用制定行為

4.jsp 注釋:

<!-- html注釋 --> //客戶端可見
<%-- jsp注釋 --> //客戶端不可見
jsp腳本中使用java注釋
//單行注釋 //客戶端不可見
/**/多行注釋 //客戶端不可見

5.JSP腳本:
在JSP頁面中執行的java代碼。語法:<%Java 代碼%>

6.JSP聲明:

1、指在JSP頁面中中定義變量或者方法
2、語法:<%! java代碼 %>

7.jsp表達式:

<% = 表達式 %>中不以分號結束
調用聲明的變量或函數

8.生命周期:

1、生成字節碼文件,執行jspInit()只在第一次請求時執行,重復請求僅只執行一次。生成的文件在work里,【每次修改會重新編譯,生成新的字節碼文件】
2、jspService()用于處理用戶請求,對于每一個請求,JSP引擎會創建一個新的線程來處理該請求【JSP多線程:降低資源需求,提高系統并發量及響應時間,但注意同步問題】。
3、由于該Servlet常駐于內存里,所以響應速度非常快。

JSP內置對象

1.內置對象簡介:

1、JSP內置對象是Web容器創建的一組對象,【不使用new關鍵字】就可以使用的內置對象。例如:out
2、JSP九大內置對象:
out(輸出),request(請求),response(響應),session(回話),application(應用)(五大常用對象)
Page,pageContext,exception.config(四個不太常用對象)

2.out對象:

1、void printLn() 向客戶端打印字符串;
2、void clear() 清除緩沖區內容,如果在flush之后調用會拋出異常。
3、void clearBuffer() 清除緩沖區內容,如果在flush之后調用不會拋出異常。
4、void flush() 將緩沖區內容輸出到客戶端。
5、int getBufferSize() 返回緩沖區以字節數大小,如不設緩沖區則為0.
6、int getRemaining() 返回緩沖區還剩余多少可用
7、boolean is AutoFlush() 返回緩沖區滿時,是自動清空還是拋出異常
8、void close() 關閉輸出流。
【out.flush();
out.clear();
這樣會產生異常

3.提交表單get與post區別:

1.get:以【明文】方式,通過URL提交數據,數據在URL中【可以看到】。提交數據最多不超過【2KB】。安全性較低,但效率比post方式高。適合提交數據量不大,且安全要求不高的數據:比如:搜索、查詢等功能。
2.post:將用戶提交的信息封裝在HTML HEADER內。適合提交數據量大,安全性高的用戶信息。如:注冊、修改、上傳等功能。

4.Request對象

解決提交參數亂碼,不能URL中文亂碼
request.setCharacterEncoding="utf-8"
圖片描述
圖片描述

5.Response對象

圖片描述
PrintWriter比out對象先打印。調用out.flush()可以解決
PrintWriter outer=response.getWriter();

6.請求轉發與請求重定向的區別:

一、請求重定向:服務端responce.sendRedirect("xx.jsp")重定向。【客戶端行為】:即客戶端會訪問兩次,第一次訪問后會立即跳轉到第二個重定向頁面上,【從本質上講等于兩次請求】,而前一次的請求封裝的request對象不會保存,地址欄的URL地址會改變。
二、請求轉發:服務端request.getRequestDispatcher("xx.jsp").forward(request,response)請求轉發。forward(request,response)用于保存內置對象request和response。【服務器行為】:服務器會代替客戶端去訪問轉發頁面,【從本質是一次請求】,轉發后請求對象會保存,地址欄的URL地址不會改變。

7.session對象

一、什么是session
1、session表示客戶端與服務器的一次會話
2、Web中的session指:用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽網站所花費的時間。
3、從上述定義中可以看到,session實際是一個【特定的時間概念】
4、服務器的內存中,保存著同用戶的session。
session存在于服務器端,并且每一個用戶對應一個session;
(1)session是JSP的一個內置對象,是HttpSession類的實例。
(2)從客戶打開瀏覽器并連接到服務器開始,到客戶關閉瀏覽器窗口斷開與服務器的連接,這一過程成為一個會話。
(3)當客戶在同一個網站的不同頁面之間進行切換并訪問時,服務器是通過session來判斷這些請求是否來自同一個客戶。
(4)session一般有時間限制,長時間不操作可能會導致session失效。session失效后原session中保存的屬性值會全部丟失。
(5)setMaxInactiveInterval(int i) 該方法可直接設定session的生存時間,超過該時間session會重新創建。(單位:秒)
session的常用方法如圖。在獲取創建時間時,可通過以下格式類獲取標準格式的時間:
SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日 HH:mm:ss);
Date d = new Date(session.getCreationTime());
sdf.format(d);
圖片描述

session的生命周期 活動:
某次會話當中通過超鏈接打開的新頁面屬于同一次會話
只要當前會話頁面沒有全部關閉,重新打開新的瀏覽器窗口訪問同意項目資源時屬于同一次會話。
除非本次會話的所有頁面都關閉后再重新訪問某個新的jsp或者servlet將會創建新的會話。
注意事項:
注意原有的會話還存在,只是這個舊的sessionId仍然存在于服務器端,只不過再也沒有客戶端會攜帶它然后交予服務器端校驗
session銷毀的三種方式:
1:調用session.invalidate()方法
2:session過期(超時)
3;服務器重新啟動
設置session超時的兩種方式:
tomcat默認session超時時間為30分鐘
1:session.setMaxInactiveInterval(時間);//單位是秒
2:在web.xml配置
<session-config>
<session-timeout>
10
<session-timeout>
<session-config> //單位是分鐘

8.application對象

application介紹:
1、實現了用戶間數據的共享,可存放全局變量。(類似靜態對象)
2、開始于服務器啟動,終止于服務器的關閉(生命周期)
3、在用戶的前后連接或不同用戶之間的連接中,可以對application對象的同一屬性進行操作
4、在任何地方對application對象屬性進行操作,都將影響到其他用戶對此的訪問
5、application對象是ServletContext類的實例
圖片描述

9.page對象

一、page對象:是指指向當前JSP頁面本身,有點像類中的this指針,它是java.long.Object類的實例。
二、常用方法如下:主要是Object類中聲明的方法
圖片描述

10.pageContext對象

1、pageContext對象提供了對JSP頁面內【所有】的對象及名字空間的訪問。【權限很高】
2、可以訪問到本頁所在的session,也可以取本頁面所在的application的某一屬性值
3、簡單說,pageContext對象相當于頁面中所有功能的集大成者
4、pageContext對象的本類名也叫pageContext
二、常用方法如下:forward("xxx.jsp")進行跳轉,include("yyy.jsp");會在頁面中包含yyy.jsp頁面
圖片描述

11.config對象

ServletContext getServletContext()返回含有服務器相關信息的ServletContext對象
String getInitParameter(String name)返回初始化參數的值
Enumeration getInitParameterNames()返回Servlet初始化所需所有參數的枚舉
圖片描述

12.Exception對象

一、Exception對象:實際上是java.lang.Throwable的對象
二、使用方法:
1、在可能會拋出異常的頁面page指令里,設置errorPage="xxx.jsp",表示出現異常將拋給xxx頁面去處理
2、在xxx頁面里,要使用Exception對象,需要把page指令里的isErrorPage屬性設置為true。
三、常用方法:getMessage()和toString()方法
圖片描述

Javabean

1.什么是javabean:

1、Javabeans就是符合某種特定規范Java類。使用Javabeans的好處是【解決代碼的重復編寫】,減少代碼冗余,功能區分明確,提高代碼的維護性。
2、設計原則四點:公有類,屬性私有,包含無參的共有構造方法,getter和setter方法封裝屬性
圖片描述

2.什么是JSP動作元素:

什么是JSP動作元素:
(1)JSP動作元素為請求處理階段提供信息。
(2)動作元素遵循XML元素的語法。有一個包含元素名的開始標簽,可以有屬性、可選內容,以及結束標簽。
JSP動作分為以下幾類:
圖片描述

3.普通方式應用Javabean:

一、像使用普通java類一樣
1、創建一個web project項目。
2、在src文件下,創建一個包,在包中創建一個類,滿足設計原則即可
3、在index.jsp頁面中通過import導入之前創建的類(import="包名.類名")
4、通過使用new創建Javabean實例(創建對象)
5、使用set方法賦值
6、使用get方法取值

4.UseBean動作元素:
<jsp:useBean id="標識符(類似于Java中的變量名)" class="java類名(需要將包名一同寫入)" scope="作用范圍(默認是page)">

5.<jsp:setProperty>動作:

給【已經實例化的Javabean對象的屬性賦值】,一共有四種形式。
1、需要表單提交屬性:<jsp:setProperty name="Javabean實例名" property="*"/>: 與之前頁面提交的表單的【所有屬性進行匹配】,若有與javabean類屬性名相同的,則進行賦值。比如表壇提交了username="xxx",而javabean里有username屬性,則對其進行賦值
2、需要表單提交屬性<jsp:setPropery name="Javabean實例名" property="javabean屬性名" />:對【指定的屬性進行匹配】
3、手動設置屬性:<jsp:setProperty name = "Javabean實例名" property="Javabean屬性名" value="BeanValue" />
4、與request參數有關,通過url傳參 :<jsp:setProperty name="Javabean實例名" property="propertyName" param="request對象中的參數名" />

6.<jsp:getProperty>動作:

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

〈jsp:getProperty name="javabean實例名" property="javabean屬性名"〉

7.JavaBean 4種作用域范圍 :

分別為page、request、session、application,它們通過<jsp:useBean>標簽的scope屬性進行設置。這4種范圍雖然存在很大的區別,但它們與JSP頁面中的page、request、session、application范圍相對應。

page范圍:與當前頁面相對應,JavaBean的生命周期存在于一個頁面之中,當頁面關閉時JavaBean被銷毀。

request范圍:與JSP的request生命周期相對應,JavaBean的生命周期存在于request對象之中,當request對象銷毀時JavaBean也被銷毀。

session范圍:與JSP的session生命周期相對應,JavaBean的生命周期存在于session會話之中,當session超時或會話結束時JavaBean被銷毀。

application范圍:與JSP的application生命周期相對應,在各個用戶與服務器之間共享,只有當服務器關閉時JavaBean才被銷毀。

這4種作用范圍與JavaBean的生命周期是息息相關的,當JavaBean被創建后,通過<jsp:setProperty>標簽與<jsp:getProperty>標簽調用時,將會按照page、request、session和application的順序來查找這個JavaBean實例,直至找到一個實例對象為止,如果在這4個范圍內都找不到JavaBean實例,則拋出異常。

8.Model1

Model1分為三層:
1.界面層:由JSP頁面進行與客戶端瀏覽器的交互,可以直接調用JavaBeans
2.業務邏輯層:由JavaBeans進行處理業務邏輯,封裝數據,并與數據庫層進行交互
3.數據庫層:底層數據庫,可被javaBeans訪問
避免了JSP頁面直接進行業務邏輯處理所帶來的維護性,擴展性差的弱點.體現了分層設計的思想

JSP狀態管理

1.一、http協議的無狀態性
1、無狀態是指,當瀏覽器發送請求給服務器的時候,服務器會響應。但當同一個瀏覽器再次發送請求時,服務器不會知道是剛才那個瀏覽器。
2、簡單說,服務器【不會保存用戶狀態】,不會記得客戶端是否訪問過,所以這就是無狀態協議

2.Cookie的作用:
1.保存用戶對象的追蹤;
2.保存用戶網頁瀏覽記錄與習慣;
3.簡化登錄;
4.容易泄露用戶信息;

3.創建與使用Cookie
一、創建與使用
1、創建Cookie: Cookie newCookie = new Cookie(String key,String value);
2、寫入Cookie: response.addCookie(newCookie);
3、讀取Cookie: Cookie[] cookie = request.getCookies();
二、常用方法如圖

4.Session與Cookie對比
1、保存位置:session在服務器端內存,cookie在客戶端文本
2、保存對象:session保存Object類,cookie保存String
3、生存權:session會話結束即銷毀,cookie可以長期保存在客戶端
4、重要性:session安全性更高,保存重要信息,cookie保存不重要的信息

JSP指令與動作元素

常用的有page、include、taglib指令這三種指令;
page:位于頁面頂端,一個頁面可以包含多個page指令
include:將一個外部文件嵌入jsp中,同時解析這個頁面中的jsp語句。
taglib:使用標簽庫,自定義新的標簽,在jsp中啟動定制行為。

1.include指令動作

指令語法 <% include file="地址"%>。
案例:顯示當前時間的頁面。(1)寫一個只輸出時間的方法的date.jsp。(2)用于顯示的頁面,包含<% include file="date.jsp"%>

include動作標簽語法:<jsp:include page="URL要包含的頁面" flush="true|false"/>

2.include指令和動作的區別

1、包含內容: 指令包含的是【源代碼】,動作包含的是頁面輸出的【結果】
2、生成的servlet:指令會生成一個整體的Servlet;而動作會分別生成兩個,即在一個Servlet中調用另一個Servlet
3、其他區別如圖:
4、【使用場合】:頁面內容不經常變化使用include指令,頁面內容經常變化使用<jsp:include>動作

3.forward動作

1、語法:<jsp:forward page="URL"/>
2、等于服務器內部轉發指令 request.getRequestDispacher("URL").forward(req,res);

4.param動作

1、語法:<jsp:param name="參數名" value="參數值">
2、【常常與<jsp:forward></jsp:forward>一起使用】,并作為其【子標簽】。
3、用于傳遞新參數或者【修改原有參數值】,修改參數時使用form表單里的參數名稱即可。同樣用request.getParameter("參數名")獲取

點擊查看更多內容
25人點贊

若覺得本文不錯,就分享一下吧!

評論

相關文章推薦

正在加載中
意見反饋 幫助中心 APP下載
官方微信

舉報

0/150
提交
取消
lpl竞猜