JSP程序設計(第一天)

JSP簡介

JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。

JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。


JSP基本結構

  • 一個JSP頁面由5種元素組成而成。
  • 普通的HTML標記。
  • JSP標記,如指令標記、動作標記。
  • 變量和方法的聲明。
  • Java表達式。
  • Java表達式。

JSP的執行過程

在這裏插入圖片描述


JSP的運行原理

(1) 把JSP頁面中的HTML標記(頁面的靜態部分)發送給用戶的瀏覽器,由瀏覽器中的HTML解釋器負責解釋執行HTML標記。

(2) 負責處理JSP標記,並將有關的處理借結果發送到用戶的瀏覽器。

(3) 執行”<%“和”%>”之間的Java程序片(頁面中的動態部分),並把執行結果交給用戶的瀏覽器顯示。

(4) 當多個用戶請求一個JSP頁面時,Tomcat服務器爲每個用戶啓動一個線程,該線程負責執行常駐內存的字節碼文件來響應相應用戶的請求。


七大元素

1.HTML文本元素

html 是超文本標記語言。html裏的一切元素都適用。

2.指令

page指令

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

page指令用來定義整個JSP頁面的一些屬性和這些屬性的值。page指令標記可以指定如下屬性的值。

language 該屬性值目前只能取 java,且屬性的默認值也是 java。
import 爲JSP頁面引入Java核心類庫。
屬性名 屬性值
contentType 確定JSP頁面響應的MIME類型和JSP頁面字符的編碼。
session 設置是否需要使用內置對象。
buffer 指定out的緩衝區的大小或者不適用緩衝區。
auotFlush 指定out的緩衝區被填滿是,是否自動刷新。
isThreadSaf 設置JSP頁面是否可以多線程訪問。
info 爲JSP頁面準備一個可能需要經常使用的字符串。

include指令
如果需要在JSP頁面的某處整體插入一個文件,就可以考慮使用這個指令標記。該指令標記的形式如下。

<%@ include file="文件的URL" %>

taglib指令

申明該JSP文件使用了自定義的標籤。

<%@taglib uri="URIToTagLibrary" prefix="tagPrefix" %>  

1、uri屬性:用來指定標籤庫的存放位置。
2、prefix屬性:指定該標籤庫必須使用的前綴。

3.註釋

1.HTML註釋

<!--   註釋的內容   -->

2.JSP頁面註釋

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

4.表達式

可以在<%= %>之間插入的內容

<%=x+y %> 		注意:<%和=之間不要有空格。

5.Java程序片

可以在<% %>之間插入的內容。

<table border="1" id="tab">
		<%
			for (int i = 0; i < 10; i++) {
		%>
		<tr>
			<%
				for (int j = 0; j < 10; j++) {
						String color = Integer.toHexString(random.nextInt(8888));
			%>
			<td bgcolor="#<%=color%>"><%=++count%></td>
			<%
				}
			%>
		</tr>
		<%
			}
		%>
	</table>

6.屬性和方法的聲明

可以在<%! 和 %>之間插入的語句

<%!
	int count = 0;
	private Random random = new Random(); 
	public int getFontSize(){
		return random.nextInt(80);
	}
	public String getColor(){
		return Integer.toHexString(random.nextInt(8888));
	}
		
	%>

7.動作標記元素

<jsp:param	name="屬性名字"		value="屬性的值"/>

九大內置對象

對象名稱
out
response
request
pageContext
session
application
config
page
exception

request常用方法

  • request.getParameter(String s) 獲取用戶提交的信息。
<p>姓名:<%= request.getParameter("username")%></p>
  • request.getParameterValues(“hobby”) 獲取用戶提交的複選框信息。
<p>愛好:<%=Arrays.toString(request.getParameterValues("hobby")) %></p>
  • request.setCharacterEncoding(String s) 使用request的方法之前,一定要設置編碼。
request.setCharacterEncoding("utf-8");
  • request.getHeader(String s) 獲取HTTP協議定義的頭文件信息。
request.getHeader("Host")				//127.0.0.1:8080
  • request.getHeaderNames() 獲取頭名字的一個枚舉
request.getHeaderNames()	
	<%
		Enumeration<String> e = request.getHeaderNames();
		while (e.hasMoreElements()) {
			String headname = e.nextElement();
			Object value = request.getHeader(headname);
			out.println(headname + "=" + value + "<br>");

		}
	%>	
可以獲取到信息如下:
accept=image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
 referer=http://localhost:8080/jsp1/register.jsp
 accept-language=zh-CN
 content-type=application/x-www-form-urlencoded
 ua-cpu=AMD64
 accept-encoding=gzip, deflate
 user-agent=Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
 host=localhost:8080
 content-length=122
 connection=Keep-Alive
 cache-control=no-cache
 cookie=JSESSIONID=DEFC9244E4FA4E2618E58A5591ED50E5; Webstorm-f7b670b3=f4532459-88f1-4a59-a617-5ee0df0d2035
  • request.getServerName() 獲取服務器的名字
request.getServerName()				//127.0.0.1
  • request.getRemoteHost() 獲取用戶機的名稱
request.getRemoteHost()				//127.0.0.1
  • request.getServerPort() 獲取服務器的端口號
request.getServerPort()				//8080

request.getParameterNames() 獲取用戶提交的所有參數的名字

request.getParameterNames()	
	<%
		Enumeration messages = request.getParameterNames();
		while (messages.hasMoreElements()) {
			String s = (String)messages.nextElement();
			out.println(s);
		}
	%>
獲取的信息如下
username password states hobby prop self 

request.getRemoteAddr() 獲取用戶的IP地址

IP:<%=request.getRemoteAddr() %>			//0:0:0:0:0:0:0:1 

Tomcat目錄

在這裏插入圖片描述

bin目錄

bin目錄主要是用來存放tomcat的命令,主要有兩大類,一類是以.sh結尾的(linux命令),另一類是以.bat結尾的(windows命令)。

很多環境變量的設置都在此處,

例如可以設置JDK路徑、tomcat路徑

startup 用來啓動tomcat

shutdown 用來關閉tomcat

修改catalina可以設置tomcat的內存

conf目錄

conf目錄主要是用來存放tomcat的一些配置文件。

server.xml可以設置端口號、設置域名或IP、默認加載的項目、請求編碼 。

web.xml可以設置tomcat支持的文件類型。

context.xml可以用來配置數據源之類的 。

tomcat-users.xml用來配置管理tomcat的用戶與權限 。

在Catalina目錄下可以設置默認加載的項目 。

lib目錄

lib目錄主要用來存放tomcat運行需要加載的jar包。

logs目錄

顧名思義,這是存放日誌文件的目錄。

temp目錄

temp目錄用戶存放tomcat在運行過程中產生的臨時文件。

webapps目錄

webapps目錄用來存放應用程序,當tomcat啓動時會去加載webapps目錄下的應用程序。

work目錄

work目錄用來存放運行時的編譯後文件。 清空work目錄,然後重啓tomcat,可以達到清除緩存的作用。


指令包含和動作包含的區別

1.指令語法不同

<%@ include file="文件的URL"%>
<%@ jsp: include page="文件的URL"%>

2.處理方式不同

inlude指令標記是在編譯階段就處理所需要的文件,被處理的文件在邏輯和語法上依賴當前JSP頁面;而inlcude動作標記是在JSP頁面運行時才處理文件,被處理的文件在邏輯和語法上獨立於當前JSP頁面,可以更加靈活地是使用param子標記處理所需要的文件。

3.處理時間不同

include指令標記執行速度快;而include動作標記執行速度相對來說要慢一些。


Post和Get提交數據的區別

1.get:地址欄傳參 post:不是在地址欄傳參,隱式請求體方式
2.get不安全,post安全
3.get:傳參字符長度有限制(大概255)。post沒有限制
4.get:作爲郵件傳輸或收藏 post不可以

表單提交


form 屬性列表
action=“reg.jsp” 表單提交的url
target="_blank" 表單提交的目標tab
method=“get” 表單提交的方式get| post
enctype=“multipart/form-data” 表單數據的編碼方式

get:只能傳輸文本、長度有限制、數據明文(不安全),速度快。
post:傳輸類型無限制、長度無限制、數據安全,速度慢。

enctype="multipart/form-data"表示數據進行2進制編碼;
當表單中有文件上傳時,必須指定它還要必須以post方式進行。


enctype是表單提交時,數據的編碼形式:

enctype=‘application/x-www-form-urlencoded’ url編碼
enctype=‘multipart/form-data’ 數據流編碼
enctype=‘text/plain’
target=’_blank’ 新開tab頁提交數據

<input type=“text” name=“htmer” autocomplete=“off” /> input表單輸入框不記錄輸入過信息的方法

input類型常用type屬性可以指定的GUI類型

readonly 只讀屬性
disabled 禁用,一但表單元素被禁用,那麼不會參與數據的提交
checked 單選或複選的默認選中。
selected 下拉菜單的默認選中。


提交數據

提交數據類型
 <input type='text'>  單行文本
<input type='password'>   單行密碼-->
<input type='checkbox'>   複選-->
<input type='radio'>     單選
<input type='hidden'>     隱藏
<input type='file'>      文件

按鈕類型
<input type='submit'>   提交按鈕
<input type='button'>   普通按鈕
<button></button>    按鈕標籤
	<button type='button'>
      <img src='images/a4.jpg'>圖片提交
    </button>
<input type='reset'>   重置按鈕
<input type='image'>   圖片提交按鈕
注意:如果需要參與數據的提交,那麼必須有name屬性。
    
2<select></select> 下拉菜單
注意:通過 <optgroup></optgroup> 標籤把相關的選項組合在一起
    
3<textarea></textarea> 多行文本
注意:多行文本域,沒有value屬性,標籤之間的內容會被當作value值,不支持html格式的值.

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