Web應用和web.xml文件:
一、構建Web應用:
1、在任意目錄下創建一個文件夾。
2、在第1步所建的文件夾內建一個WEB-INF文件夾(注意大小寫)。
3、進入Tomcat或任何其他web容器內,找到任何一個web應用,將Web應用的WEB-INF下的web.xml文件
復制到第2步所建的文件夾下。
4、修改復制后的web.xml文件,將該文件修改成只有一個跟元素的XML文件,如下。
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
在WEB-INF文件下新建兩個文件夾:classes和lib。
classes文件夾:保存單個*.class文件;lib文件夾:保存打包后的JAR文件。
5、把該web應用復制到Tomcat的webapps路徑下。通常我們只要將jsp放在web應用的根目錄下,就可以通過瀏覽器來訪問這些頁面了。
<webDemo>---------這是應用的名稱,可以改變
|-WEB-INF
| |-classes
| |-lib
| |-web.xml
|-<*.jsp>
JSP的基本原理:
jsp的本質是servlet。jsp通過在標准的HTML頁面中嵌入java代碼,其靜態的部分無需Java程序控制,只有那些需要從數據庫讀取或需要
動態生成的的頁面內容,才使用Java腳本控制。
jsp頁面內容:
>靜態部分:標准的HTML標簽、靜態的頁面內容,這些內容與靜態HTML頁面相同。
>動態部分:受Java程序控制的內容,這些內容由Java程序來控制。

<%@ page language="java" contentType="text/html; charset=UTF-8" language = "java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>這是一個jsp頁面代碼</title>
</head>
<body>
歡迎進入<br>
現在是時間是:
<%out.println(new java.util.Date()); %>
</body>
</html>
注意:JSP的本質依然是servlet,每個JSP頁面就是一個Servlet實例——JSP頁面有系統編譯成Servlet,Servlet再負責響應用戶請求。
JSP的工作原理:
Client →發出請求→ JSP Server(如果該JSP頁面第一次收到請求,先編譯JSP文件,生成對應的Servlet,如果該JSP頁面已有對應的
←返回標准的HTML頁面← 的Servlet,這根據請求動態生成標准的HTML頁面。注:每次都會根據請求動態生成HTML文檔。)
1、JSP文件必須在JSP服務器內運行。
2、JSP文件必須生成servlet才能執行。
3、每個JSP頁面的第一個訪問者速度很慢,因為必須等待JSP編譯成Servlet。
4、JSP頁面的訪問者無須安裝任何客戶端,甚至不需要可以運行的Java的運行環境,因為JSP頁面輸送到客戶端的是標准HTML頁面。
JSP注釋:
JSP注釋格式: <%-- 注釋內容 --%>
而HTML注釋格式:<!-- 注釋內容 -->
HTML的注釋可以通過源代碼查看到,但JSP的注釋是無法通過源代碼查看到的。這表名JSP注釋不會被發送到客戶端。
JSP聲明:
JSP聲明用於聲明變量和方法。JSP聲明的語法格式如下:
<%! 聲明部分 %>

<%@ page language="java" contentType="text/html; charset=UTF-8" language = "java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>這是一個jsp頁面</title>
</head>
<!-- 下面是JSP聲明部分 -->
<%!
// 聲明一個變量
public int count = 0 ;
// 聲明一個方法
public String info()
{
return "hello : " + count ;
}
%>
<body>
<!-- 每次刷新count的值都會加1 -->
<%
out.println(++ count) ;
%><br/>
<%
out.println(info()) ;
%>
</body>
</html>
輸出JSP表達式:
輸出表達式值的語法格式: <%=表達式>
輸出表達式將轉換成Servlet里面的輸出語言。
JSP腳本:
JSP腳本中可以放置任何可執行性語句,所以可以充分利用Java語言的功能,例如連接數據庫和執行數據庫。
例子:

<%@page import="java.sql.*"%>
<%@page language="java" contentType="text/html; charset=UTF-8" errorPage=""%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>連接數據庫腳本測試</title>
</head>
<body>
<table bgcolor = "yellow" border = "1" width = "300px">
<%
// 注冊數據庫驅動
Class.forName("com.mysql.jdbc.Driver") ;
// 獲取數據庫連接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/select_test","root","hezuoan") ;
// 創建Statement
Statement stmt = conn.createStatement() ;
// 查詢
ResultSet rs = stmt.executeQuery("select * from student_table") ;
while(rs.next())
{
%>
<tr>
<td><%=rs.getString(1)%> </td>
<td><%=rs.getString(2)%> </td>
<td><%=rs.getString(3)%> </td>
</tr>
<%
}
%>
</table>
</body>
(執行SQL查詢需要使用MySQL驅動程序,將驅動的JAR文件放在Tomcat的lib路徑下。)
JSP的三個編譯指令:
> page :該指令是針對當前頁面的指令。
> include :用於指定包含另一個頁面。
> taglib :用於定義和訪問自定義標簽。
格式如下:<%@ 編譯指令名 屬性名="屬性值"... %>
一、page 指令:
page指令通常位於JSP頁面的頂端,一個JSP頁面可以使用多個page指令。語法格式如下:
<%@page
[language="Java"]
[extends= "package.class"]
[import = "package.class|package.*..."]
[session= "true|false"]
[buffer = "none|8KB|size Kb"]
[autoFlush = "true|false"]
[isThreadSafe = "true|false"]
[info = "text"]
[errorPage = "relativeURL"]
[contentType = "mimeType[; charset = characterSet]"|"text/html ; charset = ISO-8859-1"]
[pageEncoding = "ISO-8859-1"]
[isErrorPage = "true|false"]
%>
各指令的屬性定義:
language : 聲明當前JSP頁面使用的腳本語言的種類,通常默認是Java 。
extends : 指定JSP頁面編譯所產生的Java類所繼承的父類,或所實現的接口。
import : 導入包。 (下面幾個包是系統默認導入的:java.lang.* ; javax.servlet.*; javax.servlet.jsp.*;javax.servlet.http.* ;)
session : 設定這個JSP頁面是否需要HTTP Session。
buffer : 指定輸出緩沖區的大小。
autoFlush : 當輸出緩沖區即將溢出時,是否需要強制輸出緩沖區的內容。
info : 設置該JSP程序的信息,也可以看做其說明,可以通過Servlet.getServletInfo()方法獲取。
errorPage : 指定錯誤處理頁。
isErrorPage : 設置本JSP頁面是否為錯誤處理程序。
contentType : 用於設定生成網頁的文件格式和編碼字符集,即MIME類型和頁面字符集類型。
默認的MIME類型是 text/html ;默認的字符集類型為ISO-8859-1.
PageEncoding :是定生成網頁的編碼字符集。
二、include指令
使用include指令,可以將一個外部文件嵌入到當前JSP文件中。語法格式:
<%@include file = "relativeURLSpec"%>
參考的書本:<輕量級Java EE 企業應用實戰>