﻿<?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>BlogJava-J2EE社区-随笔分类-struts2</title><link>http://www.blogjava.net/xcp/category/33480.html</link><description>苟有恒,何必三更起五更眠;&lt;br/&gt;最无益,只怕一日曝十日寒.</description><language>zh-cn</language><lastBuildDate>Sun, 05 Aug 2012 21:12:15 GMT</lastBuildDate><pubDate>Sun, 05 Aug 2012 21:12:15 GMT</pubDate><ttl>60</ttl><item><title>struts2和servlet的共存问题</title><link>http://www.blogjava.net/xcp/archive/2012/08/05/384824.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sun, 05 Aug 2012 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2012/08/05/384824.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/384824.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2012/08/05/384824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/384824.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/384824.html</trackback:ping><description><![CDATA[<p><font color="#0000ff">先看一下struts2 的web.xml文件：<br /></font><font color="#0000ff">&lt;filter&gt;<br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&lt;filter-class&gt;<br />org.apache.struts2.dispatcher.FilterDispatcher<br />&lt;/filter-class&gt;<br />&lt;/filter&gt;</font></p><p><font color="#0000ff">&lt;filter-mapping&gt;<br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&lt;/filter-mapping&gt;<br /></font><font color="#0000ff">在请求应用时，struts2将会截获所有请求，对于servlet请求将不能够正常相应,是struts2把servlet当成act<wbr>ion了，因为servlet和act<wbr>ion都是没有后缀的</font></p><br /><p><font color="#0000ff">解决方法目前有四种：</font></p><p><font color="#0000ff">方法1：统一在servlet后面加上.servlet（包括web.xml配置文件中和页面上使用servlet的地方）</font></p><p><font color="#0000ff">方法2：继承StrutsPrepareAndExecuteF<wbr>ilter,实现以下两个方法。</font></p><p><font color="#0000ff">public void init(FilterConfig filterConfig) throws <br />ServletException {<br /></font><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..............................</font></p><p><font color="#0000ff">}</font></p><p><font color="#0000ff">public void doFilter(ServletRequest request, 
ServletResponse response,<br /> <wbr> <wbr> <wbr>FilterChain chain) throws <br />IOException, ServletException {<br /></font><font color="#0000ff">............................... <br /></font><font color="#0000ff">if(url.contain("servlet")){<br /></font><font color="#0000ff">((HttpServletResponse) response).sendRedirect(redirectUrl);<br /></font><font color="#0000ff">}</font></p><p><font color="#0000ff">super.doFilter(request, response, chain);</font></p><br /><p><font color="#0000ff">}</font></p><br /><p><font color="#0000ff">方法3：修改拦截页面配置<br /></font><font color="#0000ff">原：<br /></font><font color="#0000ff">&lt;filter&gt;<br /> <wbr> <wbr>&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br /> <wbr> <wbr>&lt;filter-class&gt;<br /> <wbr> <wbr> <wbr>org.apache.struts2.dispatcher.FilterDispatcher<br /> <wbr> <wbr>&lt;/filter-class&gt;<br /> <wbr>&lt;/filter&gt;<br /> <wbr>&lt;filter-mapping&gt;<br /> <wbr> <wbr>&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br /> <wbr> <wbr>&lt;url-pattern&gt; <br />/* &lt;/url-pattern&gt;<br /> <wbr>&lt;/filter-mapping&gt;<br /><br /></font><font color="#0000ff">现：<br /><br /></font><font color="#0000ff">&lt;filter-mapping&gt;<br /> <wbr> <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br /> <wbr> <br />&lt;url-pattern&gt;*.act<wbr>ion&lt;/url-pattern&gt;<br /> <wbr>&lt;/filter-mapping&gt;<br /> <wbr>&lt;filter-mapping&gt;<br /> <wbr> <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br /> <wbr> <br />&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;<br /> <wbr>&lt;/filter-mapping&gt;<br /> <wbr>&lt;filter-mapping&gt;<br /> <wbr> <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br /> <wbr> <br />&lt;url-pattern&gt;/user/*&lt;/url-pattern&gt;<br /> <wbr>&lt;/filter-mapping&gt;</font></p><br /><p><font color="#0000ff">servlet的请求路径不必改变</font></p><br /><p><font color="#0000ff">方法4：在struts.xml文件中修改</font><br /></p><p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4b6f8d150100ghu4&amp;url=http://s2.sinaimg.cn/orignal/4b6f8d15t7c79a7b2b6f1&amp;690" rel="nofollow" target="_blank"><font color="#0000ff"><img title="struts2拦截了servlet请求的解决" alt="struts2拦截了servlet请求的解决" src="http://img.ph.126.net/Cxc_WRxuo2JGnBwYJ61AcQ==/1609192441856277805.jpg" /></font></a><font color="#0000ff">&nbsp;</font><br /></p><p style="text-indent: 2em;"><font color="#0000ff">&#8230;&#8230;</font></p><img src ="http://www.blogjava.net/xcp/aggbug/384824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2012-08-05 17:24 <a href="http://www.blogjava.net/xcp/archive/2012/08/05/384824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 Interceptor</title><link>http://www.blogjava.net/xcp/archive/2010/07/24/327026.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sat, 24 Jul 2010 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/07/24/327026.html</guid><description><![CDATA[&nbsp;一、Strus2三种方式实现自定义Interceptor的方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.实现拦截器类一般可以实现com.opensymphony.xwork2.interceptor.Interceptor接口<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.直接继承AbstractInterceptor类<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.Struts2还提供了一个MethodFilterIntercepter类，该类是AbstractInterceptor类的子类，如果你需要实现的拦截器支持方法过滤性，就继承MethodFilterIntercepter这个类(说白了就是给action中指定的方法加拦截)<br />
<img src ="http://www.blogjava.net/xcp/aggbug/327026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-07-24 18:29 <a href="http://www.blogjava.net/xcp/archive/2010/07/24/327026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STRUTS2 标签调用静态方法</title><link>http://www.blogjava.net/xcp/archive/2010/06/13/323518.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sun, 13 Jun 2010 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/06/13/323518.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/323518.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/06/13/323518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/323518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/323518.html</trackback:ping><description><![CDATA[<p>今天在做项目的时候，遇着要调用静态方法去处理一些数据，因为没有用使用过，所以GOOGLE了一下，网上有很多像：</p>
<blockquote>
<p>&lt;s:set name="post" value="@edu.mobile.company.function.GetJobPost@getJobHTML()" /&gt;</p>
<p>${post}</p>
</blockquote>
<p>这样就能在表示页面显示出来。</p>
<p>但是还有一种情况就是需要调用一个含有参数的静态方法怎么办？</p>
<p>在网上找了N久，都无果，最后查阅相关OGNL文档，尝试能使用下面方法可行：</p>
<blockquote><ins>来源：(<a href="http://blog.sina.com.cn/s/blog_553d5e730100egr7.html">http://blog.sina.com.cn/s/blog_553d5e730100egr7.html</a>) - STRUTS2&nbsp;标签调用静态方法_roteson_新浪博客</ins>
<p>&lt;s:set name="post" value="@edu.mobile.company.function.GetJobPost@getJobHTML(#session.username)" /&gt;</p>
<p>${post}</p>
</blockquote>
<p>&nbsp;<wbr>或者</p>
<blockquote>
<p>&lt;s:set name="job" value="#session.jobdata" /&gt;</p>
<p>&lt;s:set name="post" value="@edu.mobile.company.function.GetJobPost@getJobHTML(#job)" /&gt;</p>
<p>${post}</p>
</blockquote>
<img src ="http://www.blogjava.net/xcp/aggbug/323518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-06-13 15:07 <a href="http://www.blogjava.net/xcp/archive/2010/06/13/323518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中文支持问题</title><link>http://www.blogjava.net/xcp/archive/2010/05/23/321648.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sun, 23 May 2010 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/05/23/321648.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/321648.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/05/23/321648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/321648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/321648.html</trackback:ping><description><![CDATA[<script type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">                        function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
1、JSP页面显示的中文问题<br />
这是最初级的东西，网上到处都有，不过还是列一下吧：<br />
Page的第一行改成：&lt;%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%&gt;<br />
Head里加：&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;<br />
<br />
2.struts2里面配置，不过默认就是utf-8<br />
&nbsp; &lt;constant name="struts.i18n.encoding" value="utf-8"&gt;&lt;/constant&gt;<br />
<br />
3.但是有的时候虽然配置了struts2，但是有时候还是出现乱码，比如struts2,1.6就是，所以我们最好在struts2过滤之前就已经将数据过滤了一次<br />
在这我们可以自己实现或者用spring都可以<br />
&nbsp;<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&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;">CharacterEncodingFilter</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 />
&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;">org.springframework.web.filter.CharacterEncodingFilter</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 />
&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 />
&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;">encoding</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 />
&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;">UTF-8</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 />
&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 />
&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 />
&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;">forceEncoding</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 />
&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;">true</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 />
&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 />
&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 />
&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 />
&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;">CharacterEncodingFilter</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 />
&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 />
&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;">&nbsp;&nbsp;&nbsp; <br />
</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实任何的interceptor机制都可以处理这个的，不管用Webwork还是Spring的interceptor，甚至用AOP，只要在取参数前
加那么一句：request.setCharacterEncoding("utf-8");就行了。以前我用struts就是在它的
RequestProcessor的populate之前加了这么一行。<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 4. request 的parameter里要传中文参数的问题<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这个问题跟Web
Container有关系，记得以前我同学用WebLogic时好象没出现这样的问题。（Tomcat里的解决方案是在server.xml里
Connector port="8080"的attribute里加URIEncoding="utf-8"<br />
当然还有最土的解决方案，虽然不太会用到，不过还是列出来，以备最无奈的时候使用：<br />
String encodeStr=new String(fieldValue.getBytes("8859_1"), "utf-8");<br />
<img src ="http://www.blogjava.net/xcp/aggbug/321648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-05-23 10:46 <a href="http://www.blogjava.net/xcp/archive/2010/05/23/321648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中的标签</title><link>http://www.blogjava.net/xcp/archive/2010/05/03/319973.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Mon, 03 May 2010 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/05/03/319973.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/319973.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/05/03/319973.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/319973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/319973.html</trackback:ping><description><![CDATA[<div class="postTitle">
<a id="viewpost1_TitleUrl" class="postTitle2" href="../../fuhoujun/archive/2008/10/04/232308.html">struts2中的标签</a>
</div>
<p>struts2.0的标签库（简介)<br />
用过struts1.x的人都知道，标签库有html、bean、logic、tiles，<br />
而struts2.0里的标签却没有分类，只用在jsp头文件加上<br />
&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;<br />
就能使用struts2.0的标签库</p>
<p>下面就介绍下每个标签的用法（有错请指正）：</p>
<p>A：</p>
<p>&lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接，类似于html里的&lt;a&gt;&lt;/a&gt;<br />
&lt;s:action name=""&gt;&lt;/s:action&gt;-----执行一个view里面的一个action<br />
&lt;s:actionerror/&gt;-----如果action的errors有值那么显示出来<br />
&lt;s:actionmessage/&gt;-----如果action的message有值那么显示出来<br />
&lt;s:append&gt;&lt;/s:append&gt;-----添加一个值到list，类似于list.add();<br />
&lt;s:autocompleter&gt;&lt;/s:autocompleter&gt;-----自动完成&lt;s:combobox&gt;标签的内容，这个是ajax</p>
<p>B：<br />
&lt;s:bean name=""&gt;&lt;/s:bean&gt;-----类似于struts1.x中的，JavaBean的值</p>
<p>C：<br />
&lt;s:checkbox&gt;&lt;/s:checkbox&gt;-----复选框<br />
&lt;s:checkboxlist list=""&gt;&lt;/s:checkboxlist&gt;-----多选框<br />
&lt;s:combobox list=""&gt;&lt;/s:combobox&gt;-----下拉框<br />
&lt;s:component&gt;&lt;/s:component&gt;-----图像符号</p>
<p>D：<br />
&lt;s:date/&gt;-----获取日期格式<br />
&lt;s:datetimepicker&gt;&lt;/s:datetimepicker&gt;-----日期输入框<br />
&lt;s:debug&gt;&lt;/s:debug&gt;-----显示错误信息<br />
&lt;s:div&gt;&lt;/s:div&gt;-----表示一个块，类似于html的&lt;div&gt;&lt;/div&gt;<br />
&lt;s:doubleselect list="" doubleName="" doubleList=""&gt;&lt;/s:doubleselect&gt;-----双下拉框</p>
<p>E：<br />
&lt;s:if test=""&gt;&lt;/s:if&gt;<br />
&lt;s:elseif test=""&gt;&lt;/s:elseif&gt;<br />
&lt;s:else&gt;&lt;/s:else&gt;-----这3个标签一起使用，表示条件判断</p>
<p>F：<br />
&lt;s:fielderror&gt;&lt;/s:fielderror&gt;-----显示文件错误信息<br />
&lt;s:file&gt;&lt;/s:file&gt;-----文件上传<br />
&lt;s:form action=""&gt;&lt;/s:form&gt;-----获取相应form的值</p>
<p>G：<br />
&lt;s:generator separator="" val=""&gt;&lt;/s:generator&gt;----和&lt;s:iterator&gt;标签一起使用</p>
<p>H：<br />
&lt;s:head/&gt;-----在&lt;head&gt;&lt;/head&gt;里使用，表示头文件结束<br />
&lt;s:hidden&gt;&lt;/s:hidden&gt;-----隐藏值</p>
<p>I：<br />
&lt;s:i18n name=""&gt;&lt;/s:i18n&gt;-----加载资源包到值堆栈<br />
&lt;s:include value=""&gt;&lt;/s:include&gt;-----包含一个输出，servlet或jsp页面<br />
&lt;s:inputtransferselect list=""&gt;&lt;/s:inputtransferselect&gt;-----获取form的一个输入<br />
&lt;s:iterator&gt;&lt;/s:iterator&gt;-----用于遍历集合</p>
<p>L：<br />
&lt;s:label&gt;&lt;/s:label&gt;-----只读的标签</p>
<p>M：<br />
&lt;s:merge&gt;&lt;/s:merge&gt;-----合并遍历集合出来的值</p>
<p>O：<br />
&lt;s:optgroup&gt;&lt;/s:optgroup&gt;-----获取标签组<br />
&lt;s:optiontransferselect doubleList="" list="" doubleName=""&gt;&lt;/s:optiontransferselect&gt;-----左右选择框</p>
<p>P：<br />
&lt;s:param&gt;&lt;/s:param&gt;-----为其他标签提供参数<br />
&lt;s:password&gt;&lt;/s:password&gt;-----密码输入框<br />
&lt;s:property/&gt;-----得到'value'的属性<br />
&lt;s:push value=""&gt;&lt;/s:push&gt;-----value的值push到栈中,从而使property标签的能够获取value的属性</p>
<p>R：</p>
<p>&lt;s:radio list=""&gt;&lt;/s:radio&gt;-----单选按钮<br />
&lt;s:reset&gt;&lt;/s:reset&gt;-----重置按钮</p>
<p><br />
S：<br />
&lt;s:select list=""&gt;&lt;/s:select&gt;-----单选框<br />
&lt;s:set name=""&gt;&lt;/s:set&gt;-----赋予变量一个特定范围内的值<br />
&lt;s:sort comparator=""&gt;&lt;/s:sort&gt;-----通过属性给list分类<br />
&lt;s:submit&gt;&lt;/s:submit&gt;-----提交按钮<br />
&lt;s:subset&gt;&lt;/s:subset&gt;-----为遍历集合输出子集</p>
<p>T：<br />
&lt;s:tabbedPanel id=""&gt;&lt;/s:tabbedPanel&gt;-----表格框<br />
&lt;s:table&gt;&lt;/s:table&gt;-----表格<br />
&lt;s:text name=""&gt;&lt;/s:text&gt;-----I18n文本信息<br />
&lt;s:textarea&gt;&lt;/s:textarea&gt;-----文本域输入框<br />
&lt;s:textfield&gt;&lt;/s:textfield&gt;-----文本输入框<br />
&lt;s:token&gt;&lt;/s:token&gt;-----拦截器<br />
&lt;s:tree&gt;&lt;/s:tree&gt;-----树<br />
&lt;s:treenode label=""&gt;&lt;/s:treenode&gt;-----树的结构</p>
U：<br />
&lt;s:updownselect list=""&gt;&lt;/s:updownselect&gt;-----多选择框<br />
&lt;s:url&gt;&lt;/s:url&gt;-----创建url
<img src ="http://www.blogjava.net/xcp/aggbug/319973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-05-03 22:03 <a href="http://www.blogjava.net/xcp/archive/2010/05/03/319973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2中select/doubleselect标签数据显示 </title><link>http://www.blogjava.net/xcp/archive/2010/05/03/319961.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Mon, 03 May 2010 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/05/03/319961.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/319961.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/05/03/319961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/319961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/319961.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近做毕业设计用到Struts2 的标签库，遇到一些比较复杂的数据显示，个人还是比较喜欢用tag显示的，Struts2 tags内容丰富，但是所提供的文档不是很详细（个人认为）在showcase下的例子如:&lt;s:select /&gt;&nbsp;&lt;s:doubleselect /&gt;&nbsp;&lt;s:updownselect /&gt;&nbsp;&lt;s:optiont...&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2010/05/03/319961.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/319961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-05-03 18:35 <a href="http://www.blogjava.net/xcp/archive/2010/05/03/319961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个异常：Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class com.rssReader.struts.form.RssReaderForm)</title><link>http://www.blogjava.net/xcp/archive/2010/03/22/316147.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Mon, 22 Mar 2010 04:51:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/03/22/316147.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/316147.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/03/22/316147.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/316147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/316147.html</trackback:ping><description><![CDATA[ 今天在创建了一个工程，编译并部署到tomcat后，发现出现了<span style="color: #0000ff;">java.lang.UnsupportedClassVersionError:</span>
<span style="color: #0000ff;">Bad version number in .class
file</span>
异常，检查了一下我的MyEclipse6.0配置，发现在MyEclipse里面给<span style="color: #0000ff;">Tomcat</span>
配置的JDK是其默认的<span style="color: #0000ff;">MyEclipse6.0</span>
，将其修改为<span style="color: #0000ff;">JDK6.0</span>
试了一下，结果OK， 所以就是这个问题引起。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 具体<span style="color: #0000ff;">解决办法</span>
：在myEclipse中改变编译器的方法</p>
<p><span style="color: #0000ff;">Window-&gt;Proerence-&gt;MyEclipse-&gt;Servers-&gt;Tomcat-&gt;Tomcat 6.x-&gt;JDK</span>
，</p>
<p>在Tomcat JDK name中选择jdk1.6.0</p>
<p>PS：<span style="color: #0000ff;">因为Tomcat6.0需要jdk1.6.0以上版本支持</span>
， 但是<span style="color: #0000ff;">MyEclipse6.0的jdk版本是5.0</span>
的， 所以会出现这个异常。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外还有个地方最好也要设置最新版本JDK，</p>
<p><span style="color: #0000ff;">Window-&gt;Proerence-&gt;Java-&gt;Installed JARs-&gt;JDK</span>
.在这里可以添加需要的Jdk。</p>
<img src ="http://www.blogjava.net/xcp/aggbug/316147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-03-22 12:51 <a href="http://www.blogjava.net/xcp/archive/2010/03/22/316147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>strtus2 批量下载  中文问题、压缩文件等  ------  讨论struts2工作流程</title><link>http://www.blogjava.net/xcp/archive/2009/10/30/downloadList.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Fri, 30 Oct 2009 15:52:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2009/10/30/downloadList.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/300435.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2009/10/30/downloadList.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/300435.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/300435.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近因为一个项目,需要做统一的下载,并且要支持批量下载..其中涉及到的知识点有:get请求中文处理,下载动态设置下载名,批量下载,动态打包,流处理,删除临时文件,使用迅雷下载后台发出两次次下载请求,以及struts2工作流程与原理等..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2009/10/30/downloadList.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/300435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2009-10-30 23:52 <a href="http://www.blogjava.net/xcp/archive/2009/10/30/downloadList.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2  get 请求 下载  中文处理</title><link>http://www.blogjava.net/xcp/archive/2009/10/29/download2.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Thu, 29 Oct 2009 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2009/10/29/download2.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/300264.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2009/10/29/download2.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/300264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/300264.html</trackback:ping><description><![CDATA[最近因项目需要做一个struts2下载功能,但是老是因为在做一些get请求的中文编码困扰,以下是解决方法<br />
1. encodeURI将文本以utf-8的编码,具体参见随笔<strong>js对文字进行编码涉及3个函数：escape,encodeURI,encodeURIComponent的区别<br />
</strong>例:<strong>encodeURI("download.action?filenames="+filenames+"&amp;filepaths="+filepaths);<br />
</strong><br />
2.但后台与用户交互的时候,如弹出下载对话时要想正确的显示中文文件名，我们需要对字端再次编码 也就是对get方法进行编码设置,否则中文名文件将出现乱码，或无法下载的情况<br />
例:<strong>public String getFilename() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return new String(filename.getBytes(), "ISO-8859-1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (UnsupportedEncodingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return filename;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
</strong>3.&nbsp; <span style="font-family: 宋体; font-size: 12pt">配置</span><span style="font-size: 12pt">tomcat/conf/server.xml</span><br />
&nbsp;&nbsp;如:&nbsp;<strong> &lt;Connector port="8080" protocol="HTTP/1.1"&nbsp;&nbsp;&nbsp; connectionTimeout="20000"&nbsp;</strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirectPort="8443" URIEncoding="UTF-8" /&gt;</strong></span>
<img src ="http://www.blogjava.net/xcp/aggbug/300264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2009-10-29 21:47 <a href="http://www.blogjava.net/xcp/archive/2009/10/29/download2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2操作request、session和application对象</title><link>http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actionContext1.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Thu, 22 Oct 2009 17:46:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actionContext1.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/299439.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actionContext1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/299439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/299439.html</trackback:ping><description><![CDATA[<p>Struts 2提供了多种方式来访问上述的三种对象，归结起来，可以划分为两大类：与Servlet API解耦的访问方式和与Servlet API耦合的访问方式。</p>
<p><strong>与Servlet API解耦的访问方式（IoC方式）</strong></p>
<p>为了避免与Servlet API耦合在一起，方便Action类做单元测试，Struts 2对HttpServletRequest、HttpSession和ServletContext进行了封装，构造了三个Map对象来替代这三种对象， 在Action中，直接使用HttpServletRequest、HttpSession和ServletContext对应的Map对象来保存和读取 数据。</p>
<p>要获取这三个Map对象，可以使用com.opensymphony.xwork2.ActionContext类，ActionContext 是action执行的上下文，在ActionContext中保存了action执行所需的一组对象，包括parameters、request、 session、application和locale等。ActionContext类定义了如下方法，用于获取 HttpServletRequest、HttpSession和ServletContext对应的Map对象。</p>
<h5>&#216; public Object get(Object key)</h5>
<p>ActionContext类没有提供类似getRequest()这样的方法来获取封装了HttpServletRequest的Map对象。要得到请求Map对象，你需要为get()方法传递参数&#8220;request&#8221;。</p>
<h2>&#216; public Map getSession()</h2>
<p>获取封装了HttpSession的Map对象。</p>
<h5>&#216; public Map getApplication()</h5>
<p>获取封装了ServletContext的Map对象。<br />
<br />
我们看 通过ActionContext来获取request、session和application对象的LoginAction1</p>
<div class="wp_syntax">
<table>
    <tbody>
        <tr>
            <td class="line_numbers">
            <pre>1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            49
            50
            51
            52
            53
            54
            55
            56
            57
            58
            59
            60
            61
            62
            63
            64
            65
            66
            67
            68
            69
            </pre>
            </td>
            <td class="code">
            <pre style="font-family: monospace" class="java"><span style="color: #000000; font-weight: bold">package</span> <span style="color: #006699">action</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">import</span> <span style="color: #006699">java.util.Map</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">import</span> <span style="color: #006699">dbPackage.User</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">import</span> <span style="color: #006699">com.opensymphony.xwork2.Action</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">import</span> <span style="color: #006699">com.opensymphony.xwork2.ActionContext</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">public</span> <span style="color: #000000; font-weight: bold">class</span> LoginAction1 <span style="color: #000000; font-weight: bold">implements</span> <span style="color: #003399">Action</span>
            &nbsp;
            <span style="color: #009900">{</span>   <span style="color: #000000; font-weight: bold">private</span> User user<span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">public</span> User getUser<span style="color: #009900">(</span><span style="color: #009900">)</span>
            &nbsp;
            <span style="color: #009900">{</span> <span style="color: #000000; font-weight: bold">return</span> user<span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #009900">}</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">public</span> <span style="color: #000066; font-weight: bold">void</span> setUser<span style="color: #009900">(</span>User user<span style="color: #009900">)</span>
            &nbsp;
            <span style="color: #009900">{</span> <span style="color: #000000; font-weight: bold">this</span>.<span style="color: #006633">user</span> <span style="color: #339933">=</span> user<span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #009900">}</span>
            &nbsp;
            @SuppressWarnings<span style="color: #009900">(</span><span style="color: #0000ff">"unchecked"</span><span style="color: #009900">)</span>
            &nbsp;
            @Override
            &nbsp;
            <span style="color: #000000; font-weight: bold">public</span> <span style="color: #003399">String</span> execute<span style="color: #009900">(</span><span style="color: #009900">)</span> <span style="color: #000000; font-weight: bold">throws</span> <span style="color: #003399">Exception</span>
            &nbsp;
            <span style="color: #009900">{</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">if</span><span style="color: #009900">(</span><span style="color: #0000ff">"zhangsan"</span>.<span style="color: #006633">equals</span><span style="color: #009900">(</span>user.<span style="color: #006633">getUsername</span><span style="color: #009900">(</span><span style="color: #009900">)</span><span style="color: #009900">)</span><span style="color: #339933">&amp;&amp;</span> <span style="color: #0000ff">"1234"</span>.<span style="color: #006633">equals</span><span style="color: #009900">(</span>user.<span style="color: #006633">getPassword</span><span style="color: #009900">(</span><span style="color: #009900">)</span><span style="color: #009900">)</span><span style="color: #009900">)</span>
            &nbsp;
            <span style="color: #009900">{</span> ActionContext context <span style="color: #339933">=</span> ActionContext.<span style="color: #006633">getContext</span><span style="color: #009900">(</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #003399">Map</span> request <span style="color: #339933">=</span> <span style="color: #009900">(</span><span style="color: #003399">Map</span><span style="color: #009900">)</span>context.<span style="color: #006633">get</span><span style="color: #009900">(</span><span style="color: #0000ff">"request"</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #003399">Map</span> session <span style="color: #339933">=</span> context.<span style="color: #006633">getSession</span><span style="color: #009900">(</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #003399">Map</span> application <span style="color: #339933">=</span> context.<span style="color: #006633">getApplication</span><span style="color: #009900">(</span><span style="color: #009900">)</span>；
            &nbsp;
            <span style="font-style: italic; color: #666666">//在请求中放置欢迎信息。</span>
            &nbsp;
            request.<span style="color: #006633">put</span><span style="color: #009900">(</span><span style="color: #0000ff">"greeting"</span>, <span style="color: #0000ff">"欢迎您来到程序员之家"</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="font-style: italic; color: #666666">//在session中保存user对象</span>
            &nbsp;
            session.<span style="color: #006633">put</span><span style="color: #009900">(</span><span style="color: #0000ff">"user"</span>, user<span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="font-style: italic; color: #666666">//统计用户访问量，在application中保存用户访问量数据</span>
            &nbsp;
            <span style="color: #003399">Integer</span> count <span style="color: #339933">=</span> <span style="color: #009900">(</span><span style="color: #003399">Integer</span><span style="color: #009900">)</span>application.<span style="color: #006633">get</span><span style="color: #009900">(</span><span style="color: #0000ff">"counter"</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">if</span><span style="color: #009900">(</span><span style="color: #000066; font-weight: bold">null</span> <span style="color: #339933">==</span> count<span style="color: #009900">)</span> count<span style="color: #339933">=</span><span style="color: #cc66cc">1</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">else</span> count<span style="color: #339933">++;</span>
            &nbsp;
            application.<span style="color: #006633">put</span><span style="color: #009900">(</span><span style="color: #0000ff">"counter"</span>, count<span style="color: #009900">)</span><span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">return</span> SUCCESS<span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #009900">}</span><span style="color: #000000; font-weight: bold">else</span> <span style="color: #009900">{</span>
            &nbsp;
            <span style="color: #000000; font-weight: bold">return</span> ERROR<span style="color: #339933">;</span>
            &nbsp;
            <span style="color: #009900">}</span> <span style="color: #009900">}</span><span style="color: #009900">}</span></pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="margin-top: 7.8pt">在成功页面中，可以使用JSP内置的表达式语言来访问request、session和application范围的数据，代码如例3-12所示。</p>
<p style="margin: 6.2pt 0cm 1.55pt">例3-12 success.jsp</p>
<div class="wp_syntax">
<table>
    <tbody>
        <tr>
            <td class="line_numbers">
            <pre>1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            </pre>
            </td>
            <td class="code">
            <pre style="font-family: monospace" class="java"><span style="color: #339933">&lt;%</span>@ page contentType<span style="color: #339933">=</span><span style="color: #0000ff">"text/html;charset=GBK"</span> <span style="color: #339933">%&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;</span>html<span style="color: #339933">&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;</span>head<span style="color: #339933">&gt;&lt;</span>title<span style="color: #339933">&gt;</span>欢迎页面<span style="color: #339933">&lt;/</span>title<span style="color: #339933">&gt;&lt;/</span>head<span style="color: #339933">&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;</span>body<span style="color: #339933">&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;</span>h3<span style="color: #339933">&gt;</span>$<span style="color: #009900">{</span>sessionScope.<span style="color: #006633">user</span>.<span style="color: #006633">username</span><span style="color: #009900">}</span>，$<span style="color: #009900">{</span>requestScope.<span style="color: #006633">greeting</span><span style="color: #009900">}</span>。<span style="color: #339933">&lt;</span>br<span style="color: #339933">&gt;</span>
            &nbsp;
            本站的访问量是：$<span style="color: #009900">{</span>applicationScope.<span style="color: #006633">counter</span><span style="color: #009900">}</span><span style="color: #339933">&lt;/</span>h3<span style="color: #339933">&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;/</span>body<span style="color: #339933">&gt;</span>
            &nbsp;
            <span style="color: #339933">&lt;/</span>html<span style="color: #339933">&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p style="border-bottom-style: none; padding-bottom: 0cm; border-right-style: none; padding-left: 0cm; padding-right: 0cm; border-top-style: none; background: #e6e6e6; border-left-style: none; padding-top: 0cm; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous"><strong><span style="color: #ff0000">与Servlet API耦合的访问方式</span><span style="color: #ff0000">（非IoC方式）</span></strong></p>
<p>要获得上述对象，关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前 Action的上下文对象。 另外，org.apache.struts2.ServletActionContext作为辅助类（Helper Class），可以帮助您快捷地获得这几个对象。</p>
<p><span style="color: #0000ff">HttpServletRequest request = ServletActionContext.getRequest();<br />
HttpServletResponse response = ServletActionContext.getResponse();<br />
HttpSession session = request.getSession();</span></p>
<p>如果你只是想访问session的属性（Attribute），你也可以通过ActionContext.getContext().getSession()获取或添加session范围（Scoped）的对象。<br />
<br />
<br />
<br />
本文转载于:http://www.emool.cn/archives/y2009/318.html</p>
<img src ="http://www.blogjava.net/xcp/aggbug/299439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2009-10-23 01:46 <a href="http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actionContext1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>严重: Exception starting filter Struts2 Caught exception while loading file struts-default.xml</title><link>http://www.blogjava.net/xcp/archive/2008/09/23/struts2error1.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Tue, 23 Sep 2008 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/09/23/struts2error1.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/230764.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/09/23/struts2error1.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/230764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/230764.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天下午做了一个ssh项目，是利用spring配置文件管理hibernate配置文件，结果一发布出现以下错误，请高手们指教!!!!<br>严重: Exception starting filter struts2<br>Caught exception while loading file struts-default.xml - [unknown location]<br> at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839)<br> at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)<br> at com.opensymphony.xwork2.config.providers.XmlConfi&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2008/09/23/struts2error1.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/230764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-09-23 21:49 <a href="http://www.blogjava.net/xcp/archive/2008/09/23/struts2error1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2整合spring应用实例</title><link>http://www.blogjava.net/xcp/archive/2008/09/13/s2s.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sat, 13 Sep 2008 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/09/13/s2s.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/228740.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/09/13/s2s.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/228740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/228740.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的，以下通过具体一个用户登录实现来说明struts2整合spring的相关内容.<br><br>    一、准备工作<br>         <br> 1.实例分析我们在这不与数据库打交道，所有就是当用登录的时候判断用户名是否为指定值，密码是否为指定值，以及相关的异常处理、<br>        2.为什么我们要说struts2整合spring呢？相信在家都知道，我也不用多说了....<br>        4.在  http://struts.apache.org/download.cgi#struts212下载struts2的jar包，源码，API文档.<br>        5.在  http://static.springframework.org/downloads/nightly/release-download.php下载不同版本的spring的jar包，源码，API文档.<br>        &nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2008/09/13/s2s.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/228740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-09-13 17:34 <a href="http://www.blogjava.net/xcp/archive/2008/09/13/s2s.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>整合Struts2+JasperReport Web报表应用示例2</title><link>http://www.blogjava.net/xcp/archive/2008/09/13/jasperreport.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Sat, 13 Sep 2008 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/09/13/jasperreport.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/228725.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/09/13/jasperreport.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/228725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/228725.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JasperReports作为一种优秀且开源的报表引擎，不利用太可惜了。同时，借助开源的JasperReports模板设计利器iReports，可以可视化的设计报表模板。基于Web的报表在很多项目中都是需要的。而随着Struts2的流行，就应该研究一下在Struts2下如何利用JasperReports进行报表输出。本示例比较简单，采用的数据源即为JavaBean，而没有采用复杂的数据库，其实原理是一样的。只是传递给JasperReports的参数随着连接方式的变化而略加修改而已。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2008/09/13/jasperreport.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/228725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-09-13 15:18 <a href="http://www.blogjava.net/xcp/archive/2008/09/13/jasperreport.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2树状菜单实现</title><link>http://www.blogjava.net/xcp/archive/2008/09/08/struts2Tree.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Mon, 08 Sep 2008 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/09/08/struts2Tree.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/227774.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/09/08/struts2Tree.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/227774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/227774.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2树状菜单实现<br>一.概要:<br><br>这篇文章是自己在学习struts2时从struts2的官方英文文档实例中整理出来的，此处介绍三种Struts2树状菜单的实现方式<br>分别是:静态，动态，动态Ajax三种方式.<br>以下实例均在windowsXpsp2+Struts2+MyEcliplse6.01+Tomcat6.0.14+JDK1.6.0_03<br>下调试通过,项目名称为study3,包名为com.zhang.struts3<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2008/09/08/struts2Tree.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/227774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-09-08 17:09 <a href="http://www.blogjava.net/xcp/archive/2008/09/08/struts2Tree.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>