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:选择日期自传父