博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts秘籍之起式:第1.3式:迁移至Struts 1.1
阅读量:5906 次
发布时间:2019-06-19

本文共 3162 字,大约阅读时间需要 10 分钟。

hot3.png

第1.3式. 从Struts 1.0迁移至Struts 1.1
问题
你需要将一个基于Struts 1.0的应用迁移到Struts 1.1.
动作分解
使用Struts1.1中对应的文件替换Struts 1.0 JAR 文件、标签库描述符(TLD) 文件、以及XML DTD 文件。如果你有使用Struts标签库绝对URI的JSP 页面,你需要修改它们。使用新的标签库重新编译和构建你的应用,解决兼容性错误。
最后,你需要将原来使用不赞成API的代码修改为使用新的Struts 1.1 API。
变化
Struts 1.1 在Struts 1.0基础上作了较大变化,从功能上讲,基于 Struts 1.0 的应用可以通过使用Struts1.1中的对应文件来替换Struts 1.0 的JAR 和TLD文件来进行迁移,这没什么大的困难。你需要修改所使用的标签库的URI,因为它们在Struta1.1中已经改变;这一般来说需要修改你的 web.xml部署描述符。如果你在JSP中使用绝对URI,这些值也需要修改。 列出了标签库URI的改变。

Table 1-3. Struts标签库URI
Struts 1.0.2 Taglib URI
Struts 1.1 Taglib URI
http://jakarta.apache.org/struts/tags-bean-1.0.2
http://jakarta.apache.org/struts/tags-bean
http://jakarta.apache.org/struts/tags-html-1.0.2
http://jakarta.apache.org/struts/tags-html
http://jakarta.apache.org/struts/tags-logic-1.0.2
http://jakarta.apache.org/struts/tags-logic
http://jakarta.apache.org/struts/tags-template-1.0.2
http://jakarta.apache.org/struts/tags-template
Not Available with Struts 1.0.2
http://jakarta.apache.org/struts/tags-tiles
Not Available with Struts 1.0.2
http://jakarta.apache.org/struts/tags-nested

 
Struts1.1中最明显的改变是Struts 的ActionServlet (org.apache.action.ActionServlet) 和Action类(org.apache.struts.Action)。Struts 1.1 也引入了请求处理器RequestProcessor (org.apache.struts.action.RequestProcessor)的概念。ActionServlet将请求处理委托给请求处理器。在Struts 1.1中,你不再需要一定要扩展ActionServlet来进行定制化;相反,你应该子类化RequestProcessor。如果一个基于 Struts 1.0的应用没有扩展ActionServlet,那么不需要做任何修改就能使用RequestProcessor。如果ActionServlet被子类化了,你却应该扩展RequestProcessor。
另一个主要的增强是Struts的Action。Struts 1.1 引入了一个新方法execute( ), 即其子类应该实现这个方法,而不是原来的perform()方法。 展示了一个实现perform()方法的简单Action例子。
Example 1-1. Struts 1.0 Action
 
package org.apache.struts.webapp.example;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public final class ExampleAction extends Action  {
    public ActionForward perform(ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
            throws IOException, ServletException  {
        try  {
            ExampleService service = new ExampleService( );
            Service.doService( );
        }
        catch (ServiceException ex)  {
            throw new ServletException( ex );
        }
        return (mapping.findForward("success"));
    }
}
 
则是使用Struts1.1的同一个例子。
Example 1-2. Struts 1.1 Action
 
package org.apache.struts.webapp.example;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public final class ExampleAction extends Action  {
    public ActionForward execute (ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
            throws Exception  {
            ExampleService service = new ExampleService( );
            Service.doService( );
            return (mapping.findForward("success"));
    }
}
 
如你所见,基于Struts 1.1的Action, 例外处理不再需要在方法中执行。Struts 1.1 现在支持将例外处理作为框架的一部分。我们将在第9.1式练习这个招数。
你并不是一定要修改你的Actions 来使用execute( )方法,因为Struts 1.1 仍旧支持perform( )方法;但是该方法已经不赞成使用了。
]

如果你直接从
Struts 1.0
迁移至
Struts 1.2, Struts 1.1
中的不赞成因素,比如
perform( )
方法,已经从
Struts 1.2 API
中删除了。

 
虽然这个方法将继续发挥作用,但是我们还是建议你尽可能的将你的代码修改来使用execute( )方法。这样可以减少进一步升级到Struts 1.2的难度和工作。更明显的是,这可以使你得到Struts 1.1 的例外处理能力的优势。
参见
第9.1 式Struts 1.1的例外处理。
 
原文链接:

转载于:https://my.oschina.net/moroseyu/blog/51453

你可能感兴趣的文章
传值引用和调用引用的区别
查看>>
hyper-v 无线网连接
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
Windows下memcached的安装配置
查看>>
ubuntu: firefox+flashplay
查看>>
web.xml 中CharacterEncodingFilter类的学习
查看>>
贪吃蛇逻辑代码
查看>>
ASP.NET视频教程 手把手教你做企业论坛网站 视频教程
查看>>
[LeetCode] Meeting Rooms II
查看>>
从Swift学习iOS开发的路线指引
查看>>
Scribes:小型文本编辑器,支持远程编辑
查看>>
ssh 安装笔记
查看>>
3-继承
查看>>
海归千千万 为何再无钱学森
查看>>
vue2.0 仿手机新闻站(六)详情页制作
查看>>
JSP----九大内置对象
查看>>
Java中HashMap详解
查看>>
delphi基本语法
查看>>
260. Single Number III
查看>>
Hadoop生态圈-Kafka的完全分布式部署
查看>>