Java Web學習2(JSP技術)

目錄

一、基礎知識

1、JSP簡介

 2、JSP的作用

 3、開發環境的安裝

4、JSP原理

 二、JSP語法

1、指令標識(JSP指令)

2、腳本標識

3、JSP註釋

4、動作標識(JSP行爲)

三、JSP內置對象(JSP隱含對象)

1.request對象

2.response對象

3.session對象

 4.application對象

5.out對象

四、JavaBean

1、JavaBean簡介

2、JavaBean規則

3、應用舉例


 

一、基礎知識

1、JSP簡介

JSP(全稱Java Server Pages)是與PHP、ASP等語言類似的運行在服務端的語言,在一個JSP頁面中可以包括指令標識、HTML代碼、JavaScript代碼、嵌入的Java、JSP動作標識等。

<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="./jquery/jquery-3.4.1.js"></script>
<script type="text/javascript"> //javascript代碼
	$(function(){
		$("input").click(function(){
			alert("按鈕事件");
		});
	})
</script>
</head>

<body>
	<input type="button" value="按鈕"/> <!--html代碼 -->
	<%  
		out.println("hello world");//嵌入的Java代碼
	%>
</body>

 2、JSP的作用

網頁開發者們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。JSP通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然後動態地創建網頁。JSP可以訪問數據庫、記錄用戶選擇信息、訪問JavaBeans組件等,還可以在不同的網頁中傳遞控制信息和共享信息。

 3、開發環境的安裝

參考之前的博客:https://blog.csdn.net/kenjianqi1647/article/details/105000777

 

4、JSP原理

JSP是Servlet的一種特殊形式,每個JSP頁面就是一個Servlet實例,Web應用中的每個JSP頁面都會由Servlet容器生成對應的Servlet。

 網絡服務器上有JSP容器,JSP 容器與 Web 服務器協同合作,爲JSP的正常運行提供必要的運行環境和其他服務,並且能夠正確識別專屬於 JSP 網頁的特殊元素。

 Web服務器使用JSP創建網頁的步驟如下:

  • 瀏覽器發送一個HTTP請求給Web服務器,服務器識別出是JSP請求,將該請求傳遞給JSP引擎。
  • JSP引擎從磁盤中載入JSP文件,轉化爲Servlet,並編譯成Servlet類
  • Servlet引擎載入並執行Servlet類,產生HTML網頁
  • Web服務器將網頁傳給客戶端

 二、JSP語法

1、指令標識(JSP指令)

指令標識用於設定JSP頁面範圍內的相關屬性,被服務器解釋並執行,並不會產生任何內容輸出到網頁中。

 語法格式:

<%@ 指令名 屬性="屬性值" %>
  • 指令名:用於指定指令的名稱,JSP中包括page,include,taglib三條指令。

(1)page指令應用:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 

(2)include指令應用

通過該指令可以在一個JSP頁面中包含另一個JSP頁面,使用include指令可以提高代碼的重用性。

<%@ include file="path">

爲了使整個頁面的層次結構不發生衝突,應將被包含的頁面中將html、body等標記刪除。

2、腳本標識

腳本標識用於生成頁面中的動態內容。包括三部分:JSP表達式、聲明標識和腳本程序。 

 (1)腳本程序

腳本程序就是在JSP頁面中嵌入的java代碼。可以包含任意java語句、變量、方法或表達式。

語法格式:

<% Java代碼 %>

 (2)聲明標識(JSP聲明)

聲明標識用於在JSP頁面中定義全局的變量或方法。通過定義可以被整個JSP頁面訪問。

語法格式:

<%! 聲明變量或方法的代碼 %>

 應用舉例:

<%!
    int number=0;//聲明全局變量
    int count(){ //聲明全局方法
        number++;
        return number;
    }
%>

(3)JSP表達式

JSP表達式用於向頁面輸出信息。

語法格式:

<%= 表達式 %>

3、JSP註釋

JSP註釋主要爲代碼做註釋或將某段代碼註釋掉。

JSP特有的註釋方式爲隱藏註釋,使用瀏覽器查看HTML源碼時,用戶也看不到註釋,安全性比較高。

語法格式:

<%-- 註釋內容 --%>

 

4、動作標識(JSP行爲)

動作標識利用XML語法格式的標記來控制Servlet引擎的行爲。利用JSP動作可以動態地插入文件、重用JavaBean組件、把用戶重定向到另外的頁面、爲Java插件生成HTML代碼。動作標識與指令標識不同,動作標識在請求階段起作用。

常用的動作標識如下:

 (1)包含文件標識<jsp:include>

<jsp:include>動作標識用於向當前頁面中包含其他的文件。注意它與include指令標識的區別如下:

  • include指令標識是在編譯級別完成的包含(JSP文件被轉換成Servlet的時候),即把當前JSP和被包含的JSP合併成一個JSP,然後再編譯成一個Servlet。
  • include動作標識是在運行級別完成的包含(插入文件的時候是在頁面被請求的時候),即當前JSP和被包含的JSP都會各自生成Servlet,然後在執行當前JSP的Servlet時完成包含另一個JSP的Servlet。

語法格式如下:

<jsp:include page="url" flush="false|true">
  • page:爲指定被包含文件的相對路徑。
  • flush:設置是否刷新緩衝區。

(2)請求轉發標識<jsp:forward>

請求轉發標識可以將請求轉發到其他的Web資源,例如另一個JSP頁面、HTML頁面,Servlet等,請求轉發後,當前頁面不再被執行,而去執行目標頁面。

語法格式如下:

<jsp:forward page="url"/>

page:爲請求轉發的目標頁面。

(3)傳遞參數標識<jsp:param>

該標識用於爲其他標識傳遞參數。

<jsp:param name="參數名" value="參數值"/>

 name:用於指定參數的名稱。

value:用於設置對應的參數值。

 

三、JSP內置對象(JSP隱含對象)

JSP的內置對象用來實現JSP應用,在JSP中一共定義了9個JSP內置對象。

1.request對象

通過request對象提供的相應方法可處理客戶端瀏覽器提交的HTTP請求中的各項參數。

應用舉例:

WebContent下新建NewFile.jsp和deal.jsp文件

NewFile.jsp下:

<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="./jquery/jquery-3.4.1.js"></script>
<script type="text/javascript"> //javascript代碼

</script>
</head>

<body>
	<a href="deal.jsp?id=1&user=">處理頁</a> <!-- id爲傳遞參數 -->
</body>

 

deal.jsp下:

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="utf-8"%>
<%
String id=request.getParameter("id");	//獲取id參數的值
String user=request.getParameter("user");//獲取user參數的值
String pwd=request.getParameter("pwd");//獲取pwd參數值
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>處理頁</title>
</head>
<body>
id參數的值爲:<%=id %><br>
user參數的值爲:<%=user %><br>
pwd參數的值爲:<%=pwd %>
</body>
</html>

測試結果:

2.response對象

response對象用於響應客戶請求,向客戶端輸出信息。

3.session對象

session對象用來跟蹤在各個客戶端請求間的會話。通過session可以在應用程序的web頁面間進行跳轉時,保存用戶的狀態,使整個會話一直存在下去,直到瀏覽器關閉。

 4.application對象

application對象用於保存所有應用程序中的公有數據。

5.out對象

out對象用於在Web瀏覽器內輸出信息,並管理應用服務器上的輸出緩存區。

 

四、JavaBean

1、JavaBean簡介

JavaBean可以將JSP中HTML代碼和Java代碼相分離,將Java代碼單獨封裝成一個處理某種業務邏輯的類,然後在JSP頁面中調用此類,降低了HTML代碼和Java代碼之間的耦合度,簡化了JSP頁面,提高了Java代碼的重用性。

2、JavaBean規則

  • 要有無參的構造函數
  • 成員屬性私有化
  • 封裝的屬性如果需要被外所操作,必須寫爲public類型setter、getter方法

3、應用舉例

編寫一個郵件地址驗證程序

(1)Java Resources目錄下添加Email類

Email.java文件內容如下:

package com.lyq.bean;

import java.io.Serializable;
/**
 * 郵件對象JavaBean
 */
public class Email implements Serializable {
	//  serialVersionUID 值
	private static final long serialVersionUID = 1L;
	// Email地址
	private String mailAdd;
	// 是否是一個標準的Email地址
	private boolean eamil;
	/**
	 * 默認無參的構造方法
	 */
	public Email() {
	}
	/**
	 * 構造方法
	 * @param mailAdd Email地址
	 */
	public Email(String mailAdd) {
		this.mailAdd = mailAdd;
	}
	/**
	 * 是否是一個標準的Email地址
	 * @return 布爾值
	 */
	public boolean isEamil() {
		// 正則表達式,定義郵箱格式
		String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; 
		// matches()方法可判斷字符串是否與正則表達式匹配
		if (mailAdd.matches(regex)) { 
			// eamil爲真
			eamil = true;
		}
		// 返回eamil
		return eamil;
	}
	public String getMailAdd() {
		return mailAdd;
	}
	public void setMailAdd(String mailAdd) {
		this.mailAdd = mailAdd;
	}
}

 (2)WebContent目錄下添加index.jsp文件

index.jsp代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="result.jsp" method="post">
		<table align="center" width="300" border="1" height="150">
			<tr>
				<td colspan="2" align="center">
					<b>郵箱認證系統</b>
				</td>
			</tr>
			<tr>
				<td align="right">郵箱地址:</td>
				<td><input type="text" name="mailAdd"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" />
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

 (3)WebContent目錄下添加result.jsp文件

result.jsp代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="com.lyq.bean.Email"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div align="center">
		<%
			// 獲取郵箱地址
			String mailAdd = request.getParameter("mailAdd");
			// 實例化Email,並對mailAdd賦值
			Email email = new Email(mailAdd);
			// 判斷是否是標準的郵箱地址
			if(email.isEamil()){
				out.print(mailAdd + " <br>是一個標準的郵箱地址!<br>");
			}else{
				out.print(mailAdd + " <br>不是一個標準的郵箱地址!<br>");
			}
		%>
		<a href="index.jsp">返回</a>
	</div>
</body>
</html>

 測試結果如下:

參考文獻:

https://www.runoob.com/jsp/jsp-syntax.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章