﻿<?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-Java Home-随笔分类-Struts相关技术</title><link>http://www.blogjava.net/yemoo/category/23093.html</link><description>Java技术修炼中...</description><language>zh-cn</language><lastBuildDate>Wed, 06 Jun 2007 15:56:08 GMT</lastBuildDate><pubDate>Wed, 06 Jun 2007 15:56:08 GMT</pubDate><ttl>60</ttl><item><title>Struts2下的用户权限验证问题解决方法</title><link>http://www.blogjava.net/yemoo/archive/2007/06/06/122367.html</link><dc:creator>Yemoo'S Java Blog</dc:creator><author>Yemoo'S Java Blog</author><pubDate>Wed, 06 Jun 2007 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/yemoo/archive/2007/06/06/122367.html</guid><wfw:comment>http://www.blogjava.net/yemoo/comments/122367.html</wfw:comment><comments>http://www.blogjava.net/yemoo/archive/2007/06/06/122367.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yemoo/comments/commentRss/122367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yemoo/services/trackbacks/122367.html</trackback:ping><description><![CDATA[前段时间作了一个简单的系统,其中涉及到后台管理,当然也就遇到了权限验证的问题,由于初次做J2EE项目，所有这些东西懂我来说都是个开始。<br />对于权限验证，如果程序由目录划分，如管理员访问的页面都放在admin下，这样我们可以写一个权限验证的过滤器，然后配置admin目录都要经过这个过滤器即可。这样对于jsp页面的权限验证比较容易。但对于action（控制器类）就不好控制了，因为action是没有目录概念的，如我们访问action的地址为：<a href="http://xxx/sample/ac1.action">http://xxx/sample/ac1.action</a>，同时如果使用<a href="http://xxx/sample/xx/xx/ac1.action">http://xxx/sample/xx/xx/ac1.action</a>同样可以访问，这是因为只要在这个项目目录下，访问的页面如果为action则struts就会去查询这个action名字对应的类，而不管前面的目录结构。因此我们不能再用过滤器对管理员部分的action进行验证。经过查看struts2的相关资料发现了拦截器这个有用的东西。通过struts2的配置文件的包管理功能和拦截器可以轻松的对指定的action做管理（拦截），如<br />===================================================<br />&lt;package name="user" extends="struts-default"&gt;<br />  &lt;!-- 前台用户操作部分 --&gt;<br />  &lt;!-- 框架页，显示分类 --&gt;<br />  &lt;action name="queryCateForwardUI"<br />   class="com.topsoft.bookmanage.web.action.QueryCateForwardActionUI"&gt;<br />   &lt;result&gt;/mainPage.jsp&lt;/result&gt;<br />  &lt;/action&gt;<br />    。。。。。<br />&lt;/package&gt;<br />&lt;!-- 管理员操作部分 --&gt;<br /> &lt;package name="manager" extends="struts-default"&gt;<br />  &lt;!-- 拦截器 --&gt;<br />  &lt;interceptors&gt;<br />   &lt;interceptor name="auth" class="com.topsoft.common.LogonInterceptor" /&gt;<br />   &lt;interceptor-stack name="authStack"&gt;  <br />                &lt;interceptor-ref name="auth"/&gt;  <br />                &lt;interceptor-ref name="paramsPrepareParamsStack"/&gt;  <br />            &lt;/interceptor-stack&gt;  <br />  &lt;/interceptors&gt;<br />  &lt;!-- 默认执行的拦截器 --&gt;<br />  &lt;default-interceptor-ref name="authStack"/&gt;<br />  &lt;!-- 全局Action映射 --&gt; <br />  &lt;global-results&gt;<br />   &lt;result name="login" type="redirect"&gt;/managerLoginUI.action&lt;/result&gt;<br />  &lt;/global-results&gt;<br />  <br />  &lt;!-- 后台管理首页面UI --&gt;<br />  &lt;action name="managerIndexUI"<br />   class="com.topsoft.bookmanage.web.action.ManagerIndexActionUI"&gt;<br />   &lt;result&gt;/admin/index.jsp&lt;/result&gt;<br />  &lt;/action&gt;<br /> 。。。。。。<br />&lt;/package&gt;<br />=================================================<br /><br />通过使用拦截器+过滤器可以完美解决权限验证的问题。<img src ="http://www.blogjava.net/yemoo/aggbug/122367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yemoo/" target="_blank">Yemoo'S Java Blog</a> 2007-06-06 15:17 <a href="http://www.blogjava.net/yemoo/archive/2007/06/06/122367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> struts2的struts.properties配置文件详解 </title><link>http://www.blogjava.net/yemoo/archive/2007/05/20/118722.html</link><dc:creator>Yemoo'S Java Blog</dc:creator><author>Yemoo'S Java Blog</author><pubDate>Sun, 20 May 2007 11:05:00 GMT</pubDate><guid>http://www.blogjava.net/yemoo/archive/2007/05/20/118722.html</guid><wfw:comment>http://www.blogjava.net/yemoo/comments/118722.html</wfw:comment><comments>http://www.blogjava.net/yemoo/archive/2007/05/20/118722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yemoo/comments/commentRss/118722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yemoo/services/trackbacks/118722.html</trackback:ping><description><![CDATA[
		<p>struts.action.extension<br />          The URL extension to use to determine if the request is meant for a Struts action <br />           用URL扩展名来确定是否这个请求是被用作Struts action，其实也就是设置 action的后缀，例如login.do的'do'字。</p>
		<p>struts.configuration<br />          The org.apache.struts2.config.Configuration implementation class<br />            org.apache.struts2.config.Configuration接口名</p>
		<p>struts.configuration.files<br />          A list of configuration files automatically loaded by Struts <br />           struts自动加载的一个配置文件列表</p>
		<p>struts.configuration.xml.reload<br />          Whether to reload the XML configuration or not<br />           是否加载xml配置(true,false)</p>
		<p>struts.continuations.package<br />           The package containing actions that use Rife continuations<br />           含有actions的完整连续的package名称</p>
		<p>struts.custom.i18n.resources<br />          Location of additional localization properties files to load <br />           加载附加的国际化属性文件（不包含.properties后缀）</p>
		<p>struts.custom.properties<br />          Location of additional configuration properties files to load<br />           加载附加的配置文件的位置</p>
		<p>
				<br />struts.devMode<br />          Whether Struts is in development mode or not<br />           是否为struts开发模式</p>
		<p>struts.dispatcher.parametersWorkaround<br />          Whether to use a Servlet request parameter workaround necessary for some versions of WebLogic<br />            （某些版本的weblogic专用）是否使用一个servlet请求参数工作区（PARAMETERSWORKAROUND）</p>
		<p>struts.enable.DynamicMethodInvocation<br />          Allows one to disable dynamic method invocation from the URL<br />            允许动态方法调用</p>
		<p>struts.freemarker.manager.classname<br />          The org.apache.struts2.views.freemarker.FreemarkerManager implementation class <br />           org.apache.struts2.views.freemarker.FreemarkerManager接口名</p>
		<p>struts.i18n.encoding<br />          The encoding to use for localization messages<br />           国际化信息内码</p>
		<p>struts.i18n.reload<br />          Whether the localization messages should automatically be reloaded<br />           是否国际化信息自动加载 </p>
		<p>struts.locale<br />          The default locale for the Struts application<br />           默认的国际化地区信息</p>
		<p>struts.mapper.class<br />          The org.apache.struts2.dispatcher.mapper.ActionMapper implementation class<br />            org.apache.struts2.dispatcher.mapper.ActionMapper接口</p>
		<p>struts.multipart.maxSize<br />          The maximize size of a multipart request (file upload)<br />           multipart请求信息的最大尺寸（文件上传用） </p>
		<p>struts.multipart.parser<br />          The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation for a multipart request (file upload) <br />          专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口（文件上传用）</p>
		<p>
				<br />struts.multipart.saveDir<br />          The directory to use for storing uploaded files <br />           设置存储上传文件的目录夹</p>
		<p>struts.objectFactory<br />          The com.opensymphony.xwork2.ObjectFactory implementation class<br />           com.opensymphony.xwork2.ObjectFactory接口（spring）</p>
		<p>struts.objectFactory.spring.autoWire<br />          Whether Spring should autoWire or not<br />           是否自动绑定Spring</p>
		<p>struts.objectFactory.spring.useClassCache<br />          Whether Spring should use its class cache or not<br />           是否spring应该使用自身的cache </p>
		<p>struts.objectTypeDeterminer<br />          The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation class<br />            com.opensymphony.xwork2.util.ObjectTypeDeterminer接口</p>
		<p>struts.serve.static.browserCache<br />          If static content served by the Struts filter should set browser caching header properties or not <br />           是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中</p>
		<p>struts.serve.static<br />          Whether the Struts filter should serve static content or not <br />           是否struts过滤器应该提供静态内容</p>
		<p>struts.tag.altSyntax<br />          Whether to use the alterative syntax for the tags or not <br />           是否可以用替代的语法替代tags</p>
		<p>struts.ui.templateDir<br />          The directory containing UI templates<br />           UI templates的目录夹 </p>
		<p>struts.ui.theme<br />          The default UI template theme<br />           默认的UI template主题</p>
		<p>struts.url.http.port<br />          The HTTP port used by Struts URLs<br />           设置http端口</p>
		<p>struts.url.https.port<br />          The HTTPS port used by Struts URLs <br />           设置https端口</p>
		<p>struts.url.includeParams<br />          The default includeParams method to generate Struts URLs <br />          在url中产生 默认的includeParams</p>
		<p>
				<br />struts.velocity.configfile<br />          The Velocity configuration file path<br />           velocity配置文件路径</p>
		<p>struts.velocity.contexts<br />          List of Velocity context names<br />           velocity的context列表</p>
		<p>
				<br />struts.velocity.manager.classname<br />          org.apache.struts2.views.velocity.VelocityManager implementation class<br />           org.apache.struts2.views.velocity.VelocityManager接口名</p>
		<p>struts.velocity.toolboxlocation<br />          The location of the Velocity toolbox<br />           velocity工具盒的位置 <br />struts.xslt.nocache<br />          Whether or not XSLT templates should not be cached<br />           是否XSLT模版应该被缓存 <br /></p>
<img src ="http://www.blogjava.net/yemoo/aggbug/118722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yemoo/" target="_blank">Yemoo'S Java Blog</a> 2007-05-20 19:05 <a href="http://www.blogjava.net/yemoo/archive/2007/05/20/118722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>