程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> felayman——細學JSP

felayman——細學JSP

編輯:關於C

1. 什麼是JSP

l JSP

– 簡單的說,就是嵌入了Java代碼的HTML,由靜態HTML、專用的JSP標簽和Java代碼組成

– 服務器端的技術。在後台被自動轉換成servlet

– 僅在修改後的第一次被訪問時,才會被轉換成servlet並進行編譯,創建JSP唯一的一個一實例,並調用_jspInit完成初始化,之後每個用戶請求都會創建一個調用JSP實例的_jspService方法的線程。因而多個並發請求會導致多個線程同時調用_jspService

– Tomcat中,默認目錄下的JSP文件被轉換生成的servlet文件及編譯後生成的class文件被放在install_dir/work/ Catalina/ localhost/ _/org/apache/jsp目錄下

JSP頁面page指令的15個常用屬性

<%@page import="java.util.Date"%>

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

pageEncoding="UTF-8"%>

第一個JSP頁面

<%

Date date = new Date();

out.print(date);

%>

1. include指令

在JSP的用法中,經常通過Include指令來包含另外一個頁面。

當我們對這些頁面進行編譯時,當前的頁面會與include指令指定的頁面進行合並。

這就是JSP的include的運行機制

2. taglib指令

可以通過taglib指令標識申明該頁面中所使用的標簽庫,如jstl,struts2

4. JSP的動作標簽

在JSP中的動作指令包括:Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin。
一、Include指令
標簽表示包含一個靜態的或者動態的文件。
語法:

or



注:
1、page="path" 為相對路徑,或者代表相對路徑的表達式。
2、flush="true" 必須使用flush為true,它默認值是false。
3、子句能讓你傳遞一個或多個參數給動態文件,也可在一個頁面中使用多個來傳遞多個參數給動態文件。
二、Forward指令
標簽表示重定向一個靜態html/jsp的文件,或者是一個程序段。
語法:

or

……

注:
1、page="path" 為一個表達式,或者一個字符串。
2、 name 指定參數名,value指定參數值。參數被發送到一個動態文件,參數可以是一個或多個值,而這個文件卻必須是動態文件。要傳遞多個參數,則可以在一個JSP文件中使用多個將多個參數發送到一個動態文件中。
三、UseBean指令
標簽表示用來在JSP頁面中創建一個BEAN實例並指定它的名字以及作用范圍。
語法:

其中typeSpec有以下幾種可能的情況:
class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |
注:
你必須使用class或type,而不能同時使用class和beanName。beanName表示Bean的名字,其形式為“a.b.c”。
四、GetProperty指令
標簽表示獲取BEAN的屬性的值並將之轉化為一個字符串,然後將其插入到輸出的頁面中。
語法:

注:
1、在使用之前,必須用來創建它。
2、不能使用來檢索一個已經被索引了的屬性。
3、能夠和JavaBeans組件一起使用,但是不能與Enterprise Java Bean一起使用。
五、SetProperty指令
標簽表示用來設置Bean中的屬性值。
語法:

其中prop_expr有以下幾種可能的情形:
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"
注:
使用 jsp:setProperty 來為一個Bean的屬性賦值;可以使用兩種方式來實現。
1、在jsp:useBean後使用jsp:setProperty:



在這種方式中,jsp:setProperty將被執行。
2、jsp:setProperty出現在jsp:useBean標簽內:




在這種方式中,jsp:setProperty只會在新的對象被實例化時才將被執行。
* 在中的name值應當和中的id值相同。
六、Plugin指令
標簽表示執行一個applet或Bean,有可能的話還要下載一個Java插件用於執行它。
語法:
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[
[ ]+
]
[ text message for user ]

注:
元素用於在浏覽器中播放或顯示一個對象(典型的就是applet和Bean),而這種顯示需要在浏覽器的java插件。
當Jsp文件被編譯,送往浏覽器時,元素將會根據浏覽器的版本替換成或者元素。注意,用於HTML 4.0 ,用於HTML 3.2。
一般來說,元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定將從哪裡下載這個Java插件

Request對象

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

pageEncoding="UTF-8"%>

request

<%

request.setCharacterEncoding("utf-8");

%>

<%="傳遞方式:"+request.getMethod() %>

<%="字符編碼方式:"+request.getCharacterEncoding()%>

<%="使用的協議:"+request.getProtocol() %>

<%="客戶端地址:"+request.getRequestURI() %>

<%="客戶端地址:"+request.getRequestURL() %>

<%="客戶端IP地址:"+request.getRemoteAddr() %>

<%="獲取服務器端口:"+request.getServerPort() %>

<%="獲取服務器名稱:"+request.getServerName() %>

<%="獲取主機名:"+request.getRemoteHost() %>

<%="獲取腳本文件路徑:"+request.getServletPath() %>

<%="獲取協議頭部信息:"+request.getHeader("host") %>

<%="獲取協議頭部信息:"+request.getHeader("user-agent") %>

<%="獲取協議頭部信息:"+request.getHeader("accept-language") %>

Response

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

pageEncoding="UTF-8"%>

response

<%

//重定向頁面

response.sendRedirect("out.jsp");

//禁止使用緩存

response.setHeader("Cache-Contral","no-store");

//禁用緩存

response.setHeader("Expires","0");

//設置頁面自動刷新

response.setHeader("refresh","1");

//定時跳轉頁面

response.setHeader("refresh","5;URL=out.jsp");

//強制將緩沖區內容輸出客戶端

response.flushBuffer();

//獲取緩沖區大小

response.getBufferSize();

//設置緩沖區大小

response.setBufferSize(1023);

//清除緩沖區大小

response.reset();

//檢查服務器端是否已經把數據寫入到了客戶端

response.isCommitted();

%>

Session

1.test1.jsp

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

pageEncoding="UTF-8"%>

Session

<%

String name = "felayman";

session.setAttribute("username",name);

%>

3. test.jsp

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

pageEncoding="UTF-8"%>

Insert title here

<%

String username = (String)session.getAttribute("username");

%>

session:<%=username %>

PageContext對象

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

pageEncoding="UTF-8"%>

pageContext

<%

//跳轉頁面

pageContext.forward("out.jsp");

%>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved