jsp初級學習

一、jsp學習

1、jsp原理圖

Jsp的訪問原理流程

瀏覽器發(fā)起請求,請求jsp,請求被Tomcat服務器接收,執(zhí)行JspServlet將請求的jsp文件轉譯成為對應的java文件(也是Servlet),然后執(zhí)行轉譯好的Java文件

注意:

jsp中可以書寫java代碼,但是Java代碼會被原樣轉譯到其他對應的java文件中執(zhí)行

2、jsp指令代碼

<%@page language="java"%><%--聲明轉譯語言 --%>

<%@page import="java.util.*,java.lang.*"%><%-- 聲明轉譯時導入的Java包文件--%>

<%@page pageEncoding="utf-8"%><%--設置數(shù)據(jù)的響應編碼格式 --%>

<%@page contentType="text/html;charset=utf-8"%><%--設置響應編碼格式 --%>

<%@page session="true"%><%--默認fasle true表示開啟exception異常對象的使用

默認true是開啟的,false是關閉的 --%>

<%@page errorPage="error.jsp"%><%--設置當jsp運行時出現(xiàn)異常錯誤時跳轉到指定頁面--%>

<%

// int i=5/0;

%><%--

page指令的作用:設置jsp轉譯的時候的一些配置信息

--%>

3、jsp的局部代碼塊和全局代碼塊和腳本段語句

? ? ? ? ? ? ? ? 局部代碼塊

聲明方式:<% java代碼%>

<%

int i=123;

System.out.println(i);

test();

%>

全局代碼塊

聲明方式<%!聲明全局Java代碼 %>

特點:

全局代碼塊中聲明的java代碼,在轉譯時,

? ? ? ? ? ? ? 會被轉譯成jsp對應的java文件的全局代碼。

作用:

聲明方法的全局量等

注意:

使用全局代碼塊聲明方法,使用局部代碼塊調用方法

<%!

int n=456;

public void test(){

System.out.print(n);

}

%>

? java腳本段、表達式

? 聲明方法:

? <%=變量名或者方法名()%>

? 作用:

? 將java代碼的運算結果數(shù)據(jù)或者其他數(shù)據(jù)響應給瀏覽器

? 注意:

? 在該表達式中不能使用分紅結尾

<i><%=i%></i>

4、jsp注釋

5.jsp的靜態(tài)引入與動態(tài)引入

1.靜態(tài)引入和動態(tài)引入的標簽

靜態(tài)引入: <%@include? file=”要引入的資源的相對路徑”>

動態(tài)引入: <jsp:include page=" 要引入的資源的相對路徑"></jsp:include>

2.靜態(tài)引入和動態(tài)引入的

靜態(tài)引入特點:

被引入的jsp文件和原有jsp文件被轉譯成一個java文件 使用。

注意:靜態(tài)引入的相關jsp文件中不能聲明同名變量。

動態(tài)引入特點:

被引入的jsp文件會被單獨轉譯,原有的jsp文件會調用被引入的jsp文件。

注意:動態(tài)引入的相關jsp文件中可以聲明同名變量。

6.jsp的forward標簽

<jsp:forward page="login.jsp"></jsp:forward> //請求轉發(fā)(開始標簽和結束標簽之間不能有空格,否則報下面的500錯誤)

7.內置對象

resqueset 封存了請求相關數(shù)據(jù),由服務器創(chuàng)建

response 響應對象,設置編碼格式

session 解決了同一用戶一個不同請求之間的數(shù)據(jù)共享問題

pageContext 頁面上下文對象,此對象封裝其他八個對象

out 響應數(shù)據(jù)的對象,交于response對象,out對象底層使用了緩沖區(qū)

config ServletConfig對象,使用此對象完成資源的初始化

page 代表當前被執(zhí)行的jsp轉譯的java文件的對象,this

application ServletContext對象,解訣了不同用戶之間的數(shù)據(jù)共享問題

exception jsp頁面的異常對象,封存了異常信息

8 .jsp中的四個作用域對象

1.pageContext:當前頁面作用域

pageContext相當于Java中的this,它代表著當前頁面作用域。在這個作用域中存放的屬性值,只能在當前頁面中取出。request:從請求創(chuàng)建到請求消亡這段時間

瀏覽器從發(fā)起請求開始,到服務器處理完成,返回響應的這段時間。

2.request作用域可以跨越多個頁面 。

另外,還可以使用<jsp:forward>和<jsp:include>兩個方法轉向或包含另一個頁面, 這個時候request對象中保存的信息對另一個頁面也是有效的

3.session:一段客戶端和服務器持續(xù)連接的時間

當客戶端瀏覽器第一次向服務器發(fā)出請求,服務器會為這個客戶端分配一定的內存空間,這個客戶端能在其中存取數(shù)據(jù),任何客戶端都不能操作其他客戶端的內存空間中的數(shù)據(jù),這塊內存空間就稱為session,它也是JSP的九大內置對象之一。

存放于session中的對象,將屬于session作用域,或者叫會話作用域

4.application:服務器開始到服務器關閉為止

當服務器開啟時,會創(chuàng)建一個公共內存區(qū)域,任何客戶端都可以在這個公共內存區(qū)域存取值,這個公共內存區(qū)域,就稱為applicatio

9.jsp和Servlet的職責

JSP 負責頁面展現(xiàn),Servlet 負責業(yè)務邏輯處理。

10.資源路徑總結

1.Servlet中請求轉發(fā)和重定向路徑中第一個斜杠的含義

請求轉發(fā)第一個斜杠:表示項目根目錄

重定向路徑第一個斜杠:表示服務器根目錄

2.jsp中的路徑的第一個斜杠的含義

jsp中的路徑的第一個斜杠表示服務器根目錄

3.jsp中的basePath設置的作用

在myeclipse中設置basePath時會默認給每個資源路徑加上項目根路徑(在寫相對路徑時其實寫的是絕對路徑,注意不能在設置basePath不能寫絕對路徑,否則報404錯誤)

<% String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

//basePath值為項目根路徑 <base href="<%=basePath%>">//給每個資源路徑加上項目根路徑

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 原文鏈接:blog.ouyangsihai.cn >> jsp看這篇文章就夠了 一、JSP基礎語法 1、JSP模板...
    程序員歐陽閱讀 2,099評論 0 33
  • 一、JSP基礎 1.1什么是JSP JSP(Java ServerPage)是Java服務器端動態(tài)頁面技術。是su...
    晨星資源閱讀 1,268評論 0 6
  • 1.學習內容 JSP技術入門和常用指令 JSP的內置對象&標簽介紹 EL表達式&EL的內置對象 2.JSP技術入門...
    WendyVIV閱讀 2,326評論 1 18
  • JSP總結(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    91數(shù)據(jù)閱讀 3,644評論 0 13
  • 其他更多java基礎文章:java基礎學習(目錄) 本章內容較多,全部認真看完可能需要一小時以上,建議邊看邊做筆記...
    Hiwayz閱讀 1,378評論 0 10

友情鏈接更多精彩內容