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