您好,登錄后才能下訂單哦!
本篇內容介紹了“jsp中嵌入java代碼的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
jsp的出現是為了解決Serlvet中拼接大量的html代碼的問題,同時在jsp技術中可以直接書寫html,js,css和java代碼。
jsp中可以寫java代碼,但是需要使用相應的標簽來封裝java代碼,有三種方式:
<%! %>: jsp腳本聲明,可以書寫成員變量,方法以及內部類
<%! //聲明變量 int a = 1; //方法 public void show() { System.out.println(a); } //成員內部類 class Inner{} %>
<%= %>: jsp腳本表達式,用于直接輸出數據
<!-- 需要注意的是jsp腳本表達式,在書寫表達式的時候,后面不能添加分號 --> <%="aaa"+123+"bvd"%> <!-- 腳本表達式可以用于輸入html源碼信息 --> <%="<font color='red'>hello</font>"%>
<% %>: jsp的腳本片段,可以將java代碼和html代碼進項嵌套混合書寫
<% for (int i = 0; i < 10; i++) { if (i % 2 == 0) { %> <!-- 這里是嵌套的html代碼 --> <font color='red'> <%=i%> </font> <% } else { %> <!-- 這里是嵌套的html代碼 --> <font color='red'> <%=i%> </font> <% } } %>
EL全名為Expression Language,他的功能主要是在jsp頁面上,從不同范圍內取出數據,這里所說的范圍是ServletContext范圍和Request。servlet中,servletContext代表當前這個web項目,每一個項目有一個唯一的ServletContext和其對應,因此放在servletContxt中的數據,在jsp頁面可以通過el表達式取出,同時每一個請求,都表示一個request對象,所以在request對象中存放的數據,在jsp頁面也是可以使用el表達式取出。形式為**${key}**
cookie本身依然是服務器內部的一個對象,只是這個對象最終會在響應中給客戶端對象,客戶端(一般是瀏覽器)會識別cookie信息,同時在后續的訪問過程中瀏覽器會將這個cookie攜帶在請求頭中一起發送給服務器。
瀏覽器攜帶cookie的特性,是由w3c的http協議規定的,并且會在請求頭中攜帶,如果響應的數據中含有cookie,cookie也是在響應的頭中(注意不是在響應體中)。 從上面的客戶端與服務端的連接可以知道cookie屬于會話技術。
用戶在打開瀏覽器訪問服務器,在一系列的訪問過程中把用戶的這些操作稱為用戶和服務器之間的對話(客戶端和服務端的會話),在交互過程中,用戶的一系列操作,會產生一些數據需要保存,此時就需要使用到cookie或者session(下一篇介紹)技術。
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"); } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Servlet</servlet-name> <servlet-class>top.cookies.cookieServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet</servlet-name> <url-pattern>/cookie</url-pattern> </servlet-mapping> </web-app>
這里首先是將response.addCookie(cookie);這一句代碼給注釋掉了,也就是返回的數據中是沒有cookie的,此時結果如下:
現在將注釋的那一句代碼給放開,此時請求結果如下:
可以看到response中已經有了cookie的信息,但是請求頭中是沒有cookie的信息的。
在第一次請求時由于在響應中設置了cookie,所以在第二次請求的時候請求頭中應該攜帶cookie信息的,此時結果如下:
可以看到在請求頭中是包含cookie信息的。
設置cookie是服務端設置后給到客戶端,那么獲取cookie實際上就是從請求頭中獲取cookie,也就是從httpServletRequest對象中獲取cookie,由于用戶可以攜帶有多個cookie,因此可以使用getCookies()方法獲取cookie數組。
Cookie[] cookies = request.getCookies(); for (Cookie cookie: cookies ) { System.out.println(cookie.getName() + "--" + cookie.getValue()); }
cookie主要是分為兩類:
臨時會話級別的cookie
服務器給客戶端發送的cookie,如果沒有指定cookie在客戶端的保存時間,此cookie只會在瀏覽器的運行期間存在,當瀏覽器關閉后,客戶端中的cookie會消失。
持久化的cookie
在服務器給客戶端發送cookie的時候,可以指定cookie在客戶端存活的時間。可以通過setMaxAge(int)方法來實現。
該方法的單位是秒
如果為負數表示不存儲該cookie
如果是0表示刪除該cookie
在設置cookie的時候,每一個cookie對象都需要和當面的訪問路徑一致,如果設置的cookie和路徑不一致,在服務器端是無法獲取到cookie信息的,設置路徑可以使用cookie對象中的setPath(String)方法來完成,路徑一般會設置項目根目錄。這樣設置只要訪問當前項目中的內容,請求頭就會攜帶對應的信息,如歐冠在設置cookie的時候,沒有設置響應的path,此時會使用默認的路徑。
設置每一個cookie自己的訪問路徑的作用是在訪問每一個網站時,來判斷是否需要攜帶當前的cookie數據,因為一個網站的后臺可能會有多個不同功能的cookie對象存在,但是這些對象不是每一次請求都需要帶給服務器,所以也就可以給不同的cookie對象在生成的時候設置不同的路徑,這樣當客戶端訪問服務器的時候就可以根據不同的訪問路徑來攜帶不同的cookie。
“jsp中嵌入java代碼的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。