Struts2.3和Struts2.5的区别,以及ActionContext.getContext()引发的争议

17 篇文章 0 订阅
1 篇文章 0 订阅

struts 2.5里面 代码是这样写的:

//这里返回对象是MAP而不是HttpParameter,跟Eclipse和MyEclipse有关,这里写上老师源代码,作为对比查看:    
com.opensymphony.xwork2.ActionContext ac = ActionContext.getContext();    
org.apache.struts2.dispatcher.HttpParameters hp = ac.getParameters();    
org.apache.struts2.dispatcher.Parameter p = hp.get("username");    
String username = p.getValue();    

而struts 2.3 里面 代码是这样写的:

com.opensymphony.xwork2.ActionContext ac =ActionContext.getContext();  
java.util.Map<String, Object> p = ac.getParameters();  
String username = (String)p.get("username");  

刚开始以为是MyEclipse和Eclipse版本的问题,后来才发现,和编辑器没关,是struts版本的问题

struts2.5和struts2.3的不同之处

参考资料:https://blog.csdn.net/qiaohao0206/article/details/78175254

1、struts2.5中是没有xwork-core-2.3.这个jar包的,因为它和struts2-core-2.3.这个包合并了 
2、struts2.5的过滤器配置相比struts2.3少了.ng这个包,变成了: 
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 

3、另外struts.xml的头部信息也对应的换成2.5,下边有示例

参考资料https://blog.csdn.net/nttzli/article/details/52729489

其中在2.3 中的web.xml


<filter>  
    <filter-name>struts23</filter-name>  
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
</filter>  
<filter-mapping>  
    <filter-name>struts23</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>  
2.5 中的web.xml
<filter>  
   <filter-name>action2</filter-name>  
   <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>  
</filter>  
<filter-mapping>  
   <filter-name>action2</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping> 

Eclipse下struts2.5环境搭建与struts2.3的区别

参考资料:https://www.imooc.com/article/16748
1、jar包的导入

在struts2.3中,老师前后一共导入了9个常用jar包。但是在struts2.5中是没有xwork那个jar包的,所以不用导入也找不到,更不用再去低版本里去单独下载这个包,因为它和struts-core包合并了。其次,当我使用这8个包部署项目后,启动Tomcat会报错,原因是还少了log4j和slf4j这两个jar包,导入后就可以解决问题了。所以前后一共是10个jar包。如下图所示。


2、web.xml文件过滤器的配置

配置web.xml文件,在编写<filter-class>标签时,如果按照2.3版本写,用Ctrl+鼠标移动是不会出现链接的,也就是说写的不对。正确的写法是org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,它与2.3版本相比少了一个ng包。完整的示例上面已经写过。

3、struts.xml文件的配置

在eclipse下新建XML文件是不会有struts的dtd版本头部信息的。而老师的头部信息很明显是2.3版本的,2.5版本的头部信息如下,新建struts.xml时需要直接拷贝粘贴进去。

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"  
    "http://struts.apache.org/dtds/struts-2.5.dtd"  
>  
    <struts>  
    </struts>  

4、动态调用Action的方式

通过在<action>标签中指定method属性来调用的这种方式两者并无区别,但是如果是使用感叹号和通配符方式,与2.3版本是有细微的不同的。

如下有一个Action类,里面有两个方法update()和delete()。

font>文件的配置

在eclipse下新建XML文件是不会有struts的dtd版本头部信息的。而老师的头部信息很明显是2.3版本的,2.5版本的头部信息如下,新建struts.xml时需要直接拷贝粘贴进去。

1.public class HelloWorldAction extends ActionSupport {  
2.    @Override   
3.    public String execute() throws Exception {  
4.        return SUCCESS;   
5.    }   
6.    public String add(){ //通过指定method属性   
7.        return SUCCESS;   
8.    }   
9.    public String delete(){ //通过感叹号方式   
10.        return "delete";   
11.    }   
12.    public String update(){ //通过通配符方式   
13.        return "update";   
14.    }   
15.}  

感叹号方式和通配符方式的struts.xml文件配置示例如下,需要在global-allowed-methods标签或allowed-methods标签中指定相关的方法,多个方法要用“,”隔开。具体的标签含义及使用还是和struts2.3版本老师讲的一样,可参考视频教程,这里不再赘述。

1.<struts>   
2.    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>   
3.    <package name="default" namespace="/" extends="struts-default">   
4.        <global-allowed-methods>delete</global-allowed-methods>   
5.        <action name="helloworld" class="imooc.action.HelloWorldAction">   
6.            <result>/result.jsp</result>  
7.            <result name="delete">/delete.jsp</result>  
8.        </action>  
9.    </package>   
10.</struts>  

1.<struts>  
2.    <package name="default" namespace="/" extends="struts-default">  
3.        <action name="helloworld_*" method="{1}" class="imooc.action.HelloWorldAction">  
4.            <result>/result.jsp</result>  
5.            <result name="update">/{1}.jsp</result>  
6.            <allowed-methods>update</allowed-methods>  
7.        </action>   
8.    </package>   
9.</struts>  






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值