亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 0088.htm

?? JspServlet教程專欄 對javaservlet講述的非常詳細
?? HTM
字號:
<html>

<head>
<title>新時代軟件教程:操作系統 主頁制作 服務器 設計軟件 網絡技術 編程語言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>Resin中JSP的范例</strong></big></p>

<div align="right">(文/Scott Ferguson 編譯/Blueski)</div>

<br>
目錄如下:<br>
1 引論 <br>
2 范例的框架: Hello, World <br>
3 Servlet 評論 <br>
4 展示留言本 <br>
5 留言本的模式 <br>
6 作為應用屬性的留言本<br>
7 留言本的邏輯 <br>
8 結論 <br>
<br>
<br>
1 引論 <br>
<br>
JSP的強大優勢在于把一種應用的商務邏輯和它的介紹分離開來。用 Smalltalk的面向對象的術語來說, JSP鼓勵MVC(model-view-controller)的web應用。JSP的classes 或 beans 是模型, JSP 是這個視圖, 而Servlet是控制器。 <br>
<br>
這個例子是一個簡單的留言本,包括用戶登錄和留言。它被作為Resin平臺的示范:<br>
--執行角色<br>
--模型 A 留言本 <br>
--用于新用戶的login.jsp<br>
--用于已注冊用戶的add.jsp <br>
--控制器 GuestJsp, 一個用來管理狀態的servlet <br>
<br>
<br>
2 樣板的框架: Hello, World <br>
<br>
GuestJsp servlet的框架把 &quot;Hello, World&quot; 這個字符串傳給login.jsp頁面。這個框架為留言本設立結構。具體細節將在下面補充。 <br>
<br>
這個例子被編譯后可以瀏覽到:<br>
<br>
http://localhost:8080/servlet/jsp.GuestJsp <br>
<br>
你可以看到頁面上有這樣的顯示: Hello, world <br>
<br>
JSP模板是以Servlet的處理開始然后把處理結果傳給JSP頁進行格式化。 <br>
<br>
以下使用了一個Servlet2.1 ServletContext的特性 getRequestDispatcher()。<br>
請求的調度器在服務器上讓servlets直接向前傳送并包括了任何可能的子請求。對SSI包含來說這是一個更靈活的取代做法。<br>
在servlet文件中請求的調度器可以包含任何頁面,servlet,或JSP的結果。 GuestJsp將使用dispatcher.forward()來將控制傳給JSP頁進行格式化。 <br>
<br>
GuestJsp.java: Skeleton package jsp.GuestJsp;<br>
<br>
import java.io.*;<br>
import java.util.*;<br>
<br>
import javax.servlet.*;<br>
import javax.servlet.http.*;<br>
<br>
/**<br>
* GuestJsp is a servlet controlling user<br>
* interaction with the guest book.<br>
*/<br>
public class GuestJsp extends HttpServlet {<br>
/**<br>
* doGet handles GET requests<br>
*/<br>
public void doGet(HttpServletRequest req,<br>
HttpServletResponse res)<br>
throws ServletException, IOException<br>
{<br>
// Save the message in the request for login.jsp<br>
req.setAttribute(&quot;message&quot;, &quot;Hello, world&quot;);<br>
<br>
// get the application object<br>
ServletContext app = getServletContext();<br>
<br>
// select login.jsp as the template<br>
RequestDispatcher disp;<br>
disp = app.getRequestDispatcher(&quot;login.jsp&quot;);<br>
<br>
// forward the request to the template<br>
disp.forward(req, res);<br>
}<br>
}<br>
<br>
<br>
servlet和jsp頁使用HttpRequest對象中的屬性進行通信。skeleton在&quot;message&quot;屬性中保存了&quot;Hello, World&quot;。<br>
當login.jsp啟動時,它將捕捉到該字符串并將其打印出來。 <br>
<br>
由于Resin的JavaScript能夠讀取擴充的Bean模型,它可以將request.getAttribute(&quot;message&quot;)轉換成為<br>
JavaScript的對應物 request.attribute.message。 <br>
<br>
login.jsp: Skeleton &lt;%@ page language=javascript %&gt;<br>
<br>
&lt;head&gt;<br>
&lt;title&gt;&lt;%= request.attribute.message %&gt;&lt;/title&gt;<br>
&lt;/head&gt;<br>
<br>
&lt;body bgcolor='white'&gt;<br>
&lt;h1&gt;&lt;%= request.attribute.message %&gt;&lt;/h1&gt;<br>
&lt;/body&gt;<br>
<br>
3 Servlet的復習<br>
<br>
對于來自于ASP或CGI背景并轉向jsp的人來說,<br>
Servlets代替CGI腳本體現了Java在動態類加載方面的優勢。servlet就是一個Java類,<br>
它對Servlet或HttpServlet進行了擴展并放置到適當的路徑中。Resin將自動加載servlet并執行它。 <br>
<br>
url /servlet/classname將request提交給Servlet請求器。請求器會從doc/WEB-INF/classes自動加載Java類的類名<br>
并試圖執行Servlet的service方法。 <br>
<br>
Resin將定期檢查類文件以判斷是否被修改過。如果被修改過,則將用新的servlet取代舊的。 <br>
<br>
4 顯示留言本 <br>
<br>
在基本框架已經運行后, 下一步是創建model。 <br>
<br>
5 留言本模型<br>
<br>
留言本是很直接的,這里知識包含了一下API。它遵從Bean模型以簡化JavaScript。<br>
同樣的API可以工作于HashMap, 基于文件,以及數據庫應用。 <br>
<br>
JSP文件只能存取public方法。所以JSP文件無法創建一個新的留言本或者增加一個新用戶。<br>
這是GuestJsp servlet的責任。 <br>
<br>
jsp.Guest.java API package jsp;<br>
<br>
public class Guest {<br>
Guest();<br>
public String getName();<br>
public String getComment();<br>
}<br>
<br>
<br>
Resin的JavaScript能讀取Bean模型。所以使用JavaScript的JSP頁面可以存取getName()和getComment()<br>
作為屬性。例如,你可以簡化使用guest.name和guest.comment。 <br>
<br>
jsp.GuestBook.java API package jsp;<br>
<br>
public class GuestBook {<br>
GuestBook();<br>
void addGuest(String name, String comment);<br>
public Iterator iterator();<br>
}<br>
<br>
<br>
Resin的JavaScript同樣可以讀取iterator()調用,所以你可以使用JavaScript用于 ... 任何一個來取得用戶: <br>
<br>
for (var guest in guestBook) {<br>
...<br>
}<br>
<br>
<br>
<br>
GuestBook作為application屬性<br>
為了使得例子保持簡單,GuestJsp在application (ServletContext)中存取GuestBook。作為例子,<br>
在application中保存數據是可以接受的,但對于完全成熟的應用,最好僅使用application將數據放到其它地方。<br>
<br>
jsp.GuestJsp.java // get the application object<br>
ServletContext app = getServletContext();<br>
<br>
GuestBook guestBook;<br>
<br>
// The guestBook is stored in the application<br>
synchronized (app) {<br>
guestBook = (GuestBook) app.getAttribute(&quot;guest_book&quot;);<br>
<br>
// If it doesn't exist, create it.<br>
if (guestBook == null) {<br>
guestBook = new GuestBook();<br>
guestBook.addGuest(&quot;Harry Potter&quot;, &quot;Griffindor rules&quot;);<br>
guestBook.addGuest(&quot;Draco Malfoy&quot;, &quot;Slytherin rules&quot;);<br>
app.setAttribute(&quot;guest_book&quot;, guestBook);<br>
}<br>
}<br>
<br>
RequestDispatcher disp;<br>
disp = app.getRequestDispatcher(&quot;login.jsp&quot;);<br>
<br>
// synchronize the Application so the JSP file <br>
// doesn't need to worry about threading<br>
synchronized (app) {<br>
disp.forward(req, res);<br>
}<br>
<br>
<br>
JSP文件本身是簡單的。它從application獲取留言本并在表中顯示內容。通常,<br>
application對象需要同步,因為一些客戶端可能同時瀏同一頁面。<br>
GuestJsp在jsp文件被調用之前小心處理了同步情況。 <br>
<br>
login.jsp: Display Guest Book &lt;%@ page language=javascript %&gt;<br>
<br>
&lt;head&gt;<br>
&lt;title&gt;Hogwarts Guest Book&lt;/title&gt;<br>
&lt;/head&gt;<br>
<br>
&lt;body bgcolor='white'&gt;<br>
<br>
&lt;h1&gt;Hogwarts Guest Book&lt;/h1&gt;<br>
&lt;table&gt;<br>
&lt;tr&gt;&lt;td width='25%'&gt;&lt;em&gt;Name&lt;/em&gt;&lt;td&gt;&lt;em&gt;Comment&lt;/em&gt;<br>
&lt;%<br>
var guestBook = application.attribute.guest_book<br>
<br>
for (var guest in guestBook) {<br>
out.writeln(&quot;&lt;tr&gt;&lt;td&gt;&quot; + guest.name + &quot;&lt;td&gt;&quot; + guest.comment);<br>
}<br>
%&gt;<br>
&lt;/table&gt;<br>
<br>
&lt;/body&gt;<br>
<br>
<br>
Hogwarts Guest Book<br>
Name Comment <br>
Harry Potter Griffindor Rules <br>
Draco Malfoy Slytherin Rules <br>
<br>
<br>
6 留言本的規則(logic)--作為應用屬性的留言本 <br>
<br>
留言本的規則是很簡單的。如果用戶沒有登錄,他會看到一個提示和登錄表。<br>
登錄后他會看到提示并在一個表中加入留言。 login.jsp給出了登錄的頁面,add.jsp給出了<br>
增加流言的頁面。 <br>
<br>
GuestJsp在session變量中保存了規則信息。 <br>
<br>
執行'login'來登錄或 'add'來增加留言。 其中<br>
name: 用戶名 <br>
password: 口令 <br>
comment:留言<br>
<br>
7 留言本規則 ...<br>
<br>
// name from the session<br>
String sessionName = session.getValue(&quot;name&quot;);<br>
<br>
// action from the forms<br>
String action = request.getParameter(&quot;action&quot;);<br>
<br>
// name from the login.jsp form<br>
String userName = request.getParameter(&quot;name&quot;);<br>
<br>
// password from the login.jsp form<br>
String password = request.getParameter(&quot;password&quot;);<br>
<br>
// comment from the add.jsp form<br>
String comment = request.getParameter(&quot;comment&quot;);<br>
<br>
// login stores the user in the session<br>
if (action != null &amp;&amp; action.equals(&quot;login&quot;) &amp;&amp;<br>
userName != null &amp;&amp;<br>
password != null &amp;&amp; password.equals(&quot;quidditch&quot;)) {<br>
session.putValue(&quot;name&quot;, userName);<br>
}<br>
<br>
// adds a new guest<br>
if (action != null &amp;&amp; action.equals(&quot;add&quot;) &amp;&amp;<br>
sessionName != null &amp;&amp;<br>
comment != null) {<br>
guestBook.addGuest(sessionName, comment);<br>
}<br>
<br>
String template;<br>
// if not logged in, use login.jsp<br>
if (session.getValue(&quot;name&quot;) == null)<br>
template = &quot;login.jsp&quot;;<br>
// if logged in, use add.jsp<br>
else<br>
template = &quot;add.jsp&quot;;<br>
<br>
RequestDispatcher disp;<br>
disp = app.getRequestDispatcher(template);<br>
<br>
...<br>
<br>
<br>
login.jsp和add.jsp僅加上了不同forms在前一個section中顯示代碼。 <br>
<br>
login.jsp &lt;%@ page language=javascript %&gt;<br>
&lt;head&gt;<br>
&lt;title&gt;Hogwarts Guest Book: Login&lt;/title&gt;<br>
&lt;/head&gt;<br>
&lt;body bgcolor='white'&gt;<br>
<br>
&lt;h1&gt;Hogwarts Guest Book&lt;/h1&gt;<br>
&lt;table&gt;<br>
&lt;tr&gt;&lt;td width='25%'&gt;&lt;em&gt;Name&lt;/em&gt;&lt;td&gt;&lt;em&gt;Comment&lt;/em&gt;<br>
&lt;%<br>
var guestBook = application.attribute.guest_book<br>
<br>
for (var guest in guestBook) {<br>
out.writeln(&quot;&lt;tr&gt;&lt;td&gt;&quot; + guest.name + &quot;&lt;td&gt;&quot; + guest.comment);<br>
}<br>
%&gt;<br>
&lt;/table&gt;<br>
&lt;hr&gt;<br>
<br>
&lt;form action='GuestJsp' method='post'&gt;<br>
&lt;input type=hidden name='action' value='login'&gt;<br>
&lt;table&gt;<br>
&lt;tr&gt;&lt;td&gt;Name:&lt;td&gt;&lt;input name='Name'&gt;<br>
&lt;tr&gt;&lt;td&gt;Password:&lt;td&gt;&lt;input name='Password' type='password'&gt;<br>
&lt;tr&gt;&lt;td&gt;&lt;input type=submit value='Login'&gt;<br>
&lt;/table&gt;<br>
&lt;/form&gt;<br>
&lt;/body&gt;<br>
<br>
<br>
8 結論 <br>
<br>
Resin示例演示了擴充留言本的一些方法,包括加入一些智能的東西用于form處理。然而,由于forms取得更多的只能,即使是JSP模板也變得復雜化了。<br>
有一個結論:XTP模板。 <br>
<br>

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91一区一区三区| 在线观看亚洲一区| 欧美在线观看视频一区二区三区| 在线观看91av| 国产精品福利在线播放| 日韩精品电影在线| 久久精品国产久精国产| 国产一区二区三区国产| 欧美色图在线观看| 欧美大片在线观看一区| 香港成人在线视频| 国产jizzjizz一区二区| 91久久精品一区二区三| 欧美经典一区二区| 日本伊人精品一区二区三区观看方式| 国产成人免费视频网站| 欧美丝袜丝交足nylons图片| 国产精品久久久久7777按摩| 日本不卡视频一二三区| 欧美日韩一二三区| 中文字幕视频一区| 国产精品羞羞答答xxdd| 欧美一区二区三区日韩| 日本一区二区三区久久久久久久久不 | 欧美日韩国产乱码电影| 亚洲三级理论片| 国产精品一线二线三线| 久久嫩草精品久久久精品一| 亚洲国产一区二区在线播放| 欧美自拍偷拍午夜视频| 国产精品久久久久一区二区三区 | www.欧美日韩| 久久九九久久九九| 国产不卡视频在线观看| 精品国产一二三区| 国产精品久久久久久久久搜平片| 懂色av一区二区夜夜嗨| 久久无码av三级| 国产精品亚洲一区二区三区在线| 日韩一二三四区| 久久66热re国产| 久久久久亚洲蜜桃| 美女国产一区二区| 欧美午夜精品理论片a级按摩| 国产精品欧美精品| 国产成人高清视频| 亚洲精品一区二区三区影院 | 国产网站一区二区| 激情综合五月天| 精品女同一区二区| 日精品一区二区三区| 欧美三级电影网| 日韩av一区二区三区| 欧美日韩一区三区四区| 亚洲日本乱码在线观看| 黄一区二区三区| 欧美国产97人人爽人人喊| 豆国产96在线|亚洲| 国产精品福利影院| 91美女精品福利| 一区二区三区高清在线| 欧美日韩精品一区二区| 天堂一区二区在线| 日韩欧美久久久| 国产一区二区伦理片| 日本一区二区在线不卡| 成人18视频在线播放| 亚洲精品亚洲人成人网| 欧美猛男男办公室激情| 久久精品99久久久| 亚洲国产岛国毛片在线| gogogo免费视频观看亚洲一| 亚洲最新在线观看| 91精品国产综合久久久久久漫画| 精品一二线国产| 国产精品三级电影| 欧美浪妇xxxx高跟鞋交| 美女视频黄频大全不卡视频在线播放| 精品久久久久久亚洲综合网| 国产精品白丝av| 亚洲精品日产精品乱码不卡| 91啪亚洲精品| 亚洲成在人线免费| 欧美国产一区二区| 欧美四级电影网| 玖玖九九国产精品| 中文字幕一区日韩精品欧美| 欧美色大人视频| 激情av综合网| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲成人免费视频| 4hu四虎永久在线影院成人| 奇米影视一区二区三区| 中文av一区特黄| 在线看国产日韩| 久久国产人妖系列| 国产精品国产a| 久久久久久久久久久久久女国产乱 | 成人免费在线播放视频| 在线观看日韩av先锋影音电影院| 日韩不卡手机在线v区| 中文字幕欧美日本乱码一线二线 | 8v天堂国产在线一区二区| 日韩精品视频网| 中文字幕视频一区| 日韩精品资源二区在线| 日本高清无吗v一区| 国产成人亚洲综合a∨婷婷| 午夜精品久久久| 亚洲视频一区二区在线| 久久精品亚洲精品国产欧美kt∨| 欧美日韩视频在线第一区| av电影在线不卡| 国产成人在线视频免费播放| 日韩一区精品视频| 一区二区三区四区在线免费观看| 久久久久久久久久久久电影| 制服丝袜av成人在线看| 在线观看一区日韩| 99精品视频一区二区| 蜜桃在线一区二区三区| 中文字幕一区二区三区不卡| 日本一区免费视频| 精品国免费一区二区三区| 欧美精品自拍偷拍| 91首页免费视频| 成人午夜精品在线| 国产精品亚洲第一区在线暖暖韩国| 日本欧美在线看| 日本美女一区二区三区视频| 香蕉加勒比综合久久| 亚洲最新视频在线播放| 一区二区三区日韩| 亚洲精品视频在线看| 亚洲欧美福利一区二区| 亚洲精品免费看| 亚洲自拍偷拍av| 国产精品久久久久久久久动漫| 久久亚洲综合色| 精品国产乱码久久久久久久| 日韩精品专区在线| 久久免费视频色| 亚洲国产成人一区二区三区| 国产精品福利av| 久久久久亚洲综合| 欧美群妇大交群中文字幕| 日韩精品一区二区三区视频播放| 日韩精品在线看片z| 久久综合色8888| 国产精品久久久久影院亚瑟| 亚洲欧洲精品成人久久奇米网 | 日韩欧美中文一区二区| 欧美v国产在线一区二区三区| 国产精品入口麻豆九色| 亚洲日本在线a| 亚洲国产精品久久人人爱| 亚洲va国产va欧美va观看| 亚洲精品国产一区二区三区四区在线| 亚洲午夜精品久久久久久久久| 伊人夜夜躁av伊人久久| 午夜激情一区二区| 经典三级在线一区| 91丨九色丨黑人外教| 欧美日韩成人综合在线一区二区| 制服丝袜日韩国产| 久久久国产午夜精品 | 91看片淫黄大片一级在线观看| 在线观看网站黄不卡| 欧美精品乱码久久久久久| 26uuu欧美日本| 亚洲精品免费在线观看| 久久精品免费观看| 91在线丨porny丨国产| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 91在线免费播放| 欧美日韩和欧美的一区二区| 久久久久国产精品人| 一区二区三区四区在线| 激情综合色丁香一区二区| 91在线视频播放地址| 色网站国产精品| 在线免费观看日韩欧美| 日韩精品一区二区三区蜜臀| 亚洲麻豆国产自偷在线| 国内偷窥港台综合视频在线播放| 91视频www| 久久蜜桃一区二区| 亚洲国产日韩精品| www.激情成人| 91精品国模一区二区三区| 亚洲欧洲精品天堂一级 | 欧美剧在线免费观看网站 | 国产成人午夜精品影院观看视频| www.亚洲色图.com| 欧美区在线观看| 91精品欧美福利在线观看| 日韩精品中文字幕一区二区三区| 丝袜美腿亚洲一区二区图片| 成人av资源下载| 26uuuu精品一区二区|