struts2安装包是一款采用MVC设计模式的Web框架,我们可以通过这款软件来进行Web开发。如果你是一名Web开发人员,那么就可以直接通过Struts2完整版来建立模型,同时还可以用来进行视图的数据交互。这款软件的功能比起原先的Struts1有了非常明显的进步。
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
在Action的实现方面
Struts1要求必须统一扩展自Action类,而Struts2中可以是一个POJO。
线程模型方面
Struts1的Action是单实例的,一个Action的实例处理所有的请求。Struts 2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题。
Servlet依赖方面
Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。
封装请求参数
Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
表达式语言方面
Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph NavigationLanguage)。
绑定值到视图技术
Struts1使用标准的JSP,Struts2使用“ValueStack”技术。
类型转换
Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
Action执行控制的对比
Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期。
漏洞情况分析:
Struts2 是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。它是WebWork和Struts社区合并后的产物。攻击者可以利用Struts应用框架的命令执行漏洞,执行恶意Java代码,最终导致网站数据被窃取、网页被篡改等严重后果。具体分析情况如下:
1、 Apache Struts远程命令执行漏洞
由于Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。
2、 Apache Struts开放重定向漏洞
Apache Struts 2DefaultActionMapper在处理短路径重定向参数前缀"redirect:"或"redirectAction:"时存在开放重定向漏洞,允许远程攻击者利用漏洞操作"redirect:"或"redirectAction:"后的信息,重定向URL到任意位置。
漏洞影响评估:
CNVD对远程命令执行漏洞(CNVD-2013-28972)和开放重定向漏洞(CNVD-2013-28979)的评级为“高危”,由于redirect:和redirectAction:此两项前缀为Struts默认开启功能,因此ApacheStruts 2.3.15.1以下版本受到漏洞影响。该漏洞与在2012年对我国境内政府和重要信息系统部门、企事业单位网站造成严重威胁的漏洞(编号:CNVD-2013-25061,对应CVE-2013-1966)相比,技术评级相同且受影响版本更多。
漏洞处置建议:
厂商已经发布Apache Struts 2.3.15.1以修复此安全漏洞,建议Struts用户及时升级到最新版本。
下载struts2,需要用到的是full distribution,根据需要也可以下载诸如文档doc和源代码source等。
安装tomcat或其他服务器,安装Eclipse或其他JAVA编译环境,将Struts2解压并记录下解压的路径。
在MyEclipse中配置服务器,此处以tomcat为例,进入MyEclipse,工具栏中选择windows,然后选择preference,然后选择MyEclipse->Servers->Tomcat,然后选择对应的Tomcat版本你你对应的安装地址。
在MyEclipse中配置jdk,依次选择window –> preferences – >java – >installed jres,如果没有对应的JDK(不是JRE),选择add,选择standard VM -> next,选择JDK对应的Directory。
建立Struts2程序,首先找到struts目录下对应的apps目录,解压struts2-blank-2.1.6.war,Copy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包会在文件上传和下载时需要,其他为必须。在struts.xml中照原配置根据自己的需要进行对应的配置。
如何手动配置Struts2项目?
首先新建一个web project,这里就以这个项目为例,项目名起为test。
解压你下载好的struts2文件,找到里面的Apps——struts2-blank.war文件。
复制这个文件到你的Tomcat所在的目录——webapps文件夹下。启动Tomcat后就会自动生成一个struts2-blank项目。
这个项目就是你下载的struts版本中的一个空白的模板,里面是你这个版本的struts所必须的文件,只能多不能少,所以根据这个你才能配置成功,而不是看几年前的教程,那样你很难成功,不同的版本需要的jar包是不一样的。
打开struts2-blank文件夹,找到里面的web.xml 文件,将这个文件打开,复制里面的内容到你项目的web.xml文件中。
打开lib文件夹,把里面的所有包都复制(ctrl+C),然后打开Myeclipse中的你的项目的lib目录,粘贴即可(ctrl+V)。
最后将struts.xml文件复制到你项目的src目录下,不要复制错了,一旦错了就木有用了。
复制后需要将里面<struts></struts>中间的部分都删掉,否则会报错的。
这样你的struts就配置好了,部署一下就可以了。
注意:如果在部署的时候出现找不到类的情况说名你部署的时候jar包没有导入成功,可以手动的复制进去方法如下:
打开Tomcat目录下的webapps文件夹,找到你自己的项目,打开里面的lib文件夹,将第七步中的jar包复制进去就OK了。
……
点击下载编程软件 >>本地高速下载
点击下载编程软件 >>百度网盘下载