java web知识总结——【华清远见】
servlet
-
Java web主要用的是sun公司制定的一種用于web服務(wù)器的功能的組件—servlet。
-
做Javaweb項目需要創(chuàng)建javaweb工程,和以往創(chuàng)建普通的Java項目不同,這個需要需要創(chuàng)建maven web項目,我自認(rèn)為創(chuàng)建maven web項目非常重要,其中需要很多細(xì)節(jié)需要注意,因為我在創(chuàng)建maven web項目時有很多次都要創(chuàng)建好幾次才會創(chuàng)建成功。以下是創(chuàng)建maven web項目的步驟
-
選擇maven項目 ,選擇項目的模板為maven-archetype-webapp.
-
設(shè)置項目的名字等信息
-
設(shè)置maven的路徑
-
項目創(chuàng)建成功之后需要進(jìn)行修改,找到項目結(jié)構(gòu),添加java, resources目錄
-
新建文件夾,設(shè)置文件夾類型
-
刪除原來低版本的web.xml文件
-
增加4.0版本的web.xml
-
安裝配置tomcat 服務(wù)器
-
java web項目運行,需要運行在支持java web項目的服務(wù)器上,常見的java web服務(wù)器:
tomcat
JBoss
Resin
Jetty
-
-
單擊右側(cè)的add configuration , 打開配置窗口
-
選擇tomcat
-
選擇tomcat的路徑
-
修改項目的請求路徑
-
項目啟動成功之后,訪問的url:
-
修改控制臺亂碼:
-
servlet的配置
要繼承父類HttpServlet,在這里我也出現(xiàn)很多問題,繼承父類時有時候會創(chuàng)建不上,經(jīng)過我自己去網(wǎng)上查閱才知道我的servlet包沒有導(dǎo)入進(jìn)去,我的最終解決方案是File–>Project Structure–>Libraries–>點左邊的"+"–>Java–>tomcat–>lib–>servlet-api.jar,導(dǎo)入jar包后問題得以解決。
servlet類
servlet的一般有四個步驟:這四個步驟對于我來說很實用,每次都會按照這個思路進(jìn)行編寫代碼
- 設(shè)置編碼方式
- 獲取參數(shù)
- 處理數(shù)據(jù)
- 響應(yīng)結(jié)果
web.xml配置
<servlet> <!--給servlet命名--> <servlet-name>login</servlet-name> <!--servlet的類名--> <servlet-class>action.LoginServlet</servlet-class> </servlet> <servlet-mapping> <!--使用servlet的名字, 通過這個名字,找到servlet對應(yīng)的類--> <servlet-name>login</servlet-name> <!--servlet對應(yīng)的url地址 , 通過在瀏覽器中使用這個地址 ① 瀏覽器地址欄輸入這個地址 ② form的action , 表單提交使用 ③ 超鏈接中使用 --> <url-pattern>/login</url-pattern> </servlet-mapping>servlet的執(zhí)行方式
- 1.建立連接(ip:port):首先瀏覽器里面的通信模塊先跟服務(wù)器的通信模塊建立連接
- 2.發(fā)送請求(請求數(shù)據(jù)包):是瀏覽器發(fā)請求給服務(wù)器的通信模塊
- 3.tomcat解析請求數(shù)據(jù)包。將請求的參數(shù)保存在request對象中,創(chuàng)建一個response對象。
- 4.tomcat容器創(chuàng)建servlet對象
- 5.調(diào)用service方法即service(request,response)
- 6.將響應(yīng)數(shù)據(jù)打包
- 7.響應(yīng)結(jié)果(響應(yīng)數(shù)據(jù)包)
- 8.瀏覽器,解析響應(yīng)結(jié)果,渲染到網(wǎng)頁中
- 9.關(guān)閉連接
瀏覽器的緩存方式
-
服務(wù)器端:分為靜態(tài)內(nèi)容和動態(tài)內(nèi)容
-
瀏覽器端:給定一個url地址,如果是靜態(tài)內(nèi)容就找緩存,緩存有就不再訪問服務(wù)器了,目的是為了減少和服務(wù)器的交互。如果不希望訪問緩存的內(nèi)容,那么每次訪問的時候就給url地址帶不同的參數(shù)。如果是動態(tài)內(nèi)容,就訪問服務(wù)器。
jsp
jsp是一種運行在服務(wù)器端的頁面, 它里面包含html, 嵌入一些java語言, 在服務(wù)器(tomcat)上經(jīng)過解析轉(zhuǎn)換, 輸出為html頁面。
jsp不需要配置,直接用他的路徑和文件名進(jìn)行訪問,jsp的本質(zhì)還是servlet。
轉(zhuǎn)發(fā)和重定向
轉(zhuǎn)發(fā)的就是一個請求處理了一部分功能,然后開始另一個請求處理剩下的功能,其本質(zhì)就是一個請求。轉(zhuǎn)發(fā)是共享request,response對象 ,因此可以把需要轉(zhuǎn)發(fā)的數(shù)據(jù)保存在request對象中。瀏覽器的地址欄地址保存不變。(顯示第一個請求的地址)
一下是轉(zhuǎn)發(fā)的代碼:
// 3. 轉(zhuǎn)發(fā)到show.jsp // **** 轉(zhuǎn)發(fā)的目的是把數(shù)據(jù)傳輸?shù)絡(luò)sp頁面上,讓jsp頁面可以使用 req.setAttribute("emp" , emp); req.setAttribute("emps" , emps); req.setAttribute("nowtime" , nowTime); req.setAttribute("age" , age); req.setAttribute("emp1" , emp1); req.setAttribute("age1" , age1); RequestDispatcher requestDispatcher = req.getRequestDispatcher("show.jsp"); requestDispatcher.forward(req,resp);重定向是一個請求的功能完成了,然后開啟另一個請求,做另一個功能。 本質(zhì)是兩個請求。(第一個請求是我們主動發(fā)的, 第二個請求是瀏覽器收到302代碼和重定向的url地址, 然后瀏覽器主動發(fā)送的請求。)重定向因為是兩個不同的請求,所以是兩個不同的request對象,因此不能共享數(shù)據(jù)。
瀏覽器地址欄的地址是顯示重定向的地址。(顯示第二個請求的地址)
resp.sendRedirect("show.jsp"); // 重定向el表達(dá)式
jsp頁面上,用于方便的獲取到轉(zhuǎn)發(fā)到j(luò)sp頁面上的數(shù)據(jù)的一種表達(dá)式語言。
語法規(guī)則: ${變量} , ${對象.屬性}
cookie
-
cookie:用于保存客戶端的狀態(tài)的計數(shù)。 當(dāng)我們有多次請求的時候,這個多次請求被看做一個整體,這個整體中有些數(shù)據(jù)需要保存的時候,可以使用cookie,把數(shù)據(jù)保存在瀏覽器中。
-
cookie的使用方式
- 服務(wù)器端代碼中,創(chuàng)建cookie對象,在response中添加cookie
- 客戶端訪問服務(wù)器的時候,會將把當(dāng)前訪問路徑有關(guān)的cookie發(fā)送到服務(wù)器端
- 服務(wù)器端可以在request中獲取到cookie數(shù)據(jù),然后對這些數(shù)據(jù)進(jìn)行使用
- 瀏覽器可以設(shè)置禁用cookie,或者用戶可以刪除cookie數(shù)據(jù),用戶可以查看到cookie數(shù)據(jù),所以重要數(shù)據(jù)不能直接保存在cookie中。
- cookie中存儲的是string , 并且存儲的數(shù)據(jù)大小也有限。
- cookie 可以設(shè)置有效期,過期之后,cookie會被瀏覽器清除掉。
session
session中保存數(shù)據(jù):
getSession(): 規(guī)則就是如果有就根據(jù)sessionid獲取session對象,如果沒有就直接創(chuàng)建一個session對象。
getSession(boolean) : true, 同getSession()功能, false , 如果找不到session對象,就返回null.
// **** 登錄成功的位置 HttpSession session = req.getSession(); // 獲取session對象 session.setAttribute("loginname" , name); // 把數(shù)據(jù)保存在session對 象中session中獲取數(shù)據(jù)
// 獲取session中的數(shù)據(jù): 返回值是Object Object loginname = session.getAttribute("loginname");session中刪除數(shù)據(jù)
// 刪除session中的數(shù)據(jù): session.removeAttribute("loginname");session默認(rèn)在會話期間有效
**發(fā)請求(和服務(wù)器開始會話):**服務(wù)器會創(chuàng)建一個session對象,然后瀏覽器中保存這個session對象的sessionid(cookie:jsession)
**會話期間:**session中的數(shù)據(jù),所有請求都可以共享;request對象是每一次請求,都是一個單獨的新的對象,所以request不能共享數(shù)據(jù)??梢酝ㄟ^request對象的轉(zhuǎn)發(fā),來實現(xiàn)request中的數(shù)據(jù)共享。(servlet轉(zhuǎn)發(fā)到對應(yīng)的jsp)
**關(guān)閉瀏覽器:**關(guān)閉瀏覽器的時候cookie保存的session就消失了,session對象就無效了,會話結(jié)束。
**session會話超時:**可以設(shè)置session的有效期,如果沒有設(shè)置session的有效期,默認(rèn)的有效期是30分鐘。
// 設(shè)置session的有效期 // setMaxInactiveInterval(秒) session.setMaxInactiveInterval(60);設(shè)置session無效:一般在退出系統(tǒng)的時候,需要清空session中保存的數(shù)據(jù),使用invalidate方法,讓session失效。
// 設(shè)置session無效 session.invalidate();cookie和session的區(qū)別
cookie:客戶端狀態(tài)管理的jis
session:服務(wù)器端狀態(tài)管理技術(shù)
過濾器(Filter)
過濾器類型:過濾器是sun提供一個組件, 需要依賴于tomcat容器運行。
**過濾器的執(zhí)行過程:**訪問請求的時候,先根據(jù)過濾器的配置,符號過濾器路徑的請求,則先進(jìn)入到過濾器中執(zhí)行,執(zhí)行結(jié)束之后,再根據(jù)情況,看是否需要進(jìn)入到ervle中。
學(xué)習(xí)總結(jié)
在本階段的學(xué)習(xí)中,可以由一下一句話概括"一講就懂,一點就通,一做就廢",其實由剛開始學(xué)習(xí)Java的焦慮和不解已經(jīng)在慢慢的試著去解決和適應(yīng)了,以前遇到不會的問題不知道如何下手解決,慢慢的跟著老師的步伐就已經(jīng)開始學(xué)會"找錯"了,在課堂上和平時如果遇到由bug我會先試著調(diào)試自己解決,實在不會的我會再問老師和同學(xué),在這一點上我感覺剛開始學(xué)習(xí)有點進(jìn)步。還有就是最先開始接觸Java代碼時我心里有點抵觸,在后面老師和同學(xué)的幫助下我已經(jīng)調(diào)整了心態(tài),也漸漸的愛上了敲代碼,特別是在解決錯誤成功的喜悅。
總結(jié)
以上是生活随笔為你收集整理的java web知识总结——【华清远见】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华夏ERP在虚拟机Ubuntu上的安装(
- 下一篇: html 字段唯一性校验,使用Model