Jsp基礎(chǔ)
1)Jsp的執(zhí)行過程 :
- tomcat服務(wù)器完成 :
- jsp文件->翻譯成java文件->編譯成class字節(jié)碼文件-> 構(gòu)造類對象-> 調(diào)用方法
2)Jsp語法
- jsp表達式: <%=變量或表達式%> 向瀏覽器輸出變量或表達式計算的結(jié)果
- jsp腳本: <% java代碼 %> 執(zhí)行java代碼 原理:翻譯到_jspService()方法中
- jsp聲明: <%! 變量或方法 %> 聲明jsp的成員變量或成員方法
- jsp注釋: <%!-- jsp注釋 --%> 用于注釋jsp代碼, 不會翻譯到j(luò)ava文件中, 也不會執(zhí)行
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Jsp語法</title>
</head>
<body>
<!-- jsp表達式 -->
<%
//變量
String name = "eric";
int a = 10;
int b =20;
%>
<%=name %>
<br/>
<%=(a-b) %>
<hr/>
<!-- jsp腳本 -->
<%
//生成隨機數(shù)
Random ran = new Random();
float num = ran.nextFloat();
%>
隨機小數(shù):<%=num %>
<hr/>
<!-- 穿插html代碼 -->
<%
for(int i=1;i<=6;i++){
%>
<h<%=i %>>標題<%=i %></h<%=i %>>
<%
}
%>
<hr/>
<!-- 練習(xí): 使用腳本和html代碼顯示99乘法表 -->
<%
for(int i=1;i<=9;i++){//行
for(int j=1;j<=i;j++){//公式
%>
<%=i %> x <%=j %>=<%=(i*j) %>
<%
}
%>
<br/>
<%
}
%>
<%
String age = "20";
/* 腳本中不能聲明方法
public String getAge(){
return age;
}
*/
%>
<!-- jsp聲明 -->
<%!
//變量
String name = "jacky";
public String getName(){
return name;
}
/*jsp聲明中不能重復(fù)定義翻譯好的一些方法
public void _jspInit(){
}
*/
%>
<!-- html注釋 -->
<%-- <jsp:forward page="/01.hello.jsp"></jsp:forward> --%>
<%-- jsp注釋 --%>
</body>
</html>
3)jsp的三大指令
- include指令 : 用于包含其他頁面 (原理: 先合并再翻譯, 叫靜態(tài)包含)
<%@include file="common/header.jsp"%>
- page指令 : 告訴tomcat服務(wù)器如何把jsp文件翻譯成java文件
- language : 翻譯的動態(tài)語言
- import : 類導(dǎo)入
- jsp文件編碼問題:
1. pageEncoding: 告訴tomcat服務(wù)器使用什么編碼翻譯jsp文件(jsp->java文件)
2. contentType: tomcat服務(wù)器發(fā)送給瀏覽器的數(shù)據(jù)編碼(tomcat服務(wù)器->瀏覽器)
<%@ page
language="java"
import="java.util.*,java.text.*"
pageEncoding="utf-8"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page指令</title>
</head>
<body>
<%
new Date();
new SimpleDateFormat();
%>
老王
</body>
</html>
- 異常錯誤相關(guān)的:
1. errorPage: 指定當前jsp頁面的錯誤處理頁面
2. isErorrPage: 指定當前頁面是否為錯誤處理頁面育拨。false->不是錯誤處理頁面,則不能使用exception內(nèi)置對象; true->錯誤處理頁面, 可以使用exception內(nèi)置對象
- 配置全局的錯誤處理頁面 :
<!-- 全局錯誤處理頁面配置 -->
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
- session : 是否開啟session功能。false->不能用session內(nèi)置對象;true->可以使用session內(nèi)置對象
- buffer : jsp頁面的緩存區(qū)大小
- isELIgnore : 是否忽略EL表達式
- taglib指令
Jsp最佳實踐
- Servlet技術(shù): 開發(fā)動態(tài)資源劲适。是一個java類,最擅長寫java代碼
- jsp技術(shù): 開發(fā)動態(tài)資源。通過java代碼最擅長輸出html代碼景鼠。
- 在web項目中涉及到邏輯:
1)接收參數(shù) servlet做
2)處理業(yè)務(wù)邏輯,返回結(jié)果 servlet做
3)顯示數(shù)據(jù)到瀏覽器 jsp做
4)跳轉(zhuǎn)到其他頁面 servlet做 - servlet+jsp模式 : servlet的數(shù)據(jù)->jsp頁面, 使用域?qū)ο?共享數(shù)據(jù)
- servlet: 接收參數(shù); 處理業(yè)務(wù)邏輯; 把結(jié)果保存到域?qū)ο笾? 跳轉(zhuǎn)到j(luò)sp頁面
- Jsp : 從域?qū)ο笕〕鰯?shù)據(jù), 把數(shù)據(jù)顯示到瀏覽器