本篇內(nèi)容介紹了“jsp中嵌入java代碼的方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
在洮北等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供做網(wǎng)站、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),洮北網(wǎng)站建設(shè)費(fèi)用合理。
jsp的出現(xiàn)是為了解決Serlvet中拼接大量的html代碼的問(wèn)題,同時(shí)在jsp技術(shù)中可以直接書(shū)寫(xiě)html,js,css和java代碼。
jsp中可以寫(xiě)java代碼,但是需要使用相應(yīng)的標(biāo)簽來(lái)封裝java代碼,有三種方式:
<%! %>: jsp腳本聲明,可以書(shū)寫(xiě)成員變量,方法以及內(nèi)部類(lèi)
<%! //聲明變量 int a = 1; //方法 public void show() { System.out.println(a); } //成員內(nèi)部類(lèi) class Inner{} %>
<%= %>: jsp腳本表達(dá)式,用于直接輸出數(shù)據(jù)
<%="aaa"+123+"bvd"%> <%="hello"%>
<% %>: jsp的腳本片段,可以將java代碼和html代碼進(jìn)項(xiàng)嵌套混合書(shū)寫(xiě)
<% for (int i = 0; i < 10; i++) { if (i % 2 == 0) { %> <%=i%> <% } else { %> <%=i%> <% } } %>
EL全名為Expression Language,他的功能主要是在jsp頁(yè)面上,從不同范圍內(nèi)取出數(shù)據(jù),這里所說(shuō)的范圍是ServletContext范圍和Request。servlet中,servletContext代表當(dāng)前這個(gè)web項(xiàng)目,每一個(gè)項(xiàng)目有一個(gè)唯一的ServletContext和其對(duì)應(yīng),因此放在servletContxt中的數(shù)據(jù),在jsp頁(yè)面可以通過(guò)el表達(dá)式取出,同時(shí)每一個(gè)請(qǐng)求,都表示一個(gè)request對(duì)象,所以在request對(duì)象中存放的數(shù)據(jù),在jsp頁(yè)面也是可以使用el表達(dá)式取出。形式為**${key}**
cookie本身依然是服務(wù)器內(nèi)部的一個(gè)對(duì)象,只是這個(gè)對(duì)象最終會(huì)在響應(yīng)中給客戶(hù)端對(duì)象,客戶(hù)端(一般是瀏覽器)會(huì)識(shí)別cookie信息,同時(shí)在后續(xù)的訪(fǎng)問(wèn)過(guò)程中瀏覽器會(huì)將這個(gè)cookie攜帶在請(qǐng)求頭中一起發(fā)送給服務(wù)器。
瀏覽器攜帶cookie的特性,是由w3c的http協(xié)議規(guī)定的,并且會(huì)在請(qǐng)求頭中攜帶,如果響應(yīng)的數(shù)據(jù)中含有cookie,cookie也是在響應(yīng)的頭中(注意不是在響應(yīng)體中)。 從上面的客戶(hù)端與服務(wù)端的連接可以知道cookie屬于會(huì)話(huà)技術(shù)。
用戶(hù)在打開(kāi)瀏覽器訪(fǎng)問(wèn)服務(wù)器,在一系列的訪(fǎng)問(wèn)過(guò)程中把用戶(hù)的這些操作稱(chēng)為用戶(hù)和服務(wù)器之間的對(duì)話(huà)(客戶(hù)端和服務(wù)端的會(huì)話(huà)),在交互過(guò)程中,用戶(hù)的一系列操作,會(huì)產(chǎn)生一些數(shù)據(jù)需要保存,此時(shí)就需要使用到cookie或者session(下一篇介紹)技術(shù)。
package top.cookies; import javax.servlet.http.Cookie; import java.io.IOException; public class cookieServlet extends javax.servlet.http.HttpServlet { protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { Cookie cookie = new Cookie("name", "testCookie"); // response.addCookie(cookie); response.getWriter().write("helloworld"); } }
Servlet top.cookies.cookieServlet Servlet /cookie
這里首先是將response.addCookie(cookie);這一句代碼給注釋掉了,也就是返回的數(shù)據(jù)中是沒(méi)有cookie的,此時(shí)結(jié)果如下:
現(xiàn)在將注釋的那一句代碼給放開(kāi),此時(shí)請(qǐng)求結(jié)果如下:
可以看到response中已經(jīng)有了cookie的信息,但是請(qǐng)求頭中是沒(méi)有cookie的信息的。
在第一次請(qǐng)求時(shí)由于在響應(yīng)中設(shè)置了cookie,所以在第二次請(qǐng)求的時(shí)候請(qǐng)求頭中應(yīng)該攜帶cookie信息的,此時(shí)結(jié)果如下:
可以看到在請(qǐng)求頭中是包含cookie信息的。
設(shè)置cookie是服務(wù)端設(shè)置后給到客戶(hù)端,那么獲取cookie實(shí)際上就是從請(qǐng)求頭中獲取cookie,也就是從httpServletRequest對(duì)象中獲取cookie,由于用戶(hù)可以攜帶有多個(gè)cookie,因此可以使用getCookies()方法獲取cookie數(shù)組。
Cookie[] cookies = request.getCookies(); for (Cookie cookie: cookies ) { System.out.println(cookie.getName() + "--" + cookie.getValue()); }
cookie主要是分為兩類(lèi):
臨時(shí)會(huì)話(huà)級(jí)別的cookie
服務(wù)器給客戶(hù)端發(fā)送的cookie,如果沒(méi)有指定cookie在客戶(hù)端的保存時(shí)間,此cookie只會(huì)在瀏覽器的運(yùn)行期間存在,當(dāng)瀏覽器關(guān)閉后,客戶(hù)端中的cookie會(huì)消失。
持久化的cookie
在服務(wù)器給客戶(hù)端發(fā)送cookie的時(shí)候,可以指定cookie在客戶(hù)端存活的時(shí)間??梢酝ㄟ^(guò)setMaxAge(int)方法來(lái)實(shí)現(xiàn)。
該方法的單位是秒
如果為負(fù)數(shù)表示不存儲(chǔ)該cookie
如果是0表示刪除該cookie
在設(shè)置cookie的時(shí)候,每一個(gè)cookie對(duì)象都需要和當(dāng)面的訪(fǎng)問(wèn)路徑一致,如果設(shè)置的cookie和路徑不一致,在服務(wù)器端是無(wú)法獲取到cookie信息的,設(shè)置路徑可以使用cookie對(duì)象中的setPath(String)方法來(lái)完成,路徑一般會(huì)設(shè)置項(xiàng)目根目錄。這樣設(shè)置只要訪(fǎng)問(wèn)當(dāng)前項(xiàng)目中的內(nèi)容,請(qǐng)求頭就會(huì)攜帶對(duì)應(yīng)的信息,如歐冠在設(shè)置cookie的時(shí)候,沒(méi)有設(shè)置響應(yīng)的path,此時(shí)會(huì)使用默認(rèn)的路徑。
設(shè)置每一個(gè)cookie自己的訪(fǎng)問(wèn)路徑的作用是在訪(fǎng)問(wèn)每一個(gè)網(wǎng)站時(shí),來(lái)判斷是否需要攜帶當(dāng)前的cookie數(shù)據(jù),因?yàn)橐粋€(gè)網(wǎng)站的后臺(tái)可能會(huì)有多個(gè)不同功能的cookie對(duì)象存在,但是這些對(duì)象不是每一次請(qǐng)求都需要帶給服務(wù)器,所以也就可以給不同的cookie對(duì)象在生成的時(shí)候設(shè)置不同的路徑,這樣當(dāng)客戶(hù)端訪(fǎng)問(wèn)服務(wù)器的時(shí)候就可以根據(jù)不同的訪(fǎng)問(wèn)路徑來(lái)攜帶不同的cookie。
“jsp中嵌入java代碼的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!