📄 csdn_struts原理与应用(完).htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.csdn.net/develop/article/22/22574.shtm -->
<HTML><HEAD><TITLE>CSDN_Struts原理与应用(完)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=Expires content=0><LINK
href="CSDN_Struts原理与应用(完).files/csdn.css" rel=stylesheet>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY bottomMargin=0 aLink=#990000 bgColor=#ffffff leftMargin=0 topMargin=0
rightMargin=0 marginheight="0" marginwidth="0">
<SCRIPT language=javascript1.2>
<!--
var currentpos,timer;
function initialize()
{
timer=setInterval('scrollwindow()',10);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
//-->
</SCRIPT>
<DIV align=center>
<STYLE>.title0 {
FONT-WEIGHT: bold; FONT-SIZE: 17px; COLOR: #ffffff; FONT-FAMILY: arial; TEXT-DECORATION: none
}
A.title2:link {
COLOR: #000000; TEXT-DECORATION: none
}
A.title2:visited {
COLOR: #000000; TEXT-DECORATION: none
}
A.title2:active {
COLOR: #ff0000; TEXT-DECORATION: none
}
A.title2:hover {
COLOR: #ff0000; TEXT-DECORATION: none
}
</STYLE>
<SCRIPT language=JavaScript>
<!--
function submitlog(sign)
{
var types=document.alogon.type.options[document.alogon.type.selectedIndex].value;
if (document.alogon.name.value!="" && document.alogon.pass.value!="")
{
if (types!="1")
document.alogon.action="http://www.csdn.net/member/logon.asp";
else
document.alogon.action="http://expert.csdn.net/member/logon.asp";
if(sign)
document.alogon.submit();
//return true;
}
else
{
if (document.alogon.name.value=="")
alert("请输入用户名!");
if (document.alogon.pass.value=="")
alert("请输入密码");
return false;
}
return true;
}
function GetMyPass()
{
if (document.alogon.name.value!="")
{
document.alogon.action="http://www.csdn.net/member/getpass.asp";
document.alogon.submit();
}
else
{
alert("请在姓名输入框里输入用户名或注册EMAIL!");
}
}
// -->
</SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=770 border=0>
<TBODY>
<TR>
<TD width=20 bgColor=#004d99 height=25></TD>
<FORM name=alogon onsubmit="return submit1(false);" action="" method=post
target=_blank>
<TD bgColor=#004d99><FONT color=#ffffff>姓 名:</FONT> <INPUT
class=FormText_1 size=7 name=name> <FONT color=#ffffff>密 码:
<INPUT class=FormText_1 type=password size=7 name=pass> </FONT><SELECT
class=FormText_1 name=type> <OPTION value=1 selected>我的论坛</OPTION>
<OPTION value=2>我的软件</OPTION> <OPTION value=3>我的订单</OPTION> <OPTION
value=4>我的文档</OPTION> <OPTION value=5>我的简历</OPTION></SELECT><INPUT
type=image height=0 width=0> <A
onclick="submitlog(true);return false;"
href="http://www.csdn.net/develop/article/22/"><FONT color=#ffff33>进
入..</FONT></A> <A href="http://www.csdn.net/member/zc.asp"
target=_blank><FONT color=#ffff33>[注 册]</FONT></A> <A
href="javascript:GetMyPass()"><FONT color=#ffff33>忘记密码</FONT>
</A></TD></FORM>
<TD align=right width=20 bgColor=#990000><IMG height=25
src="CSDN_Struts原理与应用(完).files/top_1.gif" width=20></TD>
<FORM action=http://www.csdn.net/search_ok.asp method=post target=_blank>
<TD align=right width=250 bgColor=#009999><FONT color=#ffffff><FONT
color=#ffffff><INPUT class=FormText_1 size=15 name=search> <SELECT
class=FormText_1 name=type> <OPTION value=1 selected>新闻标题</OPTION>
<OPTION value=2>软件名称</OPTION> <OPTION value=3>商品名称</OPTION> <OPTION
value=4>文档标题</OPTION> <OPTION value=6>职位名称</OPTION></SELECT> </FONT><INPUT class=td3 type=submit value="搜 索" name=Submit>
</FONT></TD></FORM></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=770 border=0>
<TBODY>
<TR>
<TD align=middle width=150 height=70><IMG height=60
src="CSDN_Struts原理与应用(完).files/csdn.gif" width=120></TD>
<TD align=middle width=470>
<SCRIPT language=javascript>
var rand = Math.random().toString();
var ordval = parseInt(rand.substring(2,4));
function Showad(width)
{
if(width=='468')
{
document.write("<a href='http://www.dearbook.com.cn/' target='_blank'><OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' WIDTH=468 HEIGHT=60><PARAM NAME=movie VALUE='/adv//468x60.swf'> <PARAM NAME=quality VALUE=high> <EMBED src='/adv//468x60.swf' quality=high border=0 WIDTH=468 HEIGHT=60 TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'></EMBED></OBJECT></a>");
return;
}
if(width=='120')
{
}
return;
}
Showad('468')</SCRIPT>
</TD>
<TD align=middle width=150>
<SCRIPT>Showad('120')</SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=770 border=0>
<TBODY>
<TR>
<TD align=middle width=770 bgColor=#000000 colSpan=2 height=1></TD></TR>
<TR>
<TD align=middle width=150 bgColor=#004d99 height=28><FONT
class=title0>csdn.net</FONT></TD>
<TD align=middle width=620>
<SCRIPT src="CSDN_Struts原理与应用(完).files/navigation1.js"></SCRIPT>
</TD></TR>
<TR>
<TD align=middle width=770 bgColor=#000000 colSpan=2
height=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=770 border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f3f9fc height=23></TD>
<TD bgColor=#f3f9fc>
<MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=5
scrollDelay=80>
<SCRIPT src="CSDN_Struts原理与应用(完).files/marquee.htm"></SCRIPT>
</MARQUEE></TD>
<TD align=right width=101 bgColor=#f3f9fc>
<SCRIPT>document.write("<img src=http://count.csdn.net/count/pageview1.asp?columnid=4&itemid=11 border=0 width=0 height=0>");</SCRIPT>
<B>
<SCRIPT language=JavaScript>
<!--
document.ns = navigator.appName == "Netscape"
tmpDate = new Date();
date = tmpDate.getDate();
month= tmpDate.getMonth() + 1 ;
if(document.ns)
{
year1=tmpDate.getYear()
year= year1.toString().substr(1,2);
}
else
year= tmpDate.getYear();
document.write(year);
document.write(".");
document.write(month);
document.write(".");
document.write(date);
// -->
</SCRIPT>
</B> </TD></TR>
<TR bgColor=#999999>
<TD colSpan=3 height=1></TD></TR></TBODY></TABLE>
<TABLE width=770 border=0>
<TBODY>
<TR>
<TD class=td1 vAlign=top align=middle width=150 bgColor=#fafafa><BR><!--广告条开始//-->
<SCRIPT src="CSDN_Struts原理与应用(完).files/sun.js"></SCRIPT>
<!--广告条结束//--></TD>
<TD vAlign=top align=middle width=620><!--文章说明信息开始//-->
<TABLE cellSpacing=0 cellPadding=0 width=600 bgColor=#eeeeee border=0>
<TBODY>
<TR bgColor=#ffffff>
<TD align=middle width=50 height=10></TD>
<TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A
href="http://www.csdn.net/develop/">文档中心</A> - <FONT
color=#003399>Java</FONT> </TD></TR>
<TR>
<TD align=enter height=5></TD>
<TD align=middle width=500 td <></TD>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>标题</FONT></TD>
<TD><B> Struts原理与应用(完)</B> icecloud(原作)</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD width=500> struts</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE width=600 border=0>
<TBODY>
<TR>
<TD align=left><!--内容开始//--><BR>
<H1>Chapter 7: Taglib and Other Skills </H1>
<P><FONT color=blue>Struts principle and practice </FONT><BR>
<P><STRONG>TAGLIB</STRONG><BR>Struts对Taglib进行了扩展,
Struts提供了四种基本自定义Taglib以及两种附加Taglib:
<P>bean:struts-bean taglib包含在访问bean和bean属性时使用的tag,也包含一些消息显示的tag。
<BR>html:struts-html
taglib包含用来创建struts输入表单的tag,和其它通常用来创建基于HTML用户界面的tag。
<BR>logic:struts-logic taglib包含的tag用来管理根据条件生成输出文本,和其它一些用来控制的信息。
<BR>template:struts-template taglib包含的tag用来定义模板机制。
<BR><BR>tiles:Tiles插件,用于简化jsp开发<BR>nested:
而Nested标记库的作用是让以上这些基本标记库能够嵌套使用,发挥更大的作用。
<P>使用taglib可以简化jsp页面的开发,使得jsp包含最少的代码。
<P>如,在JSP开发过程中,虚拟目录是相对于Domain的。如果http://localhost/context1/test.jsp执行href="/”则会返回到http://localhost/,如何返回到http://localhost/context1/呢?
这样我们就可以用<html:link page="/" >按照相对于虚拟目录的url来定位。
<P>I18n支持<BR>如果要显示一套支持i18n的界面,首先要定义一个ApplicationResource文件,将信息以key=value的形式放入。在struts-config.xml中指定resouces的地址,即可用<bean:message
key="welcome">这样的tag来显示,而不需要将信息固化在JSP文件中。
<P><STRONG>TILES:</STRONG><BR>Tiles中对页面的划分有点象jakarta的另外一个项目Turbine中的TDK。增加了layout的概念.
<BR>其实就是把一个页面划分为几块。 通常的来说一个页面大概可以划分为如下几块:
<BR>head页面头部:存放一个运用的公共信息:logo等,如果是网站可能是最上面的一块.
<BR>menu页面菜单:放置一个运用中需要使用的菜单,或者在每一个页面都使用的连接. <BR>footer页面尾部:如版权信息等.
<BR>body页面主题内容:每个页面相对独立的内容.
<BR>如果按上面的划分那对每一个页面我们只要写body里面的内容,其他的就可以共享重用.
<BR>如果大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body.
<P>Tiles除了替代Template的基本模板功能外,还增加了布局定义、虚拟页面定义和动态页面生成等功能。Tiles强大的模板功能能够使页面获得最大的重用性和灵活性,此外可以结合Tiles配置文件中的页面定义和Action的转发逻辑,即你可以将一个Action转发到一个在Tiles配置文件中定义的虚拟页面,从而减少页面的数量。比如,下表中的Action定义了一个转发路径,它的终点是tile.userMain,而后者是你在Tiles配置文件中定义的一个页面。
<P><STRONG>EXCEPTION <BR></STRONG>异常处理在Struts1.1中得到了很好的支持
<P>可以在配置文件中指定由谁来处理Action类中掷出的某种异常。按照以下步骤来完成该功能: <BR>
<P>1
实现org.apache.struts.action.ExceptionHandler的子类,覆盖execute方法,在该方法中处理异常并且返回一个ActionForward对象
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -