﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-断网了……-随笔分类-Struts2.1学习</title><link>http://www.cnitblog.com/zcy860511/category/8345.html</link><description>烟灰学程序一年多了……总在想，要是断网了，我怎么学习……</description><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 17:55:09 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 17:55:09 GMT</pubDate><ttl>60</ttl><item><title>使用Filter进行非法访问拦截</title><link>http://www.cnitblog.com/zcy860511/archive/2009/08/08/60661.html</link><dc:creator>烟灰这名字被人抢了……</dc:creator><author>烟灰这名字被人抢了……</author><pubDate>Sat, 08 Aug 2009 05:30:00 GMT</pubDate><guid>http://www.cnitblog.com/zcy860511/archive/2009/08/08/60661.html</guid><wfw:comment>http://www.cnitblog.com/zcy860511/comments/60661.html</wfw:comment><comments>http://www.cnitblog.com/zcy860511/archive/2009/08/08/60661.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/zcy860511/comments/commentRss/60661.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zcy860511/services/trackbacks/60661.html</trackback:ping><description><![CDATA[因为struts（不论2还是1）不支持，或者说我没找到拦截的方法<br>所以自己写了一个阻断器，用于阻断特定的网页，或者放过特定的网页访问<br><br>下面的附上使用指南<br>interdictor.xml<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE&nbsp;struts&nbsp;PUBLIC&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;"-//JavaZone//DTD&nbsp;Interdictor&nbsp;Configuration&nbsp;1.0//EN"<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;"interdictor.dtd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">interdictors</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该锁将控制是否使用该interdict<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并且该值只能使用boolean型值<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当该值为true时，就进行全部放过操作<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当该值为false时，就进行阻断操作<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">lock-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">interdictLock</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">lock-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置debug输出<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意，<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">debug</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">True</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">debug</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;阻断器配置&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">interdictor</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置阻断器，阻断所有以.jsp为后缀的请求<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;请注意，必须使用.jsp而不是jsp因为当你拦截servlet的时候<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以输入servlet作为后缀，所以本拦截机制不会给你默认添加.后缀<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">interdict-suffix</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">interdict-suffix</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">exclude-requests</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">homepage.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">login.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">register.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">index.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;request&gt;error/error.jsp&lt;/request&gt;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">template/viewNotePlate.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">request</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">exclude-requests</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclude-requests和interdict-requests两个请求关系详细解释：<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.当阻断请求列表存在，而放过列表不存在时，将只阻断阻断请求列表中元素，而放过其余请求<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.当阻断请求列表不存在，而放过请求列表存在时，将只放过放过请求列表中元素，而阻断所有阻断元素<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.当两个列表都存在的时候，将阻断阻断请求列表中元素，并以放过请求列表中元素为更高权限<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如，两个列表中都有error.jsp，那么该请求将被放过<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.当两个列表都不存在时<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：这里的所有url都是相对地址，都是危机basecontext之后的所有部分<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result-page</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/error/error.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">result-page</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阻断之后跳转的页面<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里是用于重定向的url<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">interdictor</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">interdictors</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br>interdictor.dtd<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">interdictor&nbsp;must&nbsp;is&nbsp;no&nbsp;less&nbsp;than&nbsp;one</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;interdictors&nbsp;(<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;lock-name?,<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;debug,<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;interdictor+<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">interdictor&nbsp;element</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;interdictor&nbsp;(<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;interdict-suffix,<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;interdict-requests?,<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;exclude-requests?,<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;result-page<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;the&nbsp;suffix&nbsp;of&nbsp;the&nbsp;request&nbsp;name</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;interdict-suffix&nbsp;(#PCDATA)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">interdict&nbsp;request&nbsp;list</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;interdict-requests&nbsp;(<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;request+<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">excluded&nbsp;request&nbsp;list</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;exclude-requests&nbsp;(<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;request+<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">request&nbsp;element</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;request&nbsp;(#PCDATA)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">the&nbsp;when&nbsp;interdict&nbsp;it&nbsp;will&nbsp;redirect&nbsp;to</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;result-page&nbsp;(#PCDATA)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">this&nbsp;name&nbsp;is&nbsp;use&nbsp;in&nbsp;session&nbsp;to&nbsp;control&nbsp;interdictor</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;lock-name&nbsp;(#PCDATA)</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;if&nbsp;debug&nbsp;is&nbsp;true&nbsp;,application&nbsp;will&nbsp;print&nbsp;the&nbsp;infomation&nbsp;on&nbsp;the&nbsp;console&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">ELEMENT&nbsp;debug&nbsp;(#PCDATA)</span><span style="COLOR: #0000ff">&gt;</span></div>
然后是web.xml<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;过滤加载器，防止非法.jsp后缀访问&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;除了配置之外，添加自己的&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">interdictorFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.javazone.interdict.InterdictFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">configFileLocation</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Interdictor.xml</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">interdictorFilter</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">filter-mapping</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><br>说明：<br>1.lock-name是用于session级的锁操作，如果你想在程序里使用重定向，而又不希望下一个定位的网页被拦截掉，需要使用到该锁，具体操作如下<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">session.put(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">interdictLock</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;Boolean.TRUE);</span></div>
2.注意url的书写正确性，否则会出现不可预知的错误<br>其他的。。。大家一起找bug，如果找到了就告诉我<br>这里是下载地址：<br>3.该阻断器filter配置一定要写到所有filter配置前面，否则起不到拦截的作用<a href="http://www.cnitblog.com/Files/zcy860511/javazone.interdictor.rar"><br>http://www.cnitblog.com/Files/zcy860511/javazone.interdictor.rar</a> 
<img src ="http://www.cnitblog.com/zcy860511/aggbug/60661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zcy860511/" target="_blank">烟灰这名字被人抢了……</a> 2009-08-08 13:30 <a href="http://www.cnitblog.com/zcy860511/archive/2009/08/08/60661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Struts2.1.6中的Type Convert</title><link>http://www.cnitblog.com/zcy860511/archive/2009/06/25/59640.html</link><dc:creator>烟灰这名字被人抢了……</dc:creator><author>烟灰这名字被人抢了……</author><pubDate>Thu, 25 Jun 2009 12:09:00 GMT</pubDate><guid>http://www.cnitblog.com/zcy860511/archive/2009/06/25/59640.html</guid><wfw:comment>http://www.cnitblog.com/zcy860511/comments/59640.html</wfw:comment><comments>http://www.cnitblog.com/zcy860511/archive/2009/06/25/59640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/zcy860511/comments/commentRss/59640.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zcy860511/services/trackbacks/59640.html</trackback:ping><description><![CDATA[本文章适合初学类型转换的东西<br><br>首先是官方说的几个东西<br>首先是JSP页面的部分代码，当然也可以是HTML，反正是表示层的东西就对了<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">form&nbsp;</span><span style="COLOR: #ff0000">action</span><span style="COLOR: #0000ff">="convert"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">用户名：</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="user"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">form</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span></div>
然后是struts.xml中的配置，当然，官方说了，这个配置可以再web.xml中<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">struts</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">package&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="test"</span><span style="COLOR: #ff0000">&nbsp;extends</span><span style="COLOR: #0000ff">="struts-default"</span><span style="COLOR: #ff0000">&nbsp;namespace</span><span style="COLOR: #0000ff">="/"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;namespace默认是/，所以可以不写，不过我有这个习惯&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">action&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="convert"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="test.ConvertAction"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="success"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/Result.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">result</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">action</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">package</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">struts</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif"></span></div>
然后我们需要一个叫做ConvertAction位于test包中的类<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_44_341_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_341_Open_Text.style.display='none'; Codehighlighter1_44_341_Closed_Image.style.display='inline'; Codehighlighter1_44_341_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="WIDTH: 11px; DISPLAY: none; HEIGHT: 16px" id=Codehighlighter1_44_341_Closed_Image onclick="this.style.display='none'; Codehighlighter1_44_341_Closed_Text.style.display='none'; Codehighlighter1_44_341_Open_Image.style.display='inline'; Codehighlighter1_44_341_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 height=16><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ConvertAction&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;Action</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_44_341_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_341_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;<span style="COLOR: #0000ff">private</span> User user<span style="COLOR: #008000">//这个对象的引用必须有setter和getter,因为我是手工硬编码，没有复制，所以就不累述了</span><br><img id=Codehighlighter1_132_170_Open_Image onclick="this.style.display='none'; Codehighlighter1_132_170_Open_Text.style.display='none'; Codehighlighter1_132_170_Closed_Image.style.display='inline'; Codehighlighter1_132_170_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_132_170_Closed_Image onclick="this.style.display='none'; Codehighlighter1_132_170_Closed_Text.style.display='none'; Codehighlighter1_132_170_Open_Image.style.display='inline'; Codehighlighter1_132_170_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setUser(User value)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_132_170_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_132_170_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.username&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_209_239_Open_Image onclick="this.style.display='none'; Codehighlighter1_209_239_Open_Text.style.display='none'; Codehighlighter1_209_239_Closed_Image.style.display='inline'; Codehighlighter1_209_239_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_209_239_Closed_Image onclick="this.style.display='none'; Codehighlighter1_209_239_Closed_Text.style.display='none'; Codehighlighter1_209_239_Open_Image.style.display='inline'; Codehighlighter1_209_239_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;User&nbsp;getUser()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_209_239_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_209_239_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.username;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_275_339_Open_Image onclick="this.style.display='none'; Codehighlighter1_275_339_Open_Text.style.display='none'; Codehighlighter1_275_339_Closed_Image.style.display='inline'; Codehighlighter1_275_339_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_275_339_Closed_Image onclick="this.style.display='none'; Codehighlighter1_275_339_Closed_Text.style.display='none'; Codehighlighter1_275_339_Open_Image.style.display='inline'; Codehighlighter1_275_339_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;execute()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_275_339_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_275_339_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><img src="http://www.cnitblog.com/Images/dot.gif">..Action我准备什么都不做</span><span style="COLOR: #008000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;SUCCESS;<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
我们继续，之后是一个properties文件<br>ConvertActuin-conversion.properties<br>这个文件一定要放到ConvertAction所在的包里<br>命名的就不在这里累述了，因为不论不是李刚的书也好，Struts的指南也好都有讲，唯一区别就是前一个是中文，后一个是英文罢了<br>之后这个文件里我们需要添加一个属性<br>#这个TestConverter之后我会给出代码<br>username=test.TestConverter<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_51_196_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_196_Open_Text.style.display='none'; Codehighlighter1_51_196_Closed_Image.style.display='inline'; Codehighlighter1_51_196_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_51_196_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_196_Closed_Text.style.display='none'; Codehighlighter1_51_196_Open_Image.style.display='inline'; Codehighlighter1_51_196_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif"><br><span style="COLOR: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package test;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *这个类有几种写法，我也就不累述了<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TestConverter&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;TypeConverter</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_51_196_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_51_196_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;convertValue(Map</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String,&nbsp;Object</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;arg0,&nbsp;Object&nbsp;arg1,<br><img id=Codehighlighter1_177_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_177_194_Open_Text.style.display='none'; Codehighlighter1_177_194_Closed_Image.style.display='inline'; Codehighlighter1_177_194_Closed_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_177_194_Closed_Image onclick="this.style.display='none'; Codehighlighter1_177_194_Closed_Text.style.display='none'; Codehighlighter1_177_194_Open_Image.style.display='inline'; Codehighlighter1_177_194_Open_Text.style.display='inline';" align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Member&nbsp;arg2,&nbsp;String&nbsp;arg3,&nbsp;Object&nbsp;arg4,&nbsp;Class&nbsp;arg5)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_177_194_Closed_Text><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_177_194_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> new User()</span><span style="COLOR: #000000">;//这里只需要返回一个User对象就可以了，怎么处理是你的喜好<br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
到此，我们的Converter就配置完了，那么我们可以进行一些测试了，唯一要注意的东西就是你的Action里应该有的username属性，因为这个属性的丢失会导致convertValue的不调用 <br><br>------------------------------------------------------------------------------------------------------------------------------------<br>下面我说下我的总结<br>第一，在JSP也就是表示层必须有一个user属性<br>第二，在Action中必须有一个user<br>第三，在properties中必须有user的定义<br>为什么呢？原理是Struts在设置user时会去寻找properties文件，如果找到就进行转换，否则就直接赋值
<img src ="http://www.cnitblog.com/zcy860511/aggbug/59640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zcy860511/" target="_blank">烟灰这名字被人抢了……</a> 2009-06-25 20:09 <a href="http://www.cnitblog.com/zcy860511/archive/2009/06/25/59640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>