JavaWeb之 JSP基礎

什麼是JSP

JSP的全稱是java server page, java服務頁面。是提供java服務的頁面~html

那麼和Servlet有什麼區別呢?JSP的頁面既能夠寫java代碼~也能夠寫html代碼哦!!java

 

JSP的特色

JSP的做用:JSP是主要用來開發動態資源的技術~web

那麼JSP怎麼運行呢?我這裏交給Tomcat服務器運行了~apache

 

 

 Jsp運行的目錄

 

%tomcat%/work是tomcat服務器運行jsp頁面的臨時目錄。瀏覽器

 

那麼咱們來看看JSP的原理,JSP是怎麼運行的~

 

咱們用瀏覽器輸入: http://localhost:8080/day12/01.hello.jsptomcat

 

第一次訪問時:               找到文件-翻譯-編譯-構造實例-調用方法服務器

1)在day12web應用下找到01.hello.jsp文件session

2tomcat服務器將01.hello.jsp文件翻譯成java源文件。例如 01.hello_jsp.javajsp

3tomcat服務器將java源碼編譯成class字節碼, 例如 01.hello_jsp.class工具

4tomcat服務器構造01.hello_jsp類的實例,調用類中的方法。

 

n次訪問時:                              已經存在了jsp文件對應的class對象的一個實例,直接用該實例調用方法

tomcat服務器再也不翻譯和編譯jsp文件

 

注意:                   jsp文件被修改,或jsp臨時文件被刪除,服務器都會從新翻譯和編譯jsp文件。

1)當修改了jsp文件時的第一次訪問,從新再翻譯和編譯jsp文件。

2)當刪除%tomcat%/workjsp臨時文件的第一次訪問,從新再翻譯和編譯jsp文件。

 

 Jsp的原理

問題: Jsp文件翻譯成的java源文件是什麼類??

public final class hello extends HttpJspBase

public abstract class org.apache.jasper.runtime.HttpJspBase extends HttpServlet implements HttpJspPage {  

    繼承自HttpServlet!!!  

結論: Jsp就是一個servlet 

注意

 1) Jsp文件的html代碼,經過out.writer()方法寫出到瀏覽器。

 2) Jsp文件的java代碼,直接拷貝到java源文件中,經過_jspService()方法執行。

那麼咱們下面來體驗一下JSP吧~

 

jsp的體驗

需求: 用jsp向瀏覽器輸出當前時間。下面是核心代碼:

 

  <body>
           <h1><font color='red'>歡迎來到此頁面</font></h1>
           <%
               SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
               String date = simaple.format(new Date());
               request.setAttribute("aa", "123");
            %>            
           當前的時間是:<%=date %>
           <%
               String ip = request.getRemoteAddr();
               out.write(ip);           
            %>                   
  </body>

 

而後用瀏覽器直接訪問這個jsp,就能看到如下的效果了~

體驗完JSP,是否是很本身寫一個體驗一下呢?下面咱們就來學習JSP的語法吧!

 

JSP的語法

Jsp模板 

Jsp模塊:就是jsp頁面中的html代碼

 

Jsp表達式         

例如:<%=x%>   表達式<%=x*y+k-n%>

這樣寫的表達式,翻譯後實質上是用過out.print()來輸出。

格式: <%=變量或表達式計算%>

做用: 用於向瀏覽器輸出變量的值或表達式計算的結果

注意:

1)表達式的原理就是經過out.print()方法向瀏覽器輸出內容。

2)表達式後面不能帶分號。

 

Jsp腳本   

也就是html中的java代碼

格式:<%  java代碼  %>

做用: 執行java代碼

注意:

1)能夠寫多行java代碼

2)原理是把腳本代碼原封不動拷貝到_jspService方法中執行。

3jsp腳本能夠穿插html代碼結合使用

 

Jsp聲明  

聲明裏面的 變量和方法 是 成員變量 和成員方法

格式: <%!  %>

做用: 聲明jsp的變量和方法

注意:

1Jsp腳本聲明的變量是局部變量,Jsp聲明的變量是成員變量。

2Jsp腳本中不能聲明方法的,Jsp聲明的方法是成員方法。

3jsp聲明的方法不能和翻譯成的java類的方法重複。

 

 Jsp註釋 

jsp註釋只會出如今jsp文件中,不會被翻譯到java文件裏。

格式: <%--  jsp註釋 --%>

注意:

html的註釋會翻譯到java源代碼中,會被執行的。

jsp的註釋不會翻譯到java源代碼中,不會被執行的。

 

看完前面的介紹那麼久寫一段代碼來體現下吧~

 

  <body>
          <%--模板 --%>        
           <h1><font color='red'>歡迎來到此頁面</font></h1>
           
           <%--腳本 --%>>        
           <%                                                    
               SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
               String date = simaple.format(new Date());
               request.setAttribute("aa", "123");
            %>            
            
            <%--表達式 --%>>
           當前的時間是:<%=date %>
           <%
               String ip = request.getRemoteAddr();
               out.write(ip);
               out.write(s);          
            %>
            
            <%--聲明--%>
            <%!
               String s = "hello";
            %>
                               
  </body>

 

而後看看輸出的結果把~:

上述就是JSP的基本語法,除了基本語法,咱們還須要學習JSP的三大指令。

 

 

Jsp大指令

 

 一)taglib指令(這個咱們之後再說)

    主要用於導入jsp標籤庫

 

二)include指令

 

include指令  ----把其它頁面一併翻譯到java文件裏,這個頁面不須要具有html,body,head標籤,由於它會被翻譯到jsp文件對應的htmlbody

 

做用: 主要用於包含其餘頁面

 

格式:<%@inculde  file="被包含的頁面"%>

 

注意:

 

1include指令原理: 包含與被包含的頁面內容先合併翻譯到一個java文件中,再編譯運行。(先合併再翻譯),這種包含叫靜態包含。(源碼包含)

 

2)若是使用include指令包含,那麼被包含的頁面不須要使用全局的html標籤(例如,html,body,head

 

 

page指令

做用: 主要用於告訴服務器如何翻譯jsp文件,主要有下面幾種設置:

 

<%@ page 

  language="java"    --告訴服務器用什麼語言翻譯此jsp頁面

  import="java.util.*" --導包,在jsp頁面編寫java須要手動導包。除了java.lang包覺得都須要導入。多個包之間用逗號分隔

   buffer="8kb"    --jsp頁面緩衝區大小

 
 

   session="true"  -- 是否開啓session功能

 
 

    isELIgnored="false"  --是否忽略EL表達式



關於jsp文件的編碼:

  pageEncoding="utf-8"    --告訴服務器用什麼編碼翻譯此jsp文件

  contentType="text/html; charset=utf-8"  --服務器發送給瀏覽器數據的編碼


注意:

1)contentType屬性的編碼看pageEncoding編碼

2)在開發工具中,保存jsp文件的編碼自動根據pageEncoding的編碼改變。


結論:

1)在開發工具中,jsp文件的編碼問題只須要設置pageEncoding便可!

2)若是用記事本開發jsp文件,要注意保存jsp文件的編碼。

 

異常相關的:

 errorPage=""   -指定錯誤處理頁面,當頁面出現錯就會轉跳到錯誤頁面。

 isErrorPage=""  --指定當前頁面是不是錯誤處理頁面true:是,那麼可使用exception的內置對象,使用它的一些方法。

false:不是。不可使用exception對象。

 

全局異常處理:在web.xml中加上配置

<!-- 配置全局異常 -->
    <error-page>
        <error-code>500</error-code>
        <location>/common/500.jsp</location>   505錯誤都會轉跳到這個頁面
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/common/404.html</location>    404錯誤都會轉跳到這個頁面

    </error-page>
相關文章
相關標籤/搜索