亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

jsp基礎(chǔ)知識

原創(chuàng) 2016-11-09 15:23:14 701
摘要:一、jsp的3個指令JSP指令(directive)是為JSP引擎而設(shè)計的,它們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其余部分。在JSP 2.0規(guī)范中共定義了三個指令:page指令1、page:作用:用于定義JSP頁面的各種屬性屬性:1.1、 import 和java代碼中的import是一樣的<%@ page import="java.util.Date,

一、jsp的3個指令

JSP指令(directive)是為JSP引擎而設(shè)計的,它們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其余部分。

在JSP 2.0規(guī)范中共定義了三個指令:

page指令

1、page:
作用:用于定義JSP頁面的各種屬性
屬性:
1.1、 import 和java代碼中的import是一樣的

<%@ page import="java.util.Date,java.util.List"%>

或者:
<%@ page import="java.util.Date"%>

<%@ page import="java.util.List"%>

JSP會自動導(dǎo)入以下的包:

import java.lang.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

1.2、 session: 是否會自動創(chuàng)建session對象。默認(rèn)值是true;

1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter輸出字符流。設(shè)置。輸出數(shù)據(jù)的緩存大小,默認(rèn)是8kb.

1.4 errorPage: 如果頁面中有錯誤,則跳轉(zhuǎn)到指定的資源。

errorPage="/uri" 如果寫“/”則代表當(dāng)前應(yīng)用的目錄下,絕對路徑。

如果不寫“/”則代表相對路徑。

1.5、 isErrorPage: 是否創(chuàng)建throwable對象。默認(rèn)是false;

1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");

1.7、 pageEncoding: 告訴JSP引擎要翻譯的文件使用的編碼。

1.8、 isELIgnored: 是否支持EL表達(dá)式。 默認(rèn)是false

<%@ page pageEncoding="gbk" %>

2、include:
靜態(tài)包含:把其它資源包含到當(dāng)前頁面中。

<%@ include file="/include/header.jsp" %>

動態(tài)包含:

<jsp:include page="/include/header.jsp"></jsp:include>

兩者的區(qū)別:翻譯的時間段不同

前者:在翻譯時就把兩個文件合并

后者:不會合并文件,當(dāng)代碼執(zhí)行到include時,才包含另一個文件的內(nèi)容。

原則:能用靜的就不用動的。

3、taglib

作用:在JSP頁面中導(dǎo)入JSTL標(biāo)簽庫。替換jsp中的java代碼片段。

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

二、jsp的6個動作

 使用標(biāo)簽的形式來表示一段java代碼。

如: <jsp:include page="2.jsp"></jsp:include>

<jsp:include > 動態(tài)包含

<jsp:forward> 請求轉(zhuǎn)發(fā)

<jsp:param> 設(shè)置請求參數(shù)

<jsp:useBean> 創(chuàng)建一個對象

<jsp:setProperty> 給指定的對象屬性賦值

<jsp:getProperty> 取出指定對象的屬性值

<%
   Student stu = new Student();
   stu.setName("tom");    
   out.print(stu.getName());      
   //request.getRequestDispatcher("/7.jsp").forward(request, response);
%>
 
<jsp:useBean id="stu1" class="com.itheima.entity.Student"></jsp:useBean>
<jsp:setProperty property="name" name="stu1" value="jerry"/>
<jsp:getProperty property="name" name="stu1"/>
<!-- http://localhost:8080/day11_02_jsp2/6.jsp?name=123 -->
<jsp:forward page="/7.jsp">
   <jsp:param value="123" name="name"/>
   <jsp:param value="333" name="pwd"/>
</jsp:forward>

三、jsp的9個內(nèi)置對象(指在JSP的<%=%> 和<% %>中可以直接使用的對象)

1.request

2.response

3.config

4.application

5.exception

6.Session

7.page

8.out

9.pageContext

1、本身也是一個域?qū)ο螅核梢圆僮髌渌齻€域?qū)ο螅╮equest session application)的數(shù)據(jù)

void setAttribute(String name,Object o);

Object getAttribute(String name);

void removeAttribute(String name);

操作其它域?qū)ο蟮姆椒?/p>

void setAttribute(String name,Object o,int Scope);

Object getAttribute(String name,int Scope);

void removeAttribute(String name,int Scope);

scpoe的值:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE

PageContext.APPLICATION_SCOPE

findAttribute(String name); 自動從page request session application依次查找,找到了就取值,結(jié)束查找。

<body>
    <%
        //pageContext.setAttribute("p", "pp");
        pageContext.setAttribute("p", "pp", PageContext.PAGE_SCOPE);
         
        //pageContext.setAttribute("p", "pp", PageContext.REQUEST_SCOPE);
        request.setAttribute("p", "request");
         
        //pageContext.setAttribute("p", "pp", PageContext.SESSION_SCOPE);
        //session.setAttribute("p", "session");
         
        //pageContext.setAttribute("p", "pp", PageContext.APPLICATION_SCOPE);
        application.setAttribute("p", "application");
         
        //request.getRequestDispatcher("/2.jsp").forward(request, response);
        //response.sendRedirect(request.getContextPath()+"/2.jsp");
        pageContext.forward("/2.jsp");
     %>
</body>
<body>
    <%
        /* String p = (String)pageContext.getAttribute("p");
        out.print(p); */
        //out.print(request.getAttribute("p"));
     %>
      
     <%--  <%=session.getAttribute("p") %>  --%>
     
    <%--  <%=application.getAttribute("p") %> --%>
     
    <%=pageContext.findAttribute("p") %>
</body>

四、四大域?qū)ο螅簩嶋H開發(fā)

PageContext : pageConext 存放的數(shù)據(jù)在當(dāng)前頁面有效。開發(fā)時使用較少。

ServletRequest: request 存放的數(shù)據(jù)在一次請求(轉(zhuǎn)發(fā))內(nèi)有效。使用非常多。

HttpSession: session 存放的數(shù)據(jù)在一次會話中有效。使用的比較多。如:存放用戶的登錄信息,購物車功能。

ServletContext: application 存放的數(shù)據(jù)在整個應(yīng)用范圍內(nèi)都有效。因為范圍太大,應(yīng)盡量少用。

五、EL表達(dá)式

1、EL概述和基本語法

EL表達(dá)式:expression language 表達(dá)式語言

要簡化jsp中java代碼開發(fā)。

它不是一種開發(fā)語言,是jsp中獲取數(shù)據(jù)的一種規(guī)范

2、EL的具體功能

a、獲取數(shù)據(jù)

EL表達(dá)式只能獲取存在4個作用域中的數(shù)據(jù)

${u} 原理: pageContext.findAttribute("u");

url?name=tom ${param.name}

EL獲取對于null這樣的數(shù)據(jù),在頁面中表現(xiàn)為空字符串

${u.name} == u.getName()方法

點(.) 運算符相當(dāng)于調(diào)了getter方法,點后頁面跟的是屬性名。

屬性導(dǎo)航

[]運算符:點能做的,它也能做; 它能做的,點不一定能做

${student.name}== ${student['name']} == ${student["name"]}

b、運算

empty

判斷null,空字符串和沒有元素的集合(即使集合對象本身不為null)都返回true

三元運算符

c、隱式對象:11個

EL隱式對象引用名稱 類型 JSP內(nèi)置對象名稱 說明

10.png

${param.userName } 等價于${param.userName }==request.getParamemter("userName");
${paramValues.hobby[0] } 取數(shù)組的第一個
${header["User-agent"] }
${cookie.JSESSIONID.value }
<form action="${pageContext.request.contextPath }/success.jsp" method="post">
用戶名:<input type="text" name="userName" /><br /> 密碼:<input
type="password" name="pwd" /><br /> <input type="submit" value="登錄" /><br />
</form>

六、JSTL

1、什么是JSTL

JSTL(JavaServerPages Standard Tag Library)JSP標(biāo)準(zhǔn)標(biāo)簽庫

2、JSTL的作用

使用JSTL實現(xiàn)JSP頁面中邏輯處理。如判斷、循環(huán)等。

3、使用JSTL

1)在JSP頁面添加taglib指令

2)使用JSTL標(biāo)簽

4、常用標(biāo)簽介紹

核心標(biāo)簽庫:

> 通用標(biāo)簽: set、 out、 remove

> 條件標(biāo)簽:if choose

> 迭帶標(biāo)簽:foreach


發(fā)佈手記

熱門詞條