溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

jsp中嵌入java代碼的方法

發(fā)布時間:2021-09-14 17:08:11 來源:億速云 閱讀:1248 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“jsp中嵌入java代碼的方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

簡單介紹jsp

jsp的出現(xiàn)是為了解決Serlvet中拼接大量的html代碼的問題,同時在jsp技術(shù)中可以直接書寫html,js,css和java代碼。

jsp中嵌入java代碼

jsp中可以寫java代碼,但是需要使用相應(yīng)的標簽來封裝java代碼,有三種方式:

  • <%! %>: jsp腳本聲明,可以書寫成員變量,方法以及內(nèi)部類

    	<%!
    		//聲明變量
    		int a = 1;
    		//方法
    		public void show() {
    			System.out.println(a);
    		}
    		//成員內(nèi)部類
    		class Inner{}
    	%>


  • <%= %>: jsp腳本表達式,用于直接輸出數(shù)據(jù)

    		<!-- 需要注意的是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表達式

EL全名為Expression Language,他的功能主要是在jsp頁面上,從不同范圍內(nèi)取出數(shù)據(jù),這里所說的范圍是ServletContext范圍和Request。servlet中,servletContext代表當前這個web項目,每一個項目有一個唯一的ServletContext和其對應(yīng),因此放在servletContxt中的數(shù)據(jù),在jsp頁面可以通過el表達式取出,同時每一個請求,都表示一個request對象,所以在request對象中存放的數(shù)據(jù),在jsp頁面也是可以使用el表達式取出。形式為**${key}**

cookie

cookie簡介

  • cookie本身依然是服務(wù)器內(nèi)部的一個對象,只是這個對象最終會在響應(yīng)中給客戶端對象,客戶端(一般是瀏覽器)會識別cookie信息,同時在后續(xù)的訪問過程中瀏覽器會將這個cookie攜帶在請求頭中一起發(fā)送給服務(wù)器。

  • 瀏覽器攜帶cookie的特性,是由w3c的http協(xié)議規(guī)定的,并且會在請求頭中攜帶,如果響應(yīng)的數(shù)據(jù)中含有cookie,cookie也是在響應(yīng)的頭中(注意不是在響應(yīng)體中)。 jsp中嵌入java代碼的方法 從上面的客戶端與服務(wù)端的連接可以知道cookie屬于會話技術(shù)。

什么是會話

用戶在打開瀏覽器訪問服務(wù)器,在一系列的訪問過程中把用戶的這些操作稱為用戶和服務(wù)器之間的對話(客戶端和服務(wù)端的會話),在交互過程中,用戶的一系列操作,會產(chǎn)生一些數(shù)據(jù)需要保存,此時就需要使用到cookie或者session(下一篇介紹)技術(shù)。

小案例之服務(wù)端設(shè)置cookie返回給客戶端

servlet

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配置

<?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>

第一次請求結(jié)果(返回時不設(shè)置cookie)

這里首先是將response.addCookie(cookie);這一句代碼給注釋掉了,也就是返回的數(shù)據(jù)中是沒有cookie的,此時結(jié)果如下: jsp中嵌入java代碼的方法

第一次請求(返回時設(shè)置cookie)

現(xiàn)在將注釋的那一句代碼給放開,此時請求結(jié)果如下: jsp中嵌入java代碼的方法

可以看到response中已經(jīng)有了cookie的信息,但是請求頭中是沒有cookie的信息的。

第二次請求

在第一次請求時由于在響應(yīng)中設(shè)置了cookie,所以在第二次請求的時候請求頭中應(yīng)該攜帶cookie信息的,此時結(jié)果如下: jsp中嵌入java代碼的方法

可以看到在請求頭中是包含cookie信息的。

獲取cookie

設(shè)置cookie是服務(wù)端設(shè)置后給到客戶端,那么獲取cookie實際上就是從請求頭中獲取cookie,也就是從httpServletRequest對象中獲取cookie,由于用戶可以攜帶有多個cookie,因此可以使用getCookies()方法獲取cookie數(shù)組。

Cookie[] cookies = request.getCookies();
for (Cookie cookie: cookies ) {
    System.out.println(cookie.getName() + "--" + cookie.getValue());
}

cookie分類

cookie主要是分為兩類:

  • 臨時會話級別的cookie

    服務(wù)器給客戶端發(fā)送的cookie,如果沒有指定cookie在客戶端的保存時間,此cookie只會在瀏覽器的運行期間存在,當瀏覽器關(guān)閉后,客戶端中的cookie會消失。

  • 持久化的cookie

    在服務(wù)器給客戶端發(fā)送cookie的時候,可以指定cookie在客戶端存活的時間??梢酝ㄟ^setMaxAge(int)方法來實現(xiàn)。

    • 該方法的單位是秒

    • 如果為負數(shù)表示不存儲該cookie

    • 如果是0表示刪除該cookie

給cookie設(shè)置路徑

在設(shè)置cookie的時候,每一個cookie對象都需要和當面的訪問路徑一致,如果設(shè)置的cookie和路徑不一致,在服務(wù)器端是無法獲取到cookie信息的,設(shè)置路徑可以使用cookie對象中的setPath(String)方法來完成,路徑一般會設(shè)置項目根目錄。這樣設(shè)置只要訪問當前項目中的內(nèi)容,請求頭就會攜帶對應(yīng)的信息,如歐冠在設(shè)置cookie的時候,沒有設(shè)置響應(yīng)的path,此時會使用默認的路徑。

設(shè)置訪問路徑的作用

設(shè)置每一個cookie自己的訪問路徑的作用是在訪問每一個網(wǎng)站時,來判斷是否需要攜帶當前的cookie數(shù)據(jù),因為一個網(wǎng)站的后臺可能會有多個不同功能的cookie對象存在,但是這些對象不是每一次請求都需要帶給服務(wù)器,所以也就可以給不同的cookie對象在生成的時候設(shè)置不同的路徑,這樣當客戶端訪問服務(wù)器的時候就可以根據(jù)不同的訪問路徑來攜帶不同的cookie。

“jsp中嵌入java代碼的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI