javascript
JSP与Servlet 程序设计教程
概述
動(dòng)態(tài)網(wǎng)頁技術(shù)與JSP優(yōu)勢(shì)
JSP中調(diào)用java代碼
JSP三種基本動(dòng)態(tài)技術(shù)元素:表達(dá)式、聲明、腳本
表達(dá)式
目的是將一些動(dòng)態(tài)的信息顯示到頁面的最終輸出結(jié)果中
語法: <%= 變量或表達(dá)式 %>
聲明
用于定義變量、方法、類、靜態(tài)初始?jí)K(通常只在聲明部分定義變量及方法)
語法:<% ! 變量定義或方法定義 %>
腳本
JSP動(dòng)態(tài)生成網(wǎng)頁的核心部分,可以利用java語言的三大結(jié)構(gòu)生成不同的頁面元素
語法:<% 腳本內(nèi)容 %>
注釋
語法:<% – 注釋信息 – %>
JSP指令
page指令
可以控制類的導(dǎo)入、內(nèi)容類型等設(shè)置,通常放置在JSP的開始位置
語法:<%@ page 屬性名1=“屬性值1” […屬性名n=“屬性值n”] %>
- import屬性 <%@ page import=“類的相對(duì)路徑” %>
- contentType與pageEncoding 標(biāo)明發(fā)送到客戶程序的文檔MIME類型 <%@ page contentType=“text/html;charset=UTF-8” %> (兩者配合使用) 單獨(dú)設(shè)置字符集的話 <%@ page pageEncoding =“字符集” %>
- language 指定頁面使用的腳本語言 默認(rèn)是java
- errorPage 本頁面加載錯(cuò)誤時(shí)跳轉(zhuǎn)的哪一個(gè)界面
- isErrorPage 表明為錯(cuò)誤顯示界面
- isELIgnored 是否解析JSP語言表達(dá)式
- 其他:session、buffer等
include指令
將屬性file所指向的文件包含到當(dāng)前JSP頁面中(一般用于相同的頭或者頁腳顯示,減少代碼量)
語法:<%@ include=“被包含的文件名(jsp頁面)” %>
JSP動(dòng)作
JSP動(dòng)作通常是在向JSP頁面發(fā)送請(qǐng)求時(shí)才會(huì)執(zhí)行的操作,也就是說它是在頁面請(qǐng)求期間執(zhí)行的,這也是JSP動(dòng)作與JSP行為的本質(zhì)區(qū)別
jsp:include動(dòng)作
jsp:include動(dòng)作與include指令類似 不同是他可以傳遞參數(shù)
語法:< jsp:include page=“被包含的文件路徑(絕對(duì)或相對(duì))”/ > 或
< jsp:include page=“被包含的文件路徑(絕對(duì)或相對(duì))”>
…
< jsp:param name=“參數(shù)名” value=“參數(shù)值” / >
…
< / jsp:include >
不同:
jsp:forward動(dòng)作
作用是轉(zhuǎn)發(fā)請(qǐng)求,如果用戶請(qǐng)求中包含提交的數(shù)據(jù),數(shù)據(jù)也將一塊被轉(zhuǎn)發(fā)(只能轉(zhuǎn)發(fā)到站內(nèi)文件)
語法:語法:< jsp:forward page=“轉(zhuǎn)發(fā)目標(biāo)頁面”/ > 或
< jsp:forward page=“轉(zhuǎn)發(fā)目標(biāo)頁面”>
…
< jsp:param name=“參數(shù)名” value=“參數(shù)值” / >
…
< / jsp:forward >
jsp:plugin動(dòng)作
在網(wǎng)頁中嵌入applet(基本上已經(jīng)棄用)或javaBean
語法:< jsp:plugin code=“插件實(shí)現(xiàn)最頂級(jí)類文件” codebase=“插件類根目錄”
type=“插件類型” width=“寬度” height=“高度” />
< jsp:fallback>替換文字< / jsp:fallback>
< / jsp:plugin>
JSP隱含對(duì)象
request
一個(gè)請(qǐng)求對(duì)象,它包含了用戶發(fā)起請(qǐng)求所包含的所有應(yīng)用數(shù)據(jù)。
常用方法:
- 取得/設(shè)置指定參數(shù)——request.getParameter()/setAttribute()
- 取得指定數(shù)組參數(shù)——getParameterValues()
- 取得URL參數(shù)字符串——getQueryString()
- 取得指定名稱——getParameterNames()
- 請(qǐng)求參數(shù)中文處理——request.setCharacterEncoding(“UTF-8”)
- 取得session——request.getSession();
- 取得請(qǐng)求頭部信息
- 取得客戶和主機(jī)信息
response
代表請(qǐng)求的相應(yīng)對(duì)象。
常用方法:
- 設(shè)置Content-Type——response.setContentType(“text/html;charset=utf-8”);
- 發(fā)送錯(cuò)誤相應(yīng)至客戶端
- 重定向——response.sendRedirect();
當(dāng)使用Redirect跳轉(zhuǎn)Servlet時(shí),跳轉(zhuǎn)實(shí)在客戶端實(shí)現(xiàn)的,也就是說客戶端瀏覽器實(shí)際上請(qǐng)求了2次服務(wù)器,第1次獲取了重定向狀態(tài)碼與重定向的網(wǎng)址,第2次訪問真實(shí)地址。
session
保存當(dāng)前會(huì)話信息
常用方法:
- 取得/設(shè)置指定參數(shù)——session.getAttribute()/setAttribute()
out
out對(duì)象向相應(yīng)中輸出指定信息
- 輸出信息——out.print()
java Bean在JSP中應(yīng)用
語法:頭部添加標(biāo)簽
< jsp:useBean id=“引用名稱” scope=“session|request|page|application”
class=“完整類名”|beanNane=“Bean名稱”|type=“對(duì)象類型” />
獲取和設(shè)置屬性
< jsp:setProperty name=“Java Bean實(shí)例名(上面的id)” property=“屬性名” value=“待設(shè)值”|param=“參數(shù)名稱” />
< jsp:getProperty name=“Java Bean實(shí)例名(上面的id)” property=“屬性名” />
Servlet基礎(chǔ)
servlet功用
- 讀取客戶端發(fā)送的顯示數(shù)據(jù)或者對(duì)客戶端發(fā)送的數(shù)據(jù)進(jìn)行預(yù)處理
- 讀取客戶端發(fā)送的隱含數(shù)據(jù)
- 生成結(jié)果
- 向客戶發(fā)送顯示數(shù)據(jù)
- 發(fā)送隱含的相應(yīng)數(shù)據(jù)
servlet生成html
response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print( JSONObject.toJSONString( result ) );//打印一行數(shù)據(jù)到當(dāng)前請(qǐng)求界面 writer.flush(); writer.close();Servlet處理客戶請(qǐng)求
讀取客戶請(qǐng)求參數(shù)
與JSP操作request一致
可以操作session
跳轉(zhuǎn):
(1) 轉(zhuǎn)發(fā):
//request可以添加參數(shù) request.getRequestDispatcher("路徑").forward(request,response);(2)重定向
response.sendRedirect("路徑");(3)直接輸出返回到ajax中(注意使用ajax請(qǐng)求的才可以,然后由ajax進(jìn)行界面跳轉(zhuǎn))
response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print( JSONObject.toJSONString( result ) );//返回json格式字符串 writer.flush(); writer.close();模型-視圖-控制框架
JSP表達(dá)式語言 EL
JSP內(nèi)置了EL表達(dá)式
能夠以更簡潔的方式顯示結(jié)果,表達(dá)式語言可以訪問請(qǐng)求或者其他作用域中的對(duì)象
功能:
- 訪問存儲(chǔ)在不同作用域的中的對(duì)象
- 方便的訪問java Bean的屬性
- 簡單的訪問集合元素
- 可以方便訪問請(qǐng)求等隱式數(shù)據(jù)
- 支持簡單的運(yùn)算符操作
- 無需類型轉(zhuǎn)換
- 以空值取代異常
語法:
${ 表達(dá)式 }
訪問變量
訪問java Bean的屬性
首先在servlet中 request.setAttribute("user",user); 在jsp中 ${ user.userName }/${ user[userName] }訪問不同作用域中的屬性
當(dāng)變量名一樣時(shí) request>session>application
訪問集合中的變量
${ userList[0].userName }/${ userList[0][userName] }JSTL
OGNL是Object Graphic Navigation Language(對(duì)象圖導(dǎo)航語言)
然后在jsp中引入
EL與JSTL配合使用案例:
<tbody><c:forEach items="${reports}" var="report"><tr><td>${report.id}</td><td>${report.createAt}</td><td>${report.title}</td><td>${report.userId}</td><td>${report.type}</td><td>${report.states}</td><td>${report.summary}</td><%--<td><%= report.getUrl()%></td>--%><td><a href="${report.url}">下載</a></td></tr></c:forEach> </tbody>end
總結(jié)
以上是生活随笔為你收集整理的JSP与Servlet 程序设计教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2567):指令的本质
- 下一篇: JSP程序设计第二版--附带实验代码