`
毛冬
  • 浏览: 78383 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Fck 與 Struts2 更好的融合

    博客分类:
  • JAVA
阅读更多

   用struts2寫完了後臺,但是突然說要加一個文本編輯器,想當然就用FCK了。
    經過上網搜索N邊文章后,再經過N+1此失敗后,終於成功配上FCK。
    界面,功能的都沒有問題,但最重要的一項,卻因為STRUST2的原因而出了問題,
   顯示器前的讀者可能已經知道是XX問題,
    沒錯,就是圖片上傳問題。
    
    於是乎繼續上網搜索。。。。。。。。。。。。。。。。。。。。。
    幾萬個結果都是修改web.XML
 

 <filter>
      <filter-name>struts2</filter-name>
      <filter-class>com.mcar.util.MyStrutsFilterDispatcher</filter-class>
 </filter>
  <!-- FilterDispatcher 用来初始化 strtus2 并且处理所有的 web 请求 -->
  <filter-mapping>      
      <filter-name>struts2</filter-name>      
      <url-pattern>/*</url-pattern>      
  </filter-mapping>

     
   
  修改成====》
  

    <filter-mapping>      
        <filter-name>struts2</filter-name>      
        <url-pattern>*.action</url-pattern>      
    </filter-mapping>
    <filter-mapping>      
        <filter-name>struts2</filter-name>      
        <url-pattern>*.jsp</url-pattern>      
    </filter-mapping>

     
   
   這個方法當然是沒有問題,完全能實現FCK圖片上傳。
   但問題就在於我的後臺已經寫完,我的所有路徑連接不是不帶後綴的。
  如果用上述方法修改,那麼我的連接: admin/login 就要變成 admin/login.action
   後臺都不知有多少個這要的連接,一個個改,那要改到什麽時候,並且我也不想一個個文件去修改。
   所以我就想有沒有其他方法可用,繼續上網搜索。。
   可惜結果千篇一律。
   
    好,靠人不如靠自己。閉目冥想。。。。。。。一不小心就差點睡著了
   好,廢話不多說。
   不知各位是否留意到我上面的XML
    

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>com.mcar.util.MyStrutsFilterDispatcher</filter-class>
</filter>

     
    filter-class 已經改變指向,變成了我自己修改的Class.
   
    下面再來看一下這個class
  

  public class MyStrutsFilterDispatcher extends FilterDispatcher {
 /**
   *struts2的攔截器與fck 上傳文件時衝突
    *重寫struts2的攔截器,增加了判斷,如果是fck的編輯器上傳文件,不進行攔截。
    *  判斷路徑是否有fckeditor 實現在fckeditor下的操作不進行攔截
    */
 @Override
 public void doFilter(ServletRequest req, ServletResponse res,
   FilterChain chain) throws IOException, ServletException {
      String url = ((HttpServletRequest)req).getRequestURI(); 
      if (url.indexOf("fckeditor") < 0) {
             super.doFilter(req, res, chain); 
       } else {
             chain.doFilter(req, res);
       }  
    }

}

      
   重寫了strut2 的攔截器。
     因為FCK所有的文件,我們都是放在fckeditor目錄下。
    所以所有fckeditor的操作都不會受影響


     以上就是本人對於Fck 與 struts2 衝突的看法。
     也是基於自身項目需求出發的,如果各位兄弟姐妹有什麽意見的話。
     歡迎指正。但是請不要惡意攻擊。
   

1
0
分享到:
评论
4 楼 毛冬 2010-09-26  
liu_moyan 写道
太感谢你了 楼主
你这个方法真好。。。解决了我调了好久的问题。。。


不用客气。大家互相学习。
3 楼 liu_moyan 2010-09-16  
太感谢你了 楼主
你这个方法真好。。。解决了我调了好久的问题。。。
2 楼 flyliying 2009-06-17  
这个是他原来的拦截器
1 楼 flyliying 2009-06-17  
/*
 * $Id: DefaultActionSupport.java 651946 2008-04-27 13:41:38Z apetrelli $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.struts2.dispatcher.ng.filter;

import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.Dispatcher;
import org.apache.struts2.dispatcher.ng.PrepareOperations;
import org.apache.struts2.dispatcher.ng.ExecuteOperations;
import org.apache.struts2.dispatcher.ng.InitOperations;
import org.apache.struts2.dispatcher.mapper.ActionMapping;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use
 * when you don't have another filter that needs access to action context information, such as Sitemesh.
 */
public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {
    private PrepareOperations prepare;
    private ExecuteOperations execute;

    public void init(FilterConfig filterConfig) throws ServletException {
        InitOperations init = new InitOperations();
        try {
            FilterHostConfig config = new FilterHostConfig(filterConfig);
            init.initLogging(config);
            Dispatcher dispatcher = init.initDispatcher(config);
            init.initStaticContentLoader(config, dispatcher);

            prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
            execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
        } finally {
            init.cleanup();
        }

    }

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        try {
            prepare.createActionContext(request, response);
            prepare.assignDispatcherToThread();
            prepare.setEncodingAndLocale(request, response);
            request = prepare.wrapRequest(request);
            ActionMapping mapping = prepare.findActionMapping(request, response);
            if (mapping == null) {
                boolean handled = execute.executeStaticResourceRequest(request, response);
                if (!handled) {
                    chain.doFilter(request, response);
                }
            } else {
                execute.executeAction(request, response, mapping);
            }
        } finally {
            prepare.cleanupRequest(request);
        }
    }

    public void destroy() {
        prepare.cleanupDispatcher();
    }
}

相关推荐

    fck例子,采用与STRUTS2兼容的FCK插件

    fck例子,采用与STRUTS2兼容的FCK插件,良好解决了STRUTS2与FCKEDITOR不兼容的问题。

    fck框架,eclipse和myeclipse导入即用

    **FCK框架详解** FCK(FCKeditor)是一个开源的Web富文本编辑器,它为用户提供了类似于Microsoft Word的在线编辑体验。FCKeditor的主要功能...通过研究这个示例,你可以更好地理解和应用FCKeditor与Struts2的集成。

    fck资源整合包

    这个资源整合包中的“fck2.6.6资源整合包”很可能是包含了针对FCKeditor 2.6.6版本的特定修复和配置,可能包括了修改后的jar文件、配置文件或特定的过滤器等,以确保Struts和Hibernate能与FCKeditor协同工作,避免...

    Fckeditor完美结合Struts2 教程

    至此,我们已经成功地将Fckeditor与Struts2整合,实现了富文本编辑和图片上传功能。开发者可以根据需求进一步扩展Action类,以支持更多的功能,如文件管理、链接插入等。在实际项目中,可能还需要考虑安全性问题,...

    一款好的.net fck

    标题中的“一款好的.net fck”指的是基于.NET平台的FCKeditor,这是一款非常流行的开源富文本编辑器。FCKeditor允许用户在网页上创建、编辑和格式化文本,类似于微软Word的功能,但它嵌入在网页中,常用于内容管理...

    spring, struts2, hibernate ,fck,json,mysql,sqlerser jar包

    在Java企业级应用开发中,"Spring, Struts2, Hibernate"这三大框架构成了SSH(Spring、Struts、Hibernate)组合,是许多开发者选择的主流技术栈。它们各自承担着不同的职责,共同构建了一个功能强大的后端解决方案。...

    fck文档+jar包

    FCK文档通常包含编辑器的使用指南、API参考、示例代码以及常见问题解答,帮助开发者更好地理解和集成这个编辑器。 而`jar`包,全称为Java Archive,是Java平台上的可执行文件格式,用于集合多个类文件、相关的资源...

    struts2+FCKeditor-2.3

    Struts2+FCKeditor-2.3 是一个集成解决方案,旨在为Java开发人员提供一个强大的文本编辑器,以便在Web应用程序中实现富文本输入。FCKeditor是一款开源的JavaScript组件,它允许用户在Web页面中编辑HTML内容,类似于...

    Struts2项目 jsp页面FCKeditor使用

    在Struts2项目中集成FCKeditor能够极大地提升用户体验,并使开发人员能够更方便地处理富文本数据。本文将详细介绍如何在Struts2项目的JSP页面中成功部署和使用FCKeditor。 #### 二、准备工作 1. **下载FCKeditor**...

    FCK使用

    这个项目可能包含了与FCKeditor相关的配置文件、HTML页面、JavaScript代码以及服务器端脚本,读者可以下载并运行这个项目,以便更好地理解和学习如何使用FCKeditor。 综合以上信息,这篇博客可能涵盖了以下知识点:...

    FCK代码高亮插件

    至于**工具**标签,表明FCK代码高亮插件是一个开发工具,可以帮助开发者和内容创作者在网站上更好地展示代码示例,提升用户体验。同时,它也可以作为教学辅助工具,帮助学生在在线课程中更容易地理解和学习编程。 ...

    FCK在线编辑器 !

    D:\FCK\bin\Debug\FredCK.FCKeditorV2.dll引用进来 [在工具箱中添加FCKeditor的控件] 我们添加一个选项卡,取名为FCK,在其下 “选择项”,浏览到当前项目里的 D:\FckDemo\bin\FredCK.FCKeditorV2.dll,点确定。...

    网页FCK编辑控件示例

    **网页FCK编辑控件示例** 网页FCK编辑控件是一种流行的开源富文本编辑器,主要用于在网页上实现类似Word的文本编辑功能。这款编辑器由FCKeditor团队开发,允许用户在浏览器环境中创建、编辑和格式化HTML内容。在...

    FCK文本编辑器

    FCK文本编辑器可以与.NET 2.2框架无缝集成,使得ASP.NET开发者能够轻松在网页中实现富文本编辑功能。集成过程通常包括以下几个步骤: 1. **下载与解压**:从官方或第三方网站下载FCKeditor的压缩包,解压后得到编辑...

    FCK编辑器漏洞综合利用工具

    FCK编辑器漏洞综合利用工具

    在线编辑器 例子 fck fck

    在线编辑器是网页开发中的一种常见工具,它允许用户在浏览器环境下进行文本编辑,并能实时预览和格式化内容,极大地提升了网站内容创作...通过深入研究和使用提供的文件,开发者可以更好地掌握在线编辑器的开发和应用。

    FCK中文配置指南

    2. **EditorAreaCSS**:定义编辑区域的CSS样式表文件,一般指向`fck_editorarea.css`。 3. **EditorAreaStyles**:编辑区的额外样式,可以为空或指定CSS样式。 4. **ToolbarComboPreviewCSS**:工具栏预览的CSS,...

    fck2.4编辑器,Java版本

    ”表明Fck2.4编辑器已经处理了与Struts2框架集成时可能出现的权限问题。Struts2是一个强大的MVC框架,广泛用于Java Web开发。在整合FCKeditor时,可能会遇到权限设置不正确导致的图片无法上传的问题,例如,服务器的...

Global site tag (gtag.js) - Google Analytics