JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget [精華]
lee5518





發文: 39
積分: 6
於 2003-08-17 19:46 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
JSPWidget 0.9.4 版新增加了 action 的功能了唷
之前在 try 這個 Tag Library 時
發現蠻好用的
可是後來發現在 sbumit 時
不能自己指定 action 的值
也就是由 servlet 或是別的 JSP 來接收
現在新版在 form 裡面增加了 action 功能
下面是我使用簡單的 MVC 所做的測試
我使用的 OS 是 winxp
JDK 的版本 j2sdk1.4.2
湯姆貓(Tomcat)的版本 tomcat-4.1.24

web.xml 的部分設定
<web-app>
.
.
.
<servlet>
<servlet-name>JackyTest</servlet-name>
<servlet-class>jacky.servlet.JackyTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JackyTest</servlet-name>
<url-pattern>/JackyTest</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/jsp/index.htm</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/jspwidget</taglib-uri>
<taglib-location>/WEB-INF/jspwidget.tld</taglib-location>
</taglib>
.
.
.
</web-app>

在湯姆貓(Tomcat)實際檔案的路徑
JSP
C:\Program Files\Apache Group\Tomcat 4.1\webapps\jacky\jsp
servlet
C:\Program Files\Apache Group\Tomcat 4.1\webapps\jacky\WEB-INF\classes\jacky\servlet
classes
C:\Program Files\Apache Group\Tomcat 4.1\webapps\jacky\WEB-INF\classes\jacky\util

總共有 2 個 JSP 的程式和 1 個 servlet 的程式和 1 個 JAVA 的程式
1. jacky_10.jsp (輸入的頁面有包含宣告式欄位編審(Declarative Validation))
2. jacky_11.jsp (從 session 中抓出要呈現的值)
3. JackyTest.class (servlet 的程式)
4. JackyUtil.class (JAVA 的程式)

jacky_10.jsp :
<%@ page contentType="text/html;charset=big5" session="true" import="com.ucom.dao.sql.*,com.ucom.util.*,java.util.*,com.ucom.jsp.tags.gui.*,com.ucom.jsp.tags.validation.*,com.ucom.jsp.tags.sql.*,com.ucom.jsp.tags.util.*" %>
<%@ taglib uri="/jspwidget" prefix="jacky" %>
<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
</HEAD>
<BODY>
<jacky:form id="jspForm" action="/jacky/JackyTest">
<h4>requiredFieldValidator Widget</h4>
<table cellpadding=0 border=1>
<tr valign="middle">
<td>頁面驗證結果:</td>
<td>
<span id="lblOutput" style="color:Red;font-size:14pt;">請填寫以下欄位</span>
</td>
</tr>
<tr>
<td colspan=2 align=center><b>個人資訊</b></td>
</tr>
<tr>
<td align=right><font size=2 color=red>姓名:</font></td>
<td>
<jacky:textBox id="requiredFieldTextBox1"/>
<jacky:requiredFieldValidator id="TextBox1_val1"
controlToValidate="requiredFieldTextBox1"
display="Static"
onMouseOver="this.style.backgroundColor='lightblue' "
onMouseOut="this.style.backgroundColor='white' "
errorMessage="*:不可空白" />

<tr>
<td align=right><font size=2 color=red>教育程度:</font></td>
<td>
<jacky:dropdownList id="requiredFieldDropdownList1" >
<jacky:listItem text="" value="" />
<jacky:listItem text="研究所以上" value="01" />
<jacky:listItem text="大學" value="02" />
<jacky:listItem text="專科" value="03" />
<jacky:listItem text="高中職" value="04" />
<jacky:listItem text="其他" value="05" />
</jacky:dropdownList>
<jacky:requiredFieldValidator id="DropdownList1_val1"
controlToValidate="requiredFieldDropdownList1"
errorMessage="*您總有個教育程度吧?" />
</td>
</tr>
<tr>
<td></td>
<td>
<jacky:button id="btnSbumit" text="送出" causeValidation="true" />
</td>
</tr>
</table>
</jacky:form>
</BODY>
</HTML>

jacky_11.jsp :
<%@ page contentType="text/html;charset=big5" session="true" import="com.ucom.dao.sql.*,com.ucom.util.*,java.util.*,com.ucom.jsp.tags.gui.*,com.ucom.jsp.tags.validation.*,com.ucom.jsp.tags.sql.*,com.ucom.jsp.tags.util.*" %>
<%@ taglib uri="/jspwidget" prefix="jacky" %>
<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
</HEAD>
<BODY>
<jacky:form id="jspForm" trace="true">
<%
String temp01 = (String)session.getAttribute("requiredFieldTextBox1");
String temp02 = (String)session.getAttribute("requiredFieldDropdownList1");
out.println("The temp01 is : " + temp01);
out.println("<br>");
out.println("The temp02 is : " + temp02);
%>
</jacky:form>
</BODY>
</HTML>

JackyTest.class (servlet 的程式)
package jacky.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import jacky.util.*;

public class JackyTest extends HttpServlet {

/** Initializes the servlet.
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);

}

/** Destroys the servlet.
*/
public void destroy() {

}

/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
response.setContentType("text/html; charset=BIG5");

JackyUtil util = new JackyUtil();
util.processThisRequest(request);
System.out.println("EVERGREEN");
response.sendRedirect("/jacky/jsp/jacky_11.jsp");
}

/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
processRequest(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}

}

JackyUtil.class (JAVA 的程式)
package jacky.util;

import javax.servlet.*;
import javax.servlet.http.*;

public class JackyUtil{

public void processThisRequest(HttpServletRequest request) {
HttpSession user_session = request.getSession();

if (request.getParameter("requiredFieldTextBox1") != null) {
user_session.setAttribute("requiredFieldTextBox1", request.getParameter("requiredFieldTextBox1"));
}

if (request.getParameter("requiredFieldDropdownList1") != null) {
user_session.setAttribute("requiredFieldDropdownList1", request.getParameter("requiredFieldDropdownList1"));
}
}
}

開始測試
1. 在網頁上輸入
http://localhost:8080/jacky/jsp/jacky_10.jsp
這時候就可以試試沒輸入和有輸入的差別(宣告式欄位編審(Declarative Validation))
2. 按下〝送出〞的按鈕後
把結果傳回 servlet (JackyTest.class) (扮演的是 Controller 的角色)
3. 然後 servlet 呼叫專門處理邏輯的程式 (JackyUtil.class)
把傳過來的值寫到 session 中(扮演的是 Model 的角色)
4. 最後呼叫 JSP 來呈現 (jacky_11.jsp)(扮演的是 View 的角色)

個人覺得 JSPWidget 還蠻好用的
可以幫我解決不少 UI 方面控制的問題
有興趣的話
大家可以試試唷~~~

JSPWidget 的相關網址
http://edu.uuu.com.tw/jspwidget/


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
15807 [精華] 解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget lee5518 6487 2003-08-17 19:46
12364 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget im1000 33 2003-08-17 20:34
12216 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget im1000 131 2003-08-17 20:37
12232 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget lee5518 231 2003-08-18 19:42
12052 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget im1000 144 2003-08-18 19:51
12291 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget lee5518 463 2003-08-18 20:23
11926 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget im1000 290 2003-08-18 20:32
12202 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget lee5518 660 2003-08-18 21:03
11905 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget jini 527 2003-08-18 21:44
12180 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget lee5518 547 2003-08-19 16:14
11910 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget browser 329 2003-08-19 16:21
11834 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget esDream 204 2003-08-20 12:19
11757 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget browser 121 2003-08-20 12:49
11810 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget esDream 15 2003-08-20 13:25
11768 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget browser 280 2003-08-20 13:35
11783 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget jini 321 2003-08-20 14:40
11740 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget Forth 42 2003-08-20 16:04
11586 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget jackyliu 116 2003-08-22 00:43
11684 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget browser 387 2003-08-22 01:07
11592 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget jackyliu 474 2003-08-24 01:52
11750 解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: Tapestry worookie 69 2003-08-24 02:30
11764 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: Tapestry Forth 30 2003-08-24 02:43
12318 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget popcorny 658 2003-08-20 14:25
13533 還有一個好用的東東唷~~~ lee5518 370 2003-08-18 20:45
12055 Re:還有一個好用的東東唷~~~ jini 586 2003-08-18 21:38
12176 Re:還有一個好用的東東唷~~~ lee5518 272 2003-08-19 16:06
11757 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget mamio 137 2003-08-22 17:17
8486 Re:解決JSP程式撰寫不直覺、程式碼與UI混雜的痛: JSPWidget yehchge 101 2007-05-16 17:44
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8