JSP技術

一、jsp腳本和注釋

jsp腳本:
1)<%java代碼%> ----- 內部的java代碼翻譯到service方法的內部
2)<%=java變量或表達式> ----- 會被翻譯成service方法內部out.print()
3)<%!java代碼%> ---- 會被翻譯成servlet的成員的內容

jsp注釋: 不同的注釋可見范圍是不同
1)Html注釋:—可見范圍 jsp源碼、翻譯后的servlet、頁面 顯示html源碼
2)java注釋://單行注釋 /多行注釋/ --可見范圍 jsp源碼 翻譯后的servlet
jsp注釋:<%–注釋內容–%> ----- 可見范圍 jsp源碼可見

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="/error.jsp" ispageEncoding="UTF-8" session="true" %><!-- 引入jstl核心庫 -->    
<%-- <%@ taglib uri="http://" orefix="q" %> --%>
<%-- <%@ taglib uri="http://" orefix="wsq" %> --%><!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><!-- 使用q庫的標簽 --><!-- <q:if></q:if> --><!-- 使用wsq庫的標簽 --><!-- <wsq:yy></wsq:yy> --><%@ include file = "/demo.jsp" %>wsqwsqwsq<!-- < %java 代碼 % > -->      <!-- 內部的java代碼翻譯到service方法的內部 --><%session.setAttribute("name", "qibao");int i=0;System.out.println(i);  /* 會在控制臺輸出i的值 *//* List list = new ArrayList(); *//* java.util.List list = new java.util.ArrayList(); *///int y=1/0;%><!-- < %=java 變量或表達式  > -->   <!-- 表達式,可以理解為最終有結果的東西 -->   <!-- 會被翻譯成service方法內部out.print(); --><%=i %>    <!-- 這里會輸出i的值為0,在頁面輸出 --><!-- < %!java 代碼 % > -->		<!-- 會被翻譯成servlet的成員的內容 --><%!String sq = "hello qb";%><%-- 這是一個jsp注釋 --%><!-- 這是一個html注釋 --><%=sq %>	<!-- 可以在頁面輸出sq這個字符串 --><h1>sq</h1>
</body>
</html>

二、jsp運行原理-----jsp本質就是servlet(面試)

jsp在第一次被訪問時會被Web容器翻譯成servlet,在執行
過程:
第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運行
PS:被翻譯后的servlet在Tomcat的work目錄中可以找到

三、jsp指令(3個)

jsp的指令是指導jsp翻譯和運行的命令,jsp包括三大指令:
1)page指令 — 屬性最多的指令(實際開發中page指令默認)
屬性最多的一個指令,根據不同的屬性,指導整個頁面特性
格式:<%@ page 屬性名1= “屬性值1” 屬性名2= “屬性值2” …%>
常用屬性如下:
language:jsp腳本中可以嵌入的語言種類
pageEncoding:當前jsp文件的本身編碼—內部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻譯時自動創建session
import:導入java的包
errorPage:當當前頁面出錯后跳轉到哪個頁面
isErrorPage:當前頁面是一個處理錯誤的頁面

2)include指令
頁面包含(靜態包含)指令,可以將一個jsp頁面包含到另一個jsp頁面中
格式:<%@ include file=“被包含的文件地址”%>

3)taglib指令
在jsp頁面中引入標簽庫(jstl標簽庫、struts2標簽庫)
格式:<%@ taglib uri=“標簽庫地址” prefix=“前綴”%>

四、jsp內置/隱式對象(9個)

名稱描述類型
out用于頁面輸出javax.servlet.jsp.JspWriter
request得到用戶請求信息javax.servlet.http.HttpServletRequest
response服務器向客戶端的回應信息javax.servlet.http.HttpServletResponse
config服務器配置,可以取得初始化參數javax.servlet.ServletConfig
session用來保持用戶的信息javax.servlet.http.HttpSession
application所有用戶的共享信息javax.servlet.ServletContext
page指當前頁面轉換后的Servlet類的實例java.lang.Object
pageContextJSP的頁面容器javax.servlet.jsp.PageContext
exception表示JSP頁面所發生的異常,在錯誤頁中才起作用java.lang.Throwable

(1)out對象
out的類型:JspWriter
out作用就是想客戶端輸出內容----out.write()
out緩沖區默認8kb 可以設置成0 代表關閉out緩沖區 內容直接寫到respons緩沖 器
(2)pageContext對象
jsp頁面的上下文對象,作用如下:
page對象與pageContext對象不是一回事

1)pageContext是一個域對象

setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)

pageContext可以向指定的其他域中存取數據
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
—依次從pageContext域,request域,session域,application域中獲 取屬性,在某個域中獲取后將不在向后尋找

2)可以獲得其他8大隱式對象

例如: pageContext.getRequest()
pageContext.getSession()

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><%/* 使用pageContext向request域存數據 */request.setAttribute("name", "wsq");pageContext.setAttribute("name", "zhangsan", PageContext.REQUEST_SCOPE);pageContext.setAttribute("name", "lisi", PageContext.REQUEST_SCOPE);pageContext.setAttribute("name", "wangwu", PageContext.REQUEST_SCOPE);%><%=request.getAttribute("name") %><%=pageContext.getAttribute("name", PageContext.REQUEST_SCOPE) %>	<!-- findAttribute會從小到大搜索域的范圍中的name --><!-- pageContext域<request域<session域<application域 -->><%=pageContext.findAttribute("name") %><%pageContext.getRequest();pageContext.getOut();%>
</body>
</html>
四大作用域的總結:
page域:當前jsp頁面范圍
request域:一次請求
session域:一次會話
application域:整個web應用

五、兩種jsp標簽(靜態,動態)的區別

#####都是在 *1.jsp 里面嵌套 *2.jsp
動態:

<jsp:include page="/include2.jsp"></jsp:include>
//include1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><h1>this is an include1.jsp</h1><!-- 包含include2.jsp --><jsp:include page="/include2.jsp"></jsp:include>
</body>
</html>
//include2.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><h1>beyondwsq</h1>
</body>
</html>

靜態:

<%@ include file="/include_2.jsp" %>
//include_1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><h1>this is an include_1.jsp</h1><%@ include file="/include_2.jsp" %>
</body>
</html>
//include_2.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><h1>xxxxxxxxx</h1>
</body>
</html>

接下來,咱們來看一下源碼:

E:\Web后端\WEB12_Http&Tomcat\WEB12_Http&Tomcat\資料\apache-tomcat-7.0.52\work\Catalina\localhost\WEB17\org\apache\jsp

include1.jsp跟include2.jsp是動態的嵌套
在這里插入圖片描述

1)頁面包含(動態包含):<jsp:include page=“被包含的頁面”/>
(靜態包含):<%@ include file=“被包含的頁面” %>
2)請求轉發:<jsp:forward page=“要轉發的資源” />
也就是從*1.jsp可以跳轉到要轉發的資源位置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jQuery.ajax不能實現return值調用問題

我們使用jQuery.ajax函數是不能實現success方法return值的&#xff0c;而有時候我們需要對成功返回的數據進行處理&#xff0c;一般來說&#xff0c;與服務器交互后會返回很多的數據&#xff0c;而有些數據需要進行特別處理&#xff0c;這時需要實現success方法return&#xff…

Linux內核設計與實現---頁高速緩存和頁回寫

頁高速緩存和頁回寫1 頁高速緩存2 基樹3 緩沖區高速緩存4 pdflush后臺例程膝上型電腦模式bdflush和kupdated避免擁塞的方法&#xff1a;使用多線程頁高速緩存&#xff08;cache&#xff09;是Linux內核實現的一種主要磁盤緩存&#xff0c;通過把磁盤中的數據緩存到物理內存中&a…

EL技術

1&#xff0e;EL 表達式概述 EL&#xff08;Express Lanuage&#xff09;表達式可以嵌入在jsp頁面內部&#xff0c;減少jsp腳本的編寫&#xff0c;EL 出現的目的是要替代jsp頁面中腳本的編寫。 2&#xff0e;EL從域中取出數據(EL最重要的作用) jsp腳本&#xff1a;<%requ…

math.trunc_JavaScript中帶有示例的Math.trunc()方法

math.truncJavaScript | Math.trunc()方法 (JavaScript | Math.trunc() Method) Math.trunc() is a function in math library of JavaScript that is used to extract the integer part of the given floating-point number. It removes the decimal and all the digits after…

.NET程序員的書單

zz from sjtu bbs: http://bbs.sjtu.edu.cn/bbscon?boardDotNET&fileM.1126188158.A 發信人: luckySeven(lucky為這位mm默哀), 信區: DotNET 標 題: .NET程序員的書單 發信站: 飲水思源 (2005年09月08日22:02:45 星期四), 轉信 發信人: AtomAndBit (原子與比特), 信區: D…

SVN+AnkhSVN端配置

對于ankhSVN我想很多人不陌生&#xff0c;因為經常使用&#xff0c;但是我還是發現很多人并不怎么會配置&#xff0c;或者完全不知道其需要配置&#xff0c;如果不配置的話&#xff0c;當兩個人同時需要修改某個文件的時候就容易中彈了。SVN默認是不支持“鎖定-編輯-解鎖”的&a…

Linux內核設計與實現---模塊

模塊1 構建模塊放在內核源代碼樹中放在內核代碼外2 安裝模塊3 產生模塊依賴性4 載入模塊5 管理配置選項6 模塊參數7 導出符號表Linux內核是模塊化組成的&#xff0c;它允許內核在運行時動態地向其中插入或從中刪除代碼。 與開發的內核核心子系統不同&#xff0c;模塊開發更接近…

JSTL技術

1&#xff0e;JSTL概述 JSTL&#xff08;JSP Standard Tag Library)&#xff0c;JSP標準標簽庫&#xff0c;可以嵌入在jsp頁面中使用標簽的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的腳本代碼。JSTL標準標準標簽庫有5個子庫&#xff0c;但隨著發展…

asinh函數_JavaScript中帶有示例的Math.asinh()方法

asinh函數JavaScript | Math.asinh()方法 (JavaScript | Math.asinh() Method) Math.asinh() is a function in math library of JavaScript that is used to find the value of hyperbolic arc-sine of a number. Math.asinh()是JavaScript數學庫中的函數&#xff0c;用于查找…

使用PHP創建一個REST API(Create a REST API with PHP)

譯者前言&#xff1a; 首先這是一篇國外的英文文章&#xff0c;非常系統、詳盡的介紹了如何使用PHP創建REST API&#xff0c;國內這方面的資料非常非常的有限&#xff0c;而且基本沒有可操作性。這篇文章寫的非常好&#xff0c;只要對PHP稍有了解的程序員&#xff0c;看完本文基…

old-

大數問題:求用一段C或C程序寫求 f(x)100! 的完整程序大數問題&#xff0c; 我用數組作的&#xff0c;輸出格式應該是是222,222,222 #include "stdafx.h" #include<stdio.h> #include<stdlib.h> int a[1000]{0}; in…

javaEE的開發模式

1&#xff0e;什么是模式 模式在開發過程中總結出的“套路”&#xff0c;總結出的一套約定俗成的設計模式 2&#xff0e;javaEE經歷的模式 model1模式&#xff1a; 技術組成&#xff1a;jspjavaBean model1的弊端&#xff1a;隨著業務復雜性 導致jsp頁面比較混亂 model2模式…

Linux內核設計與實現---kobject sysfs

kobject sysfs1 kobject2 ktype3 kset4 subsystem5 別混淆了這些結構體6 管理和操作kobject7 引用計數kref8 sysfssysfs中添加和刪除kobject向sysfs添加文件9 內核事件層2.6內核增加了一個引人注目的新特性—同一設備模型。設備模型提供了獨立的機制專門表示設備&#xff0c;并…

開發Windows Mobile今日插件 -- 內存電量,桌面便箋,桌面記單詞

本篇文章講解的是開發 Windows Mobile 上的今日插件。關于是今日插件&#xff0c;在 PPC 或者 SP SDK 的幫助文檔中有相關的章節介紹&#xff0c;在網絡上也有一些帖子和資源講解。在這里簡要回顧一下。今日插件就是在windows mobile的桌面上顯示的條目&#xff0c;例如系統提供…

c語言中將函數指針作為形參_在C中將有效指針作為NULL指針

c語言中將函數指針作為形參Prerequisite: An Example of Null pointer in C 先決條件&#xff1a; C中的空指針示例 Any pointer that contains a valid memory address can be made as a NULL pointer by assigning 0. 通過分配0&#xff0c;可以將包含有效內存地址的任何指…

[轉]一個清華計算機博士生的退學申請

偶然間在網上看到這篇帖子&#xff0c;回想起自己的求學經歷&#xff0c;思索良久。。。 本想找到原帖及作者&#xff0c;但是幾經搜索&#xff0c;發現原帖出自科學網&#xff0c;已被刪除。對此&#xff0c;我還能說啥&#xff1f;&#xff01; http://www.sciencenet.cn/m/u…

算法---遞歸

遞歸結題三部曲 何為遞歸&#xff1f;程序反復調用自身即是遞歸。 我自己在剛開始解決遞歸問題的時候&#xff0c;總是會去糾結這一層函數做了什么&#xff0c;它調用自身后的下一層函數又做了什么…然后就會覺得實現一個遞歸解法十分復雜&#xff0c;根本就無從下手。 相信…

給定條件找最小值c語言程序_根據給定條件最小化n的最小步驟

給定條件找最小值c語言程序Problem statement: 問題陳述&#xff1a; Given a number n, count minimum steps to minimize it to 1 performing the following operations: 給定數字n &#xff0c;執行以下操作&#xff0c;計算最少的步驟以將其最小化為1&#xff1a; Operat…

提高C#編程水平不可不讀的50個要訣

提高C#編程水平的50個要點 1.總是用屬性 (Property) 來代替可訪問的數據成員 2.在 readonly 和 const 之間&#xff0c;優先使用 readonly 3.在 as 和 強制類型轉換之間&#xff0c;優先使用 as 操作符 4.使用條件屬性 (Conditional Attributes) 來代替條件編譯語句 #if 5.總是…

那個年代的蘇聯歌曲

小時候&#xff0c;不時聽父親提起電影《這里的黎明靜悄悄》&#xff0c;怎么也想不到如此美麗的名字為什么要和戰爭聯系起來。后來在大學看了這部電影之后&#xff0c;開始認為這名字是合適的&#xff0c;因為電影講的是女性——戰場中的女性&#xff0c;各自都懷揣著愛情去保…