JSP和JavaBean

JSPhtml

JSP全稱是Java Server Pages。JSP實際上就是Servlet。java

JSP原理:JSP會被Tomcat翻譯成一個Servletweb

JSP語法緩存

1)JSP的Java腳本表達式安全

做用:輸出數據到頁面上服務器

語法:<%=表達式%>session

2)JSP的Java腳本片斷(實際開發中,應作到JSP中不能出現一行Java腳本片斷)app

做用:書寫Java代碼邏輯dom

語法:<%jsp

                   語句1;

                   語句2;

           %>

原理:其中的語句會原封不動的被服務器翻譯到對應的Servlet的service方法中。

3)JSP的聲明

做用:定義類的成員

語法:<%!

                   Java代碼

      %>

4)JSP的註釋:

做用:註釋Java腳本代碼

語法:<%--這是註釋--%>

 

JSP的指令給JSP引擎用的(服務器用的)

基本語法格式:<%@ 指令名稱 屬性1="值1" 屬性2="值2" %>

做用:告訴服務器,該如何處理JSP中除了指令以外的內容。

1.page

做用:定義JSP頁面的各類屬性

屬性:language:指示JSP頁面中使用腳本語言

extends:指示JSP對應的Servlet類的父類。不要修改

import:導入JSP中的Java腳本使用到的類或包。

            JSP引擎自動導入如下包中的類:

            javax.servlet.*

            javax.servlet.http.*

            javax.servlet.jsp.*

主要:一個import屬性能夠導入多個包,用逗號分隔。

session:指示JSP頁面是否建立HttpSession對象。默認值是true,建立

buffer:指示JSP用的輸出流的緩存大小。默認值是8KB.

autoFlush:自動刷新輸出流的緩存

isThreadSafe:指示頁面是不是線程安全的(過期的)。默認是true(true不安全。)

errorPage:指示當前頁面出錯後轉向的頁面

                    目標頁面若是以"/"(當前應用)就是絕對路徑。

配置全局錯誤提示頁面:

web.xml

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>

eg:

1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/error.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">

  </head>
  <body>
    <%
        int i = 100/0;
     %>
  </body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">

  </head>
  <body>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
    <h1>對不起!服務器忙!</h1>
  </body>
</html>

isErrorPage:指示當前頁面是否產生Exception對象。

contentType:指定當前頁面的MIME類型。做用與Servlet中的response.setContentType()做                               用徹底一致

pageEncoding:通知引擎讀取JSP時採用的編碼(由於要翻譯)

                            還有contentType屬性的做用。

isELIgnored:是否忽略EL表達式。${1+1}。默認值是false。

 

2.include(靜態包含:開發中能用靜的不用動的)

做用:包含其餘的組件。

語法:<%include file=""%>file指定要包含的目標組件。路徑若是以"/"(當前應用)就是絕對路徑。

原理:把目標組件的內容加到源組件中,輸出結果。

動態包含:採用動做元素:<jsp:include page=""/>路徑若是以"/"(當前應用)就是絕對路。

3.taglib

做用:引入外部的標籤

語法:<%@taglib uri="標籤名稱空間" prefix="前綴"%>

           <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

JSP內置對象(9個JSP內置對象)

JSP的內置對象引用名稱                                  對象的類型

request                                                     HttpServletRequest

response                                                   HttpServletResponse

session                                                     HttpSession

application                                                 ServletContext

config                                                       ServletConfig

page                                                         this(當前Servlet對象)

exception                                                  java.lang.Throwable

out                                                           JspWriter

pageContext                                              javax.servlet.jsp.PageContext

 

pageContex詳解

1.自己是一個域對象。

同時還能操做其餘三個域對象(pageContext、ServletRequest、HttpSession、ServletContext)

自己表示的域範圍是本頁面

void setAttribute(String name,Object value)

void removeAttribute(String name)

Object getAttribute(String name)

操做其餘三個域對象

void setAttribute(String name,Object value,int scope)

void removeAttribute(String name,int scope)

Object getAttribute(String name,int scope)

 

參數int scope是由PageContext類提供的靜態變量規定的。

PageContext.PAGE_SCOPE:頁面範圍(是PageContext自己中的那個Map,代號page)

PageContext.REQUEST_SCOPE:請求範圍(是ServletRequest中的那個Map,代號request)

PageContext.SESSION_SCOPE:請求範圍(是HttpSession中的那個Map,代號session)

PageContext.APPLICATION_SCOPE:請求範圍(是ServletContext中的那個Map,代號application)

 

Object findAttribute(String name):依次按照page request session application範圍搜索指定名稱的對象,找到爲止。

二、獲取其餘8個隱式對象

三、提供了轉發和包含的方便方法

方法一(轉發):

RequestDispatcher rd = request.getRequestDispatcher("/url");

rd.forward(request,response);                 

方法二(轉發):

pageContext.forward("url");

包含:

pageContext.include("url");

 

四大域對象(兩個資源之間互傳數據)

JSP中隱式對象的名稱            範圍名稱                            具體的類型

pageContext                     page                                 javax.servlet.jsp.PageContext

request                            request                             javax.servlet.ServletRequest

session                            session                              javax.servlet.http.HttpSession

application                        application                         javax.servlet.ServletContext

 

JSP經常使用的動做元素

<jsp:include/>

<jsp:forward/>

<jsp:param/>:在包含和轉發時,利用該標籤傳遞請求參數

 

JavaBean

JavaBean是一個遵循特殊寫法的普通類

特殊寫法:

1)必須有默認的構造方法

2)全部字段爲私有的

3)提供共有的getter或setter

4)通常實現java.io.Serializable

應用場景:在企業級開發中,JavaBean是用來傳遞數據的。

 

JSP中操做JavaBean的動做元素

jsp:useBean

做用:用於在指定域範圍內查找指定名稱的JavaBean對象,找到了就直接使用;沒有找到,建立一個,並放到指定的域範圍內。

屬性:

         id:必須的。

         class:JavaBean的完整類名

         scope:域範圍。默認是page範圍。可選值:page、request、session、application

注意:若是該標籤有主體內容,只有建立新對象時纔會執行。

jsp:setProperty(必須先使用useBean)

做用:調用JavaBean的setter方法。還能自動類型轉換,僅限基本類型

屬性:

         property:必須的。屬性名稱。

                            可使用通配符*。使用前提是請求參數的名稱與屬性的名稱徹底一致。

         name:必須的。哪一個對象的?即jsp:useBean中的id的取值。

         value:屬性的取值。

         param:請求參數名

jsp:getProperty

做用:調用JavaBean的getter方法。

property:必須的。屬性的名稱

name: 必須的。哪一個對象的?即jsp:useBean中的id的取值。

 eg:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
  </head>
  
  <body>
    <jsp:useBean id="person" class="cn.lsl.domain.Person" scope="page"></jsp:useBean>
    <jsp:setProperty property="name" name="person" value="zhangsan" />
    <jsp:setProperty property="gender" name="person" value="male" />
    <jsp:setProperty property="married" name="person" value="false" />
    <jsp:setProperty property="birthday" name="person" value="<%=new Date() %>" />
    
    <jsp:getProperty property="name" name="person"/><br />
    <jsp:getProperty property="gender" name="person"/><br />
    <jsp:getProperty property="married" name="person"/><br />
    <jsp:getProperty property="birthday" name="person"/><br />
  </body> 
</html>

利用請求參數名設置JavaBean的各類屬性

<!-- http://localhost:8080/JSP/2.jsp?name=zhangsan&gender=male  -->
<jsp:setProperty property="name" name="person" param="name" />
<jsp:setProperty property="gender" name="person" param="gender" />
相關文章
相關標籤/搜索