📄 struts,mvc 的一种开放源码实现.htm
字号:
src="Struts,MVC 的一种开放源码实现.files/dw.gif"
width=192></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD width=10><IMG height=1 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width=10></TD>
<TD width="100%">
<TABLE class=no-print cellSpacing=0 cellPadding=0 width=160
align=right border=0>
<TBODY>
<TR>
<TD width=10><IMG height=1 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width=10></TD>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=150 border=0>
<TBODY>
<TR>
<TD class=v14-header-1-small>文档选项</TD></TR></TBODY></TABLE>
<TABLE class=v14-gray-table-border cellSpacing=0 cellPadding=0
border=0>
<TBODY>
<TR>
<TD class=no-padding width=150>
<TABLE cellSpacing=0 cellPadding=0 width=143
border=0><IMG height=1 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width=8>
<FORM name=email
action=https://www.ibm.com/developerworks/secure/email-it.jsp><INPUT
type=hidden
value="本文介绍 Struts,它是使用 servlet 和 JavaServer Pages 技术的一种 Model-View-Controller 实现。Struts 可帮助您控制 Web 项目中的变化并提高专业化水平。尽管您可能永远不会用 Struts 实现一个系统,但您可以将其中的一些思想用于您以后的 servlet 和 JSP 网页的实现中。"
name=body><INPUT type=hidden
value="Struts,MVC 的一种开放源码实现" name=subject><INPUT
type=hidden value=cn name=lang>
<SCRIPT language=JavaScript type=text/javascript><!--document.write('<tr valign="top"><td width="8"><img src="//www.ibm.com/i/c.gif" width="8" height="1" alt=""/></td><td width="16"><img src="//www.ibm.com/i/v14/icons/em.gif" height="16" width="16" vspace="3" alt="将此页作为电子邮件发送" /></td><td width="122"><p><a class="smallplainlink" href="javascript:document.email.submit();"><b>将此页作为电子邮件发送</b></a></p></td></tr>');//--></SCRIPT>
<NOSCRIPT>
<TBODY>
<TR vAlign=top>
<TD width=8><IMG height=1 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width=8></TD>
<TD width=16><IMG height=16 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif"
width=16></TD>
<TD class=small width=122>
<P><SPAN class=ast>未显示需要 JavaScript
的文档选项</SPAN></P></TD></TR></NOSCRIPT></FORM></TBODY></TABLE></TD></TR></TBODY></TABLE><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- this content will be automatically generated across all content areas --><!--END RESERVED FOR FUTURE USE INCLUDE FILES--><BR></TD></TR></TBODY></TABLE>
<P>级别: 初级</P>
<P><A
href="http://www.ibm.com/developerworks/cn/java/j-struts/#author">Malcolm
Davis</A> (<A
href="mailto:malcolm@nuearth.com?subject=Struts,MVC 的一种开放源码实现&cc=malcolm@nuearth.com">mailto:malcolm@nuearth.com?subject=Struts,MVC
的一种开放源码实现&cc=malcolm@nuearth.com</A>), 顾问<BR></P>
<P>2001 年 2 月 23 日</P>
<BLOCKQUOTE>本文介绍 Struts,它是使用 servlet 和 JavaServer Pages 技术的一种
Model-View-Controller 实现。Struts 可帮助您控制 Web
项目中的变化并提高专业化水平。尽管您可能永远不会用 Struts 实现一个系统,但您可以将其中的一些思想用于您以后的 servlet
和 JSP 网页的实现中。</BLOCKQUOTE><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
<P><A name=1><SPAN class=atitle>简介</SPAN></A></P>
<P>小学生也可以在因特网上发布 HTML 网页。但是,小学生的网页和专业开发的网站有质的区别。网页设计人员(或者 HTML
开发人员)必须理解颜色、用户、生产流程、网页布局、浏览器兼容性、图像创建和 JavaScript
等等。设计漂亮的网站需要做大量的工作,大多数 Java 开发人员更注重创建优美的对象接口,而不是用户界面。JavaServer
Pages (JSP) 技术为网页设计人员和 Java 开发人员提供了一种联系钮带。</P>
<P>如果您开发过大型 Web 应用程序,您就理解 <I>变化</I> 这个词的含义。“模型-视图-控制器”(MVC)
就是用来帮助您控制变化的一种设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合。Struts 是一种 MVC 实现,它将
Servlet 2.2 和 JSP 1.1 标记(属于 J2EE 规范)用作实现的一部分。尽管您可能永远不会用 Struts
实现一个系统,但了解一下 Struts 或许使您能将其中的一些思想用于您以后的 Servlet 的 JSP 实现中。 </P>
<P>在本文中,我将以一个 JSP 文件为起点讨论该网页的优缺点,该文件中使用的元素可能是您所熟悉的。随后我将讨论
Struts,并说明它是如何控制您的 Web 项目中的变化并提高专业化水平的。最后,我将重新开发这个简单的 JSP
文件,在开发过程中我已顾及到网页设计人员和变化。</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="Struts,MVC 的一种开放源码实现.files/blue_rule.gif"
width="100%"><BR><IMG height=6 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt=""
src="Struts,MVC 的一种开放源码实现.files/c.gif" width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="Struts,MVC 的一种开放源码实现.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/java/j-struts/#main"><B>回页首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=2><SPAN class=atitle>一个 JSP 文件就是一个 Java
servlet</SPAN></A></P>
<P>JavaServer Page (JSP) 文件只是审视 servlet 的另一种方式。JSP 文件的概念使我们能够将 Java
servlet 看作一个 HTML 网页。JSP 消除了 Java 代码中经常出现的讨厌的 <CODE>print()</CODE>
语句。JSP 文件首先被预处理为 <CODE>.java</CODE> 文件,然后再编译为 <CODE>.class</CODE>
文件。如果您使用的是 Tomcat,则可以在 <CODE>work</CODE> 目录下查看预处理后的
<CODE>.java</CODE> 文件。别的容器可能将 <CODE>.java</CODE> 和
<CODE>.class</CODE> 文件存储在其他位置;这个位置与容器有关。图 1 说明了从 JSP 文件到 servlet
的流程。 </P><BR><A name=art1><B>图 1. 从 JSP 文件到 servlet
的流程</B></A><BR><IMG height=65 alt="JSP to servlet flow"
src="Struts,MVC 的一种开放源码实现.files/jsp_to_servlet.gif" width=410> <BR>
<P>(这与 Microsoft 的 Active Server Page (ASP) 明显不同。ASP
被编译到内存中,而不是编译到一个单独的文件中。)</P>
<P><A name=N1008C><SPAN class=smalltitle>简单的独立 JSP 文件</SPAN></A></P>
<P>在小型 JSP
应用程序中,经常会看到数据、业务逻辑和用户界面被组合在一个代码模块中。此外,应用程序通常还包含用来控制应用程序流程的逻辑。清单 1 和图
2 展示了允许用户加入一个邮件列表的一个简单 JSP 文件。</P><BR><A name=N10095><B>清单 1.
join.jsp -- 一个简单的请求和响应 JSP 文件 </B></A><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=code-outline><PRE class=displaycode><%@ page language="java" %>
<%@ page import="business.util.Validation" %>
<%@ page import="business.db.MailingList" %>
<%
String error = "";
String email = request.getParameter("email");
// 是否有电子邮件地址
if( email!=null ) {
// 验证输入...
if( business.util.Validation.isValidEmail(email) ) {
// 存储输入...
try {
business.db.MailingList.AddEmail(email);
} catch (Exception e) {
error = "Error adding email address to system. " + e;
}
if( error.length()==0 ) {
%>
// 重定向到欢迎页...
<jsp:forward page="welcome.html"/>
<%
}
} else {
// 设置错误消息并重新显示网页
error = email + " is not a valid email address, please try again.";
}
} else {
email = "";
}
%>
<html>
<head>
<title>Join Mailing List</title>
</head>
<body>
<font color=red><%=error%></font><br>
<h3>Enter your email to join the group</h3>
<form action="join.jsp" name="joinForm">
<input name="email" id="email" value=<%=email%>></input>
<input type=submit value="submit">
</form>
</body>
</html>
</PRE></TD></TR></TBODY></TABLE><BR><BR><A name=N100A5><B>图 2.
在简单的请求和响应中,JSP 文件设置数据、控制到下一个网页的流程并创建 HTML</B></A><BR><IMG height=70
alt="Simple request and response JSP"
src="Struts,MVC 的一种开放源码实现.files/simple_jsp.gif" width=430> <BR>
<P>这个邮件列表 JSP 文件是一个独立的、自主完成所有任务的模块。未包含在这个 JSP 文件中的仅有代码是包含在
<CODE>isValidEmail()</CODE> 中的实际验证代码和将电子邮件地址存入数据库的代码。(将
<CODE>isValidEmail()</CODE> 方法分离到可重用的代码中似乎是当然的选择,但我曾见过直接嵌入网页中的
<CODE>isValidEmail()</CODE>
代码。单页方法的优点是易于理解,并且最初也易于构建。此外,对于各种图形化开发工具,入门也很容易。 </P>
<P><A name=N100C1><SPAN class=smalltitle>join.jsp 的活动
</SPAN></A></P>
<OL>
<LI>显示打开的输入网页。
<LI>从表单参数中读取 <CODE>email</CODE> 的值。
<LI>验证 <CODE>email</CODE> 地址。
<LI>如果 <CODE>email</CODE> 地址有效:
<UL>
<LI>将该地址添加到数据库中。
<LI>重定向到下一个网页。 </LI></UL>
<LI>如果 <CODE>email</CODE> 地址无效:
<UL>
<LI>设置错误消息。
<LI>重新显示含有错误消息的 <CODE>join.jsp</CODE> 。 </LI></UL></LI></OL>
<P><A name=N10103><SPAN class=smalltitle>单页方法的后果</SPAN></A></P>
<UL>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -