- 浏览: 49834 次
- 性别:
- 来自: **
最新评论
-
youanyyou:
不错 有IT人员的风范
中国网站前途预测 -
wanggod:
我用一个,呵呵,
腾讯微博邀请,要的自取。 -
zyengogo:
我没拿到
( ⊙ o ⊙ )啊!
腾讯微博邀请,要的自取。 -
hilly:
mercyblitz 写道可以换一个端口试试 估计是他软件缺陷 ...
Ashampoo不厚道,和tomcat冲突?! -
mercyblitz:
可以换一个端口试试
Ashampoo不厚道,和tomcat冲突?!
3. 使用应用模块(Application Modules)
Struts 1.1的一个新特性是应用模块的概念。应用模块允许将单个Struts应用划分成几个模块,每个模块有自己的Struts配置文件,JSP页面,Action等等。这个新特性是为了解决大中型的开发队伍抱怨最多的一个问题,即为了更好的支持并行开发允许多个配置文件而不是单个配置文件。
注:在早期的beta版本中,该特性被称为子应用(sub-applications),最近的改名目的是为了更多地反映它们在逻辑上的分工。
显然,当很多开发人员一起参加一个项目时,单个的Struts配置文件很容易引起资源冲突。应用模块允许Struts按照功能要求进行划分,许多情况已经证明这样更贴近实际。例如,假设我们要开发一个典型的商店应用程序。可以将组成部分划分成模块比如catalog(商品目录), customer(顾客), customer service(顾客服务), order(订单)等。每个模块可以分布到不同的目录下,这样各部分的资源很容易定位,有助于开发和部署。图1 显示了该应用的目录结构。
注:如果你无需将项目划分成多个模块,Struts框架支持一个缺省的应用模块。这就使得应用程序也可以在1.0版本下创建,具有可移植性,因为应用程序会自动作为缺省的应用模块。
为了使用多应用模块功能,必须执行以下几个准备步骤:
· 为每个应用模块创建独立的Struts配置文件。
· 配置Web 部署描述符 Web.xml文件。
· 使用org.apache.struts.actions.SwitchAction 来实现程序在模块之间的跳转.
创建独立的Struts配置文件
每个Struts应用模块必须拥有自己的配置文件。允许创建自己的独立于其他模块的Action,ActionForm,异常处理甚至更多。
继续以上面的商店应用程序为例,我们可以创建以下的配置文件:一个文件名为struts-config-catalog.xml,包含catalog(商品目录)、items(商品清单)、和其它与库存相关的功能的配置信息;另一个文件名为struts- config-order.xml, 包含对order(订单)和order tracking(订单跟踪)的设置。第三个配置文件是struts-config.xml,其中含有属于缺省的应用模块中的一般性的功能。
配置Web部署描述符
在Struts的早期版本中,我们在Web.xml中指定Struts配置文件的路径。好在这点没变,有助于向后兼容。但对于多个应用模块,我们需要在Web部署描述符中增加新的配置文件的设定。
对于缺省的应用(包括Struts的早期版本),Struts framework 在Web.xml文件中查找带有config的元素<init-param>,用于载入Action mapping 和其它的应用程序设定。作为例子,以下的XML片断展现一个典型的<init-param>元素:<br><br><table width="600" align="center"><tbody><tr><td><img height="115" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image005.gif" width="487"></td></tr></tbody></table> <br> 注:如果在现有的<init-param>元素中找不到"config"关键字,Struts framework将缺省地使用/WEB/struts-config.xml<br><br> 为了支持多个应用模块(Struts 1.1的新特性),必须增加附加的<init-param>元素。与缺省的<init-param>元素不同的是,附加的<init-param>元素与每个应用模块对应,必须以config/xxx的形式命名,其中字符串xxx代表该模块唯一的名字。例如,在商店应用程序的例子中,<init-param>元素可定义如下(注意粗体字部分):<br><br><table width="600" align="center"><tbody><tr><td><img height="272" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image006.gif" width="487"></td></tr></tbody></table> <br><br> 第一个 <init-param>元素对应缺省的应用模块。第二和第三个元素分别代表非缺省应用模块catalog 和 order。<br><br> 当Struts载入应用程序时,它首先载入缺省应用模块的配置文件。然后查找带有字符串config/xxx 形式的附加的初始化参数。对每个附加的配置文件也进行解析并载入内存。这一步完成后,用户就可以很随意地用config/后面的字符串也就是名字来调用相应的应用模块。<br><br> <b>多个应用模块之间调用Action类</b><br><br> 在为每个应用模块创建独立的配置文件之后,我们就有可能需要调用不同的模块中Action。为此必须使用Struts框架提供的SwitchAction类。Struts 会自动将应用模块的名字添加到URL,就如Struts 自动添加应用程序的名字加到URL一样。应用模块是对框架的一个新的扩充,有助于进行并行的团队开发。如果你的团队很小那就没必要用到这个特性,不必进行模块化。当然,就算是只有一个模块,系统还是一样的运作。<br><br> <b><font color="#ac000">4. 把JSP放到WEB-INF后以保护JSP源代码</font></b><br><br> 为了更好地保护你的JSP避免未经授权的访问和窥视, 一个好办法是将页面文件存放在Web应用的WEB-INF目录下。<br><br> 通常JSP开发人员会把他们的页面文件存放在Web应用相应的子目录下。一个典型的商店应用程序的目录结构如图2所示。跟catalog (商品目录)相关的JSP被保存在catalog子目录下。跟customer相关的JSP,跟订单相关的JSP等都按照这种方法存放。<br><br><table width="600" align="center"><tbody><tr align="middle"><td> <img height="242" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image007.jpg" width="156"><br>图 2.基于不同的功能 JSP 被放置在不同的目录下 </td></tr></tbody></table> <br> 这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用。某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患。用户可以绕过Struts的controller直接调用JSP同样也是个问题。<br>为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。<br><br> 采用前面的例子,图3显示将JSP页面移到WEB-INF 目录下后的目录结构<br><br><table width="600" align="center"><tbody><tr align="middle"><td> <img height="237" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image008.jpg" width="149"><br>图 3. JSP存放在 WEB-INF 目录下更为安全 </td></tr></tbody></table> <br> 如果把这些JSP页面文件移到WEB-INF 目录下,在调用页面的时候就必须把"WEB-INF"添加到URL中。例如,在一个Struts配置文件中为一个logoff action写一个Action mapping。其中JSP的路径必须以"WEB-INF"开头。如下所示:请注意粗体部分.<br><br> 这个方法在任何情况下都不失为Struts实践中的一个好方法。是唯一要注意的技巧是你必须把JSP和一个Struts action联系起来。即使该Action只是一个很基本的很简单JSP,也总是要调用一个Action,再由它调用JSP。<br><br> 最后要说明的是,并不是所有的容器都能支持这个特性。WebLogic早期的版本不能解释Servlet声明,因此无法提供支持,据报道在新版本中已经改进了。总之使用之前先检查一下你的Servlet容器。<br><br></init-param></init-param></init-param></init-param></init-param></init-param></init-param></init-param>
Struts 1.1的一个新特性是应用模块的概念。应用模块允许将单个Struts应用划分成几个模块,每个模块有自己的Struts配置文件,JSP页面,Action等等。这个新特性是为了解决大中型的开发队伍抱怨最多的一个问题,即为了更好的支持并行开发允许多个配置文件而不是单个配置文件。
注:在早期的beta版本中,该特性被称为子应用(sub-applications),最近的改名目的是为了更多地反映它们在逻辑上的分工。
显然,当很多开发人员一起参加一个项目时,单个的Struts配置文件很容易引起资源冲突。应用模块允许Struts按照功能要求进行划分,许多情况已经证明这样更贴近实际。例如,假设我们要开发一个典型的商店应用程序。可以将组成部分划分成模块比如catalog(商品目录), customer(顾客), customer service(顾客服务), order(订单)等。每个模块可以分布到不同的目录下,这样各部分的资源很容易定位,有助于开发和部署。图1 显示了该应用的目录结构。
图 1. 一个典型的商店应用程序的目录结构 |
注:如果你无需将项目划分成多个模块,Struts框架支持一个缺省的应用模块。这就使得应用程序也可以在1.0版本下创建,具有可移植性,因为应用程序会自动作为缺省的应用模块。
为了使用多应用模块功能,必须执行以下几个准备步骤:
· 为每个应用模块创建独立的Struts配置文件。
· 配置Web 部署描述符 Web.xml文件。
· 使用org.apache.struts.actions.SwitchAction 来实现程序在模块之间的跳转.
创建独立的Struts配置文件
每个Struts应用模块必须拥有自己的配置文件。允许创建自己的独立于其他模块的Action,ActionForm,异常处理甚至更多。
继续以上面的商店应用程序为例,我们可以创建以下的配置文件:一个文件名为struts-config-catalog.xml,包含catalog(商品目录)、items(商品清单)、和其它与库存相关的功能的配置信息;另一个文件名为struts- config-order.xml, 包含对order(订单)和order tracking(订单跟踪)的设置。第三个配置文件是struts-config.xml,其中含有属于缺省的应用模块中的一般性的功能。
配置Web部署描述符
在Struts的早期版本中,我们在Web.xml中指定Struts配置文件的路径。好在这点没变,有助于向后兼容。但对于多个应用模块,我们需要在Web部署描述符中增加新的配置文件的设定。
对于缺省的应用(包括Struts的早期版本),Struts framework 在Web.xml文件中查找带有config的元素<init-param>,用于载入Action mapping 和其它的应用程序设定。作为例子,以下的XML片断展现一个典型的<init-param>元素:<br><br><table width="600" align="center"><tbody><tr><td><img height="115" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image005.gif" width="487"></td></tr></tbody></table> <br> 注:如果在现有的<init-param>元素中找不到"config"关键字,Struts framework将缺省地使用/WEB/struts-config.xml<br><br> 为了支持多个应用模块(Struts 1.1的新特性),必须增加附加的<init-param>元素。与缺省的<init-param>元素不同的是,附加的<init-param>元素与每个应用模块对应,必须以config/xxx的形式命名,其中字符串xxx代表该模块唯一的名字。例如,在商店应用程序的例子中,<init-param>元素可定义如下(注意粗体字部分):<br><br><table width="600" align="center"><tbody><tr><td><img height="272" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image006.gif" width="487"></td></tr></tbody></table> <br><br> 第一个 <init-param>元素对应缺省的应用模块。第二和第三个元素分别代表非缺省应用模块catalog 和 order。<br><br> 当Struts载入应用程序时,它首先载入缺省应用模块的配置文件。然后查找带有字符串config/xxx 形式的附加的初始化参数。对每个附加的配置文件也进行解析并载入内存。这一步完成后,用户就可以很随意地用config/后面的字符串也就是名字来调用相应的应用模块。<br><br> <b>多个应用模块之间调用Action类</b><br><br> 在为每个应用模块创建独立的配置文件之后,我们就有可能需要调用不同的模块中Action。为此必须使用Struts框架提供的SwitchAction类。Struts 会自动将应用模块的名字添加到URL,就如Struts 自动添加应用程序的名字加到URL一样。应用模块是对框架的一个新的扩充,有助于进行并行的团队开发。如果你的团队很小那就没必要用到这个特性,不必进行模块化。当然,就算是只有一个模块,系统还是一样的运作。<br><br> <b><font color="#ac000">4. 把JSP放到WEB-INF后以保护JSP源代码</font></b><br><br> 为了更好地保护你的JSP避免未经授权的访问和窥视, 一个好办法是将页面文件存放在Web应用的WEB-INF目录下。<br><br> 通常JSP开发人员会把他们的页面文件存放在Web应用相应的子目录下。一个典型的商店应用程序的目录结构如图2所示。跟catalog (商品目录)相关的JSP被保存在catalog子目录下。跟customer相关的JSP,跟订单相关的JSP等都按照这种方法存放。<br><br><table width="600" align="center"><tbody><tr align="middle"><td> <img height="242" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image007.jpg" width="156"><br>图 2.基于不同的功能 JSP 被放置在不同的目录下 </td></tr></tbody></table> <br> 这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用。某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患。用户可以绕过Struts的controller直接调用JSP同样也是个问题。<br>为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。<br><br> 采用前面的例子,图3显示将JSP页面移到WEB-INF 目录下后的目录结构<br><br><table width="600" align="center"><tbody><tr align="middle"><td> <img height="237" src="http://www.yesky.com/SoftChannel/72342371961929728/20021203/jt-2002-1203-image008.jpg" width="149"><br>图 3. JSP存放在 WEB-INF 目录下更为安全 </td></tr></tbody></table> <br> 如果把这些JSP页面文件移到WEB-INF 目录下,在调用页面的时候就必须把"WEB-INF"添加到URL中。例如,在一个Struts配置文件中为一个logoff action写一个Action mapping。其中JSP的路径必须以"WEB-INF"开头。如下所示:请注意粗体部分.<br><br> 这个方法在任何情况下都不失为Struts实践中的一个好方法。是唯一要注意的技巧是你必须把JSP和一个Struts action联系起来。即使该Action只是一个很基本的很简单JSP,也总是要调用一个Action,再由它调用JSP。<br><br> 最后要说明的是,并不是所有的容器都能支持这个特性。WebLogic早期的版本不能解释Servlet声明,因此无法提供支持,据报道在新版本中已经改进了。总之使用之前先检查一下你的Servlet容器。<br><br></init-param></init-param></init-param></init-param></init-param></init-param></init-param></init-param>
发表评论
-
集成新版本Tomcat到JBuilder
2006-06-29 20:14 558Overview <!-- Enter Approp ... -
什么是ERP软件
2006-07-04 07:16 707什么是ERP软件? ERP是英文Enterprise R ... -
Struts常见错误汇总(转)
2006-07-06 15:49 595以下所说的struts-config.xml和Applicat ... -
JSTL语法及参数
2006-07-13 23:46 1451JSTL语法及参数 JS ... -
struts标签之浅入深出(转)
2006-07-18 12:50 672Action和jsp的开发其实就是对Struts标签的运用.掌 ... -
标签示例
2006-07-18 13:18 646//web.xml <?xml ver ... -
[Struts]应用Map作为ActionForm的属性,动态增加ActionForm的“属性” (转)
2006-07-20 17:17 880[Struts]应用Map作为ActionForm的 ... -
struts的七点经验-1(转)
2006-07-20 17:20 6271. 只在必要的时候 ... -
struts的七点经验-3(转)
2006-07-20 17:27 7315. 使用 Prebuilt Action类提 ... -
LookupDispatchAction使用示例
2006-07-20 18:01 649LookupDispatchAction ... -
LookupDispatchAction使用示例(中文)(转)
2006-07-20 18:04 739org.apache.struts.actions.Looku ... -
官方Class LookupDispatchAction说明文档(转)
2006-07-20 18:18 725<! ... -
什么是数据仓库(转)
2006-07-24 14:01 677什么是数据仓库 (转载自北大高科网站,ht ... -
jsp生成随机验证码图片(转)
2006-08-06 21:45 887转自:http://www.matrix.org.cn/res ... -
Struts安装配置(转)
2006-08-16 17:11 862Struts安装配置 1、Struts的安 ... -
Struts入门(转)
2006-08-16 17:39 623Struts安装: 首先请到http://jakarta.ap ... -
J2EE建议的学习路线
2006-08-16 17:44 774J2EE建议的学习路线 来 ... -
java 中的内存泄漏
2006-09-07 19:49 588出自:ibm:developerworks中 ... -
为什么要使用EJB
2006-09-07 20:04 753为什么要使用EJB? 来源:http://www.jdon ... -
Java 应用程序 安装程序 制作工具 InstallAnywhere (转)
2007-01-08 10:56 1030本文转自:http://www.tongyi.net/deve ...
相关推荐
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
struts-taglib-1.3.8.jar struts-taglib-1.3.8.jar
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
2017年7月7日,Apache Struts发布最新的安全公告,Apache Struts2-strus1-plugin插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9791(S2-048),主要受影响的Struts版本为:2.3.x。 攻击者可以构造恶意的字段值...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-...
包含Struts2框架的核心类库,以及Struts2的第三方插件类库 struts2-core-2.0.14 xwork-2.0.7 ognl-2.6.11 commons-logging-1.0.4 freemarker-2.3.8 等等。
`struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...
【Struts2】〖所有依赖jar包〗struts-2.3.37-lib 我寻见一片海 碧蓝且耀着光 大片船只航行其上 都向着远方 Shared by Foriver_江河 © 1997-8023 江河 All Rights Reserved.
struts2-ssl-plugin-1.2.1.jar
struts1.38包,struts-core-1.3.8.jarstruts1.38包,struts-core-1.3.8.jar
struts-2.3.34-all.rar,包括app,docs,lib,src
struts2-config-browser-plugin-2.3.24.jar, struts2-core-2.3.24.jar, struts2-jasperreports-plugin-2.3.24.jar, struts2-jfreechart-plugin-2.3.24.jar, struts2-pell-multipart-plugin-2.3.24.jar, struts2-...
struts2-bean-validation-plugin-2.5.2.jar, struts2-cdi-plugin-2.5.2.jar, struts2-config-browser-plugin-2.5.2.jar, struts2-convention-plugin-2.5.2.jar, struts2-core-2.5.2.jar, struts2-dwr-plugin-2.5.2....
struts2-json-plugin,Struts JSON插件
首先,我们来看`struts-json-plugin-2.1.8.jar`,这是Struts2的JSON插件,它允许Struts2的动作类直接返回JSON格式的数据,方便前端进行Ajax请求处理。该插件在2.1.8版本中修复了若干bug,并提供了对JSON输出的支持。...
赠送jar包:struts-core-1.3.8.jar; 赠送原API文档:struts-core-1.3.8-javadoc.jar; 赠送源代码:struts-core-1.3.8-sources.jar; 赠送Maven依赖信息文件:struts-core-1.3.8.pom; 包含翻译后的API文档:struts...
Struts2 S2-029 远程代码执行漏洞初探 Struts2 是一个基于 Java 的 Web 框架,使用 OGNL 表达式来访问 ActionContext 中的对象数据。在 Struts2 中,标签库使用 OGNL 表达式来获取对象数据,例如 `...
`struts-2.5.22-all`这个压缩包名称暗示了它包含了Struts2框架的所有组成部分,可能包括: 1. `struts2-core.jar`:核心框架,提供基础的MVC功能。 2. `struts2-convention-plugin.jar`:约定优于配置的插件,使得...