日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Wbe开发快速入门

發布時間:2023/12/20 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Wbe开发快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.servlet知識點小結

?

1.1. Servlet基礎 ??

1) 什么是Servlet? ???

容器: 裝載Servlet所使用的服務器.

組件: 是用于處理用戶(瀏覽器)所發送的請求.

??????servlet就是組件.

2)?如何開發一個Servlet? ???

1.創建一個class

2.繼承HttpServlet類

3.覆蓋service()方法
??---選擇參數HttpServletRequest與HttpServletResponse的方法

4.配置web.xml文件.

3) 什么是Servlet容器? ?

???用于裝載servlet的服務器就是Servlet容器.我們這里指的是tomcat服務
???.??

?

1.2. Servlet核心 ???

1.2.1. 核心的類與接口 ??

1) Servlet接口

2) GenericServlet抽象類 --- 實現init()方法以及destory()方法

3) HttpServlet抽象類

4) ServletRequest,ServletResponse接口

5) ServletConfig接口

a. ServletContext getServletContext();

b. String getInitParameter(String paraName);

6) HttpServletRequest接口---ServletRequest接口的子接口

a. String getParameter(String name);

b. String[] getParameterValues(String name);

c. setCharacterEncoding(String code);

d. RequestDispatcher getRequestDispatcher(String url);

e. setAttribute(String name,Object obj);

f. Object getAttribute(String name);

g. removeAttribute(String name);

h. String getContextPath();

i. String getRequestURI();

j. HttpSession getSession()/getSession(boolean flag);

k. Cookie[] getCookies();

7) HttpServletResponse接口?--- ServletResponse接口的子接口

a. setContentType(String str);

b. PrintWriter getWriter();

c. sendRedirect(String url);

d. encodeURL(String url); --- 作用于頁面的URL重載

e. encodeRedirectURL(String url); ?

????????????--- 作用于Servlet中的URL重載(只支持重定向)

f. addCookie(Cookie cookie);

8) ServletContext接口

a. String getRealPath(String str); ?--- 獲取該項目所在服務器的物理路徑

b. setAttribute(String name,Object obj);

c. Object getAttribute(String name);

d. removeAttribute(String name);

e. String getInitParameter(String name);

1.2.2. servlet的生命周期 ??

1)?什么是servlet生命周期?

Servlet對象在服務器中被創建,被執行,被銷毀的過程就是servlet的聲明
???周期.

2) servlet生命周期的四個階段?

???1. 當服務器啟動時,servlet的class被裝載.

???2. 當第一次請求到來的時候,servlet對象被創建(服務器調用其init())

???3. 在服務器銷毀該對象之前,該對象一直處于保存狀態.

???4. servlet對象被銷毀,服務器調用的它的destory()方法.

<load-on-startup>配置

3) 如何override init方法?

init()或者init(ServletConfig config)

在方法中調用super.init()即可.

4)?servlet的初始化參數如何配置?

<servlet>

<init-param>

<param-name>iphone</param-name>

<param-value>蘋果手機</param-value>

</init-param>

</servlet>

?

1.2.3. 表單處理 ???

1)?如何讀取表單中的參數

???request.getParameter(參數名);

???參數名與form表單中的控件的name屬性一致.

???form表單中的控件必須存在name屬性,否則該控件的內容

???將無法提交到服務器中.

2)?如何處理中文

???1. request.setCharacterEncoding(編碼格式);
??????設置request編碼個是的方式只支持表單的post提交方式.

???2. URLEncoder與URLDecoder進行編碼重組.

??????首先使用URLEncoder將參數重新編碼.

??????在用URLDecoder重新編碼的數據進行解碼.

??????第二種方式無論是post提交還是get提交方式都支持.但是當

??????使用post方式進行提交的時候不能與request.setCharacterEncoding

??????方法一起使用,否則會出現重復編碼的問題,導致中文亂碼.

??????對于get方式沒有影響.

?

1.2.4. get請求與post請求 ???

1)?哪一些是get請求,哪一些是post請求?

???GET:

???<a> 超鏈接的提交
???<form method=”get”> 表單的提交方式可以設置為get
???location.href 跳轉的提交也是get方式

???POST:

???<form method=”post”> 表單提交方式為post時.

2) get請求不post請求的區別?
???1. get方式會將參數放在地址欄上不安全
??????post方式是將參數放到數據包的實體中.

???2. get方式傳遞參數有限制,限制取決于地址欄可填寫的內容大小
??????post方式在理論上沒有參數的個數限制.可以傳無數個參數.
???3. get方式需要手動設置中文參數的編碼方式.

??????post方式是由服務器繼續中文參數編碼,只需設置編碼格式即可.

?

1.2.5. 轉發與重定向 ???

1) 什么是重定向?

???當服務器處理完客戶端的請求后,會將一個地址以及302的狀態碼返回給瀏覽
???,瀏覽器接到狀態碼和地址后會自動向該地址再次發送請求的過程.二次訪
???問服務器是由瀏覽器自己完成的,不需要用戶的操作.

2) 如何重定向?
???response.sendRedirect(請求地址)

3) 重定向的特點?
???1. 兩次請求
???2. 地址欄會更變
???3. 因為是兩次請求所以request對象和response對象不能通用.

4) 重定向編程需要注意的問題?

???1. 不能與PrintWriter對象一起使用.
??????out對象的close()方法(out.flush())會將response對象中的內容清空

??????一旦response對象的內容被清空,那么重定向會失效.

???2. 重定向可以跳轉到所在服務器中的任何一個項目下.不局限于本項目中的

??????請求或頁面.

5)?什么是轉發?

???當服務器對用戶的請求進行處理時,在處理需要其他serlvet或頁面支持的時
???候會將該請求與所需要的地址發送serlvet引擎中.在發送的過程中會攜帶一
???301的狀態碼.serlvet引擎在檢測到301的狀態碼后,會將該請求轉個目標
???地址.兩個地址實際上處理的是同一個請求.

6)?如何轉發?

request.getRequestDispatcher(轉發地址).forword(requert, response);

7) 轉發的特點?
???1. 一次請求
???2. 地址欄不會更變
???3. 兩個處理請求的位置共用一個request對象和response對象.

8) 轉發編程需要注意的問題?
???1. 與PrintWriter對象不兼容.(與重定向類似)

???2. 轉發的位置只能與原位置處于同一個項目下.

9) 轉發與重定向的區別
???1. 請求次數不同

???2. 地址欄的變更狀態不同

???3. request對象與response對象的共用情況不同

???4. 訪問位置限制不同.

2.狀態管理(Cookie)

1) 什么是狀態管理

???將客戶端(一般是瀏覽器)與服務器之間的多次交互當作一個整體來看待,即
???將多次操作所涉及的數據記錄下來。

2) 怎樣進行狀態管理

ü 第一種方式,cookie(在客戶端管理用戶的狀態)

ü 第二種方式,session(在服務器端管理用戶的狀態)

3) cookie

瀏覽器會將這些數據保存起來。當瀏覽器再次訪問服務器時,會將這些數據以cookie消息頭的形式發送給服務器。通過這種方式,可以管理用戶的狀態。

2.1 創建cookie

Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);

瀏覽器訪問服務器,激活服務器開始創建Cookie.

之后將創建好的Cookie綁定到Response對象中,然后再發送到

瀏覽器中.瀏覽器解析Response對象,將對象中的Cooike保存到

內存當中.

2.2 查找cookie

//如果沒有cookie,則返回null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = cookie.getValue();

2.3 保存和查詢Cookie流程

a. 瀏覽器向服務器發送addCookie請求

服務器中的AddCookieServlet創建了兩個Cookie:cookie和cookie2

b. 服務器端執行語句response.addCookie(cookie);生成消息頭“set-cookie”,

并將兩個Cookie以鍵值對的方式(“name=aaa”、“passwd=123”)存放在消息頭中發 送給瀏覽器

c. 瀏覽器將Cookie信息保存到本地內存中

d. 瀏覽器繼續向服務器發送請求(帶著消息頭cookie)

服務器端的FindCookieServlet找到Cookie信息,并顯示給瀏覽器

2.4 cookie保存時的編碼問題

cookie的值只能是Ascii碼字符,如果是中文,需要將中文轉換成Ascii碼字符形式。 可以使用URLEncoder.encode()方法和URLDecoder.decode()方法來進行這種轉換。

2.5 Cookie的保存時間

計時單位是秒數.

cookie.setMaxAge(int seconds);
seconds > 0
瀏覽器會將cookie以文件的方式保存在硬盤上。在超過指定的時間以后,會刪除該文件。
seconds < 0
默認值,瀏覽器會將cookie保存在內存里面。叧有當瀏覽器關閉之后,才會刪除。

2.6 刪除cookie

seconds = 0

立即刪除該Cookie?

2.7 cookie的路徑問題

瀏覽器在向服務器上的某個地址發送請求時, 會先比較cookie的路徑與向訪問的路徑(地址)是否匹配,當有匹配的cookie,才會發送。 cookie的路徑可以通過cookie.setPath(String path)方法來設置。 如果沒有設置, 則有一個缺省的路徑,缺省的路徑是生成該cookie的組件的路徑。 比如: /appname/addCookie保存了一個cookie, 則該cookie的路徑就是/appname/addCookie。

2.8 Cookie的限制

cookie可以禁止

cookie的大小有限制(4k左右)

cookie的數量也有限制(瀏覽器大約能保存300個)

cookie的值只能是字符串,要考慮編碼問題。

cookie不安全---用戶能夠隨意更改

3.狀態管理(session)?

瀏覽器訪問服務器時,服務器會創建一個session對象(該對象有一個唯一的id, 一般稱 為sessionId)。服務器在缺省情況下,會將sessionId以cookie機制發送給瀏覽器。當 瀏覽器再次訪問服務器時,會將sessionId發送給服務器。服務器依據sessionId就可以 找到對應的session對象。通過這種方式,就可以管理用戶的狀態。

3.1 如何獲得session對象

方式一:?
HttpSession session = request.getSession(boolean flag);
flag = true: 服務器會先查看請求中是否包含sessionId, 如果沒有,則創建一個session對象。 如果有,則依據sessionId去查找對應的session對象,如果找到,則返回。 如果找不到,則創建一個新的session對象。
flag = false: 服務器會先查看請求中是否包含sessionId, 如果沒有,返回null。 如果有,則依據sessionId去查找對應的session對象,如果找到,則返回。 如果找不到,返回null。
方式二
HttpSession session = request.getSession();
與request.getSession(true)等價。

3.2 HttpSession接口提供的一些方法

//獲得sessionId。
String session.getId();
//綁訂數據
session.setAttribute(String name,Object obj);
/* obj最好實現Serializable接口
?* (服務器在對session進行持久化操作時,
?* 比如鈍化、激活,會使用序列化協議)。
?*/
Object session.getAttribute(String name);

//如果name對應的值不存在,返回null。
session.removeAttribute(String name);

3.3 session超時

服務器會將超過指定時間的session對象刪除(在指定的時間內,該session對象沒有使用)。
方式一: session.setMaxInactiveInterval(int seconds);
方式二: 服務器有一個缺省的超時限制,可以通過相應的配置文件來重新設置。 比如可以修改tomcat的web.xml(tomcat_home/conf下面)。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
另外,也可以修改某個應用的web.xml。

3.4 刪除session

session.invalidate();

?

4. jstl與el表達式

4.1.1. jstl是什么? ??

java standard taglib(java標準標簽庫)。

4.1.2. 標簽是什么? ??

sun公司制訂的一種技術規范,用來將jsp頁面中的java代碼使用類似于html當中的標記來替換 的一種技術。這樣做的目的,是為了使jsp頁面更好維護以及更好的測試。

4.1.3. el表達式是什么? ??

sun制訂的一種用于計算的一種規則,早期只能用于給標簽的屬性賦值,現在也可以直接輸出。

4.1.4. el表達式的基本語法 ???

${el表達式}

1) 第一種: 訪問bean的屬性

a. ${user.name}:

???<%=user.getName() %>

jsp引擎會依次從pageContext、request、session、application查找綁訂名為"user" 的對象,如果找到了,就不再向下查找,否則,繼續向下查找。 找到后,調用該對象的getName(),并輸出其值;找不到,則輸出""(空)。

b. 或者也可以使用${user["name"]},效果相同

"name" 表示字符串

c. 或者是${user[propname]},注意propname沒有引號,表示變量

d. 此外,[ ]里面還可以是0,1..這樣的下標,作用是輸出數組里的元素值。

e. 可以使用pageScope,requestScope,sessionScope,applicationScope四個關鍵字指定查找的范圍。

f. ${requestScope.user.name}只到request中去找,不再依次到4個范圍查找了

2) 第二種: 獲得請求參數值

a. ${param.username}

等價于 request.getParameter("username");

b. ${paramValues.interest}

等價于request.getParameterValues("interest");

?

3) 第三種: 計算一個表達式,將結果作為標簽的屬性值或者直接輸出

a. 算術運算

"+" , "-" , "*" , "/" , "%" , 但是要注意,"+"號不能連接字符串。

b. 關系運算

"==" , "!=" , ">" , "<" ,">=" , "<="
可以使用對應的"eq","nq","lt","gt","le","ge"代替。

c. 邏輯運算

"&&","||","!",可以使用"and","or","not"代替。

d. empty運算

判斷一個字符串是否為空,集合內容是否為空,以及綁訂的對象是否存在。

${empty list} 如果list == null 或者 list.size() == 0 返回都為true

4.1.5. 核心標簽的使用 ???

1) 使用步驟

需要將jstl標準標簽庫相關的jar文件copy到WEB-INF\lib。
D:\czh\MyEclipse 5.5.1 GA\eclipse
??\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\ data\libraryset\JSTL1.1\lib\
???jstl.jar

standard.jar

2) 在jsp文件當中,使用taglib指令導入標簽。

3) 使用標簽

a. <c:if test="" var="" scope="">

ü test屬性: 當值為true,執行標簽體的內容,為false,則不執行。

ü var屬性: 指定一個綁訂名。

ü scope屬性: 指定一個綁訂范圍。

???var屬性和scope屬性用于將test的結果綁訂到指定的對象
???(pageContext,request,session,application)上。

?

b. <c:choose>

用于分支,當某個條件滿足,執行某一個分支。每一個分支條件用when標簽來表示。 <c:when test=""> 可出現多次,只用于<c:choose>

ü test屬性: 當值為true,執行標簽體的內容

?

<c:otherwise> 只出現1次,只用于<c:choose> 當其它分支都不滿足條件,則執行該標簽體的內容。

c. <c:forEach var="" items="" varStatus="">

?

用于遍歷集合items屬性:指定要遍歷的集合。

ü var屬性: 指定一個綁訂名,jsp引擎會從集合當中取一個對象,綁訂到 pageContext對象上。

ü varStatus屬性: 指定一個綁訂名,對應的綁訂值是一個java對象,封裝了遍 歷時的一些信息,包括當前遍歷的對象的下標(index)以及 是第幾次(count)遍歷。

d. <c:url>

當用戶禁止cookie以后,會自動在地址后面添加sessionId。 當使用絕對路徑時,會自動在地址前添加應用名。

ü value屬性:指定地址。在表單提交、鏈接當中,可以使用該標簽。

e. <c:set var="" scope="" value="">

綁訂一個對象到指定的范圍。

value屬性: 綁訂值。

f. <c:remove var="" scope="">

解除綁訂

?

g. <c:catch var="">

處理異常,會將異常信息封裝成一個對象,綁訂到pageContext對象上。

?

h. <c:import url="">

url指定一個jsp文件的地址,jsp會在運行時調用這個jsp。

?

i. <c:redirect url="">

重定向到另外一個地址。url屬性指定重定向的地址。

?

j. <c:out value="" default="" escapeXml="">

用于輸出el表達式的值。

ü value屬性: 指定輸出的值

ü default屬性: 指定缺省值。

ü escapeXml屬性: 設置成true,會將value中的特殊字符替換成相應的實體。缺省值就是true。

?

5. 過濾器

1) 什么是過濾器

servlet規范當中定義的一種特殊的,用于對servlet容器的調用過程進行攔截。

?

1) 瀏覽器發送請求給服務器

2) 服務器的Servlet引擎創建Request對象&&Response對象

3) Servlet引擎先調用過濾器的doFilter方法,該方法有兩個參數request和response,

(在過濾器中可以訪問到Request對象&&Response對象)

4) 過濾器對攔截的內容進行處理

5) 之后調用SomeServlet的service方法

6) service方法執行

7) service方法執行結束后,將結果返回到過濾器

8) 過濾器將service方法返回的結果再次進行過濾

9) 最后,Servlet引擎將結果返回給瀏覽器

2) 怎樣寫一個過濾器

step1

寫一個java類,實現一個Filter接口。

step2 doFilter方法里,實現過濾的邏輯。

step3 配置(web.xml)。

3) 配置初始化參數

step1 web.xml中,使用<init-param>元素來配置初始化參數

step2 Filter類中,使用FilterConfig.getInitParameter(String paraName);獲得初始化參數。

4) 過濾器的優先級

當有多個過濾器都滿足過濾的條件時,依據<filter-mapping>的先后順序依次執行。

5) 過濾器的優點

a. 可以將多個web組件相同的邏輯寫在一個過濾器當中,方便代碼的維護

b. 可實現代碼的“可插拔性"。

給一個軟件增加或者減少某個功能不會影響已經存在的功能。

?

6. 監聽器

1) 什么是監聽器?

servlet規范當中定義的一種特殊的類,作用是監聽容器當中產生的一些事件并進行相應的處理。 容器產生的事件指的是兩大類事件:

第一大類

生命周期相關的事件,指的是當容器創建或者銷毀
request,session,ServletContext對象時產生的事件。

第二大類

綁訂事件,指的是當調用request,session,ServletContext對象的
setAttribute,removeAttribute時產生的事件。

?

2) 如何寫監聽器

step1 寫一個java類,實現特定的監聽器接口類(依據要監聽的事件類型)。

step2 在接口聲明的方法中,實現監聽的邏輯。

step3 配置(web.xml)。

?

3) ServletContext接口

web服務器在啟動時,會為每一個已經部署的應用創建唯一的一個
ServletContext實例。 該實例會一直存在,除非服務器關閉或者應用被刪除。
注意:每個應用對應唯一的一個ServletContext實例

a. 如何獲得ServletContext實例。

GenericServlet提供了getServletContext()方法。

HttpSession提供了getServletContext()方法。

ServletConfig提供了getServletContext()方法。

b. 常用方法

ü 綁訂數據

setAttribute(String name,Object obj);

getAttribute(String name);

removeAttribute(String name);

ü 配置全局的初始化參數

step1 web.xml中,使用<context-param>配置的參數,可以被所有的
???servlet共享。

step2 使用String ServletContext.getInitParameter(String paraName);

ü 依據邏輯路徑獲得實際部署時的物理路徑。

String ServletContext.getRealPath(String url);

?

?

總結

以上是生活随笔為你收集整理的Java Wbe开发快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。