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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java web知识总结——【华清远见】

發(fā)布時(shí)間:2024/1/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java web知识总结——【华清远见】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

servlet

  • Java web主要用的是sun公司制定的一種用于web服務(wù)器的功能的組件—servlet。

  • 做Javaweb項(xiàng)目需要?jiǎng)?chuàng)建javaweb工程,和以往創(chuàng)建普通的Java項(xiàng)目不同,這個(gè)需要需要?jiǎng)?chuàng)建maven web項(xiàng)目,我自認(rèn)為創(chuàng)建maven web項(xiàng)目非常重要,其中需要很多細(xì)節(jié)需要注意,因?yàn)槲以趧?chuàng)建maven web項(xiàng)目時(shí)有很多次都要?jiǎng)?chuàng)建好幾次才會(huì)創(chuàng)建成功。以下是創(chuàng)建maven web項(xiàng)目的步驟

    • 選擇maven項(xiàng)目 ,選擇項(xiàng)目的模板為maven-archetype-webapp.

    • 設(shè)置項(xiàng)目的名字等信息

    • 設(shè)置maven的路徑

    • 項(xiàng)目創(chuàng)建成功之后需要進(jìn)行修改,找到項(xiàng)目結(jié)構(gòu),添加java, resources目錄

    • 新建文件夾,設(shè)置文件夾類型

    • 刪除原來(lái)低版本的web.xml文件

    • 增加4.0版本的web.xml

    • 安裝配置tomcat 服務(wù)器

      • java web項(xiàng)目運(yùn)行,需要運(yùn)行在支持java web項(xiàng)目的服務(wù)器上,常見(jiàn)的java web服務(wù)器:

        tomcat

        JBoss

        Resin

        Jetty

    • 單擊右側(cè)的add configuration , 打開(kāi)配置窗口

    • 選擇tomcat

    • 選擇tomcat的路徑

    • 修改項(xiàng)目的請(qǐng)求路徑

    • 項(xiàng)目啟動(dòng)成功之后,訪問(wèn)的url:

    • 修改控制臺(tái)亂碼:

servlet的配置

要繼承父類HttpServlet,在這里我也出現(xiàn)很多問(wèn)題,繼承父類時(shí)有時(shí)候會(huì)創(chuàng)建不上,經(jīng)過(guò)我自己去網(wǎng)上查閱才知道我的servlet包沒(méi)有導(dǎo)入進(jìn)去,我的最終解決方案File–>Project Structure–>Libraries–>點(diǎn)左邊的"+"–>Java–>tomcat–>lib–>servlet-api.jar,導(dǎo)入jar包后問(wèn)題得以解決。

servlet類

servlet的一般有四個(gè)步驟:這四個(gè)步驟對(duì)于我來(lái)說(shuō)很實(shí)用,每次都會(huì)按照這個(gè)思路進(jìn)行編寫(xiě)代碼

  • 設(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的名字, 通過(guò)這個(gè)名字,找到servlet對(duì)應(yīng)的類--> <servlet-name>login</servlet-name> <!--servlet對(duì)應(yīng)的url地址 , 通過(guò)在瀏覽器中使用這個(gè)地址 ① 瀏覽器地址欄輸入這個(gè)地址 ② form的action , 表單提交使用 ③ 超鏈接中使用 --> <url-pattern>/login</url-pattern> </servlet-mapping>

servlet的執(zhí)行方式

  • 1.建立連接(ip:port):首先瀏覽器里面的通信模塊先跟服務(wù)器的通信模塊建立連接
  • 2.發(fā)送請(qǐng)求(請(qǐng)求數(shù)據(jù)包):是瀏覽器發(fā)請(qǐng)求給服務(wù)器的通信模塊
  • 3.tomcat解析請(qǐng)求數(shù)據(jù)包。將請(qǐng)求的參數(shù)保存在request對(duì)象中,創(chuàng)建一個(gè)response對(duì)象。
  • 4.tomcat容器創(chuàng)建servlet對(duì)象
  • 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)頁(yè)中
  • 9.關(guān)閉連接

瀏覽器的緩存方式

  • 服務(wù)器端:分為靜態(tài)內(nèi)容和動(dòng)態(tài)內(nèi)容

  • 瀏覽器端:給定一個(gè)url地址,如果是靜態(tài)內(nèi)容就找緩存,緩存有就不再訪問(wèn)服務(wù)器了,目的是為了減少和服務(wù)器的交互。如果不希望訪問(wèn)緩存的內(nèi)容,那么每次訪問(wèn)的時(shí)候就給url地址帶不同的參數(shù)。如果是動(dòng)態(tài)內(nèi)容,就訪問(wèn)服務(wù)器。

jsp

jsp是一種運(yùn)行在服務(wù)器端的頁(yè)面, 它里面包含html, 嵌入一些java語(yǔ)言, 在服務(wù)器(tomcat)上經(jīng)過(guò)解析轉(zhuǎn)換, 輸出為html頁(yè)面。

jsp不需要配置,直接用他的路徑和文件名進(jìn)行訪問(wèn),jsp的本質(zhì)還是servlet。

轉(zhuǎn)發(fā)和重定向

轉(zhuǎn)發(fā)的就是一個(gè)請(qǐng)求處理了一部分功能,然后開(kāi)始另一個(gè)請(qǐng)求處理剩下的功能,其本質(zhì)就是一個(gè)請(qǐng)求。轉(zhuǎn)發(fā)是共享request,response對(duì)象 ,因此可以把需要轉(zhuǎn)發(fā)的數(shù)據(jù)保存在request對(duì)象中。瀏覽器的地址欄地址保存不變。(顯示第一個(gè)請(qǐng)求的地址)

一下是轉(zhuǎn)發(fā)的代碼:

// 3. 轉(zhuǎn)發(fā)到show.jsp // **** 轉(zhuǎn)發(fā)的目的是把數(shù)據(jù)傳輸?shù)絡(luò)sp頁(yè)面上,讓jsp頁(yè)面可以使用 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);

重定向是一個(gè)請(qǐng)求的功能完成了,然后開(kāi)啟另一個(gè)請(qǐng)求,做另一個(gè)功能。 本質(zhì)是兩個(gè)請(qǐng)求。(第一個(gè)請(qǐng)求是我們主動(dòng)發(fā)的, 第二個(gè)請(qǐng)求是瀏覽器收到302代碼和重定向的url地址, 然后瀏覽器主動(dòng)發(fā)送的請(qǐng)求。)重定向因?yàn)槭莾蓚€(gè)不同的請(qǐng)求,所以是兩個(gè)不同的request對(duì)象,因此不能共享數(shù)據(jù)。

瀏覽器地址欄的地址是顯示重定向的地址。(顯示第二個(gè)請(qǐng)求的地址)

resp.sendRedirect("show.jsp"); // 重定向

el表達(dá)式

jsp頁(yè)面上,用于方便的獲取到轉(zhuǎn)發(fā)到j(luò)sp頁(yè)面上的數(shù)據(jù)的一種表達(dá)式語(yǔ)言。

語(yǔ)法規(guī)則: ${變量} , ${對(duì)象.屬性}

cookie

  • cookie:用于保存客戶端的狀態(tài)的計(jì)數(shù)。 當(dāng)我們有多次請(qǐng)求的時(shí)候,這個(gè)多次請(qǐng)求被看做一個(gè)整體,這個(gè)整體中有些數(shù)據(jù)需要保存的時(shí)候,可以使用cookie,把數(shù)據(jù)保存在瀏覽器中。

  • cookie的使用方式

    • 服務(wù)器端代碼中,創(chuàng)建cookie對(duì)象,在response中添加cookie
    • 客戶端訪問(wèn)服務(wù)器的時(shí)候,會(huì)將把當(dāng)前訪問(wèn)路徑有關(guān)的cookie發(fā)送到服務(wù)器端
    • 服務(wù)器端可以在request中獲取到cookie數(shù)據(jù),然后對(duì)這些數(shù)據(jù)進(jìn)行使用
    • 瀏覽器可以設(shè)置禁用cookie,或者用戶可以刪除cookie數(shù)據(jù),用戶可以查看到cookie數(shù)據(jù),所以重要數(shù)據(jù)不能直接保存在cookie中。
    • cookie中存儲(chǔ)的是string , 并且存儲(chǔ)的數(shù)據(jù)大小也有限。
    • cookie 可以設(shè)置有效期,過(guò)期之后,cookie會(huì)被瀏覽器清除掉。

session

session中保存數(shù)據(jù):

getSession(): 規(guī)則就是如果有就根據(jù)sessionid獲取session對(duì)象,如果沒(méi)有就直接創(chuàng)建一個(gè)session對(duì)象。

getSession(boolean) : true, 同getSession()功能, false , 如果找不到session對(duì)象,就返回null.

// **** 登錄成功的位置 HttpSession session = req.getSession(); // 獲取session對(duì)象 session.setAttribute("loginname" , name); // 把數(shù)據(jù)保存在session對(duì) 象中

session中獲取數(shù)據(jù)

// 獲取session中的數(shù)據(jù): 返回值是Object Object loginname = session.getAttribute("loginname");

session中刪除數(shù)據(jù)

// 刪除session中的數(shù)據(jù): session.removeAttribute("loginname");

session默認(rèn)在會(huì)話期間有效

**發(fā)請(qǐng)求(和服務(wù)器開(kāi)始會(huì)話):**服務(wù)器會(huì)創(chuàng)建一個(gè)session對(duì)象,然后瀏覽器中保存這個(gè)session對(duì)象的sessionid(cookie:jsession)

**會(huì)話期間:**session中的數(shù)據(jù),所有請(qǐng)求都可以共享;request對(duì)象是每一次請(qǐng)求,都是一個(gè)單獨(dú)的新的對(duì)象,所以request不能共享數(shù)據(jù)。可以通過(guò)request對(duì)象的轉(zhuǎn)發(fā),來(lái)實(shí)現(xiàn)request中的數(shù)據(jù)共享。(servlet轉(zhuǎn)發(fā)到對(duì)應(yīng)的jsp)

**關(guān)閉瀏覽器:**關(guān)閉瀏覽器的時(shí)候cookie保存的session就消失了,session對(duì)象就無(wú)效了,會(huì)話結(jié)束。

**session會(huì)話超時(shí):**可以設(shè)置session的有效期,如果沒(méi)有設(shè)置session的有效期,默認(rèn)的有效期是30分鐘。

// 設(shè)置session的有效期 // setMaxInactiveInterval(秒) session.setMaxInactiveInterval(60);

設(shè)置session無(wú)效:一般在退出系統(tǒng)的時(shí)候,需要清空session中保存的數(shù)據(jù),使用invalidate方法,讓session失效。

// 設(shè)置session無(wú)效 session.invalidate();

cookie和session的區(qū)別

cookie:客戶端狀態(tài)管理的jis

session:服務(wù)器端狀態(tài)管理技術(shù)

過(guò)濾器(Filter)

過(guò)濾器類型:過(guò)濾器是sun提供一個(gè)組件, 需要依賴于tomcat容器運(yùn)行。

**過(guò)濾器的執(zhí)行過(guò)程:**訪問(wèn)請(qǐng)求的時(shí)候,先根據(jù)過(guò)濾器的配置,符號(hào)過(guò)濾器路徑的請(qǐng)求,則先進(jìn)入到過(guò)濾器中執(zhí)行,執(zhí)行結(jié)束之后,再根據(jù)情況,看是否需要進(jìn)入到ervle中。

學(xué)習(xí)總結(jié)

在本階段的學(xué)習(xí)中,可以由一下一句話概括"一講就懂,一點(diǎn)就通,一做就廢",其實(shí)由剛開(kāi)始學(xué)習(xí)Java的焦慮和不解已經(jīng)在慢慢的試著去解決和適應(yīng)了,以前遇到不會(huì)的問(wèn)題不知道如何下手解決,慢慢的跟著老師的步伐就已經(jīng)開(kāi)始學(xué)會(huì)"找錯(cuò)"了,在課堂上和平時(shí)如果遇到由bug我會(huì)先試著調(diào)試自己解決,實(shí)在不會(huì)的我會(huì)再問(wèn)老師和同學(xué),在這一點(diǎn)上我感覺(jué)剛開(kāi)始學(xué)習(xí)有點(diǎn)進(jìn)步。還有就是最先開(kāi)始接觸Java代碼時(shí)我心里有點(diǎn)抵觸,在后面老師和同學(xué)的幫助下我已經(jīng)調(diào)整了心態(tài),也漸漸的愛(ài)上了敲代碼,特別是在解決錯(cuò)誤成功的喜悅。

總結(jié)

以上是生活随笔為你收集整理的java web知识总结——【华清远见】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。