继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

亚努人
关注TA
已关注
手记 20
粉丝 36
获赞 349

在慕课网《struts2入门》视频教程中,老师讲解的struts2环境搭建与基本知识是基于struts2.3版本的,目前最新版的struts是2.5版本的。本着与时俱进的原则,本人下载了2.5版本的参与学习,发现有很多地方还是有细微差别的,不注意就要折腾很久,现在汇总一下。

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包。完整的示例如下所示。

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
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()。

public class HelloWorldAction extends ActionSupport {

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }

    public String add(){ //通过指定method属性
        return SUCCESS;
    }

    public String delete(){ //通过感叹号方式
        return "delete";
    }

    public String update(){ //通过通配符方式
        return "update";
    }
}

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

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="default" namespace="/" extends="struts-default">
        <global-allowed-methods>delete</global-allowed-methods>
        <action name="helloworld" class="imooc.action.HelloWorldAction">
            <result>/result.jsp</result>
            <result name="delete">/delete.jsp</result>
        </action>
    </package>
</struts>
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="helloworld_*" method="{1}" class="imooc.action.HelloWorldAction">
            <result>/result.jsp</result>
            <result name="update">/{1}.jsp</result>
            <allowed-methods>update</allowed-methods>
        </action>
    </package>
</struts>
打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP

热门评论

楼主总结的非常好,值得学习!



楼主总结的非常好,值得学习!



楼主是如何发现并解决这个问题的?我觉得自己非常欠缺这方面的能力

 

查看全部评论