`
sslaowan
  • 浏览: 379644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC(CoC)+FCKEditor

阅读更多

      设计思路参考昨天写的《关于RCP与Web交互的一些设计思路 》,使用了Spring MVC,特别使用了Spring对于CoC(Convention over Configuration,惯例优先原则)的支持,由于需要富文本编辑器,因此我选择了著名的FCKEditor。由于我不需要支持上传功能,因此没有用FCKEditor的Java包。

      虽然我使用的是Spring3,但是我没有使用其对REST的支持,也没有使用注解。

      所需要的其他Jar包包括:

      1 antlr-2.7.5H3

      2 antlr.jar

      3 bsh-1.3.0.jsr

      4 cglib-nodep-2.1_3.jar

      5 com.springsource.org.antlr-3.0.0.M2.jar

      6 asm-2.2.2.jar

      7 asm-commons-2.2.2.jar

      需要用这些包替换项目中已经有的其他antlr,cglib,asm包,否则就会报相应的错误。

      FCKEditor是2.6版。

     我的文件结构如下:

RestOnSpring

    -src

        -org.jport.samples.web.mvc

               -RichEditorController.java

   -WebRoot

       |-fckeditor

           +editor

            |-fckconfig.js

            |-fckeditor.js

            |-fckpackager.xml

            |-fckstyles.xml

            |-fcktemplates.xml

       |-WEB-INF

            |-jsp

                |-richeditor

                    |-create.jsp

                    |-display.jsp

            |-applicationContext.xml

            |-richeditor-servlet.xml

            |-web.xml

   在上篇文章里,我设计好了如下的URI:

   显示新增页面 richeditor/create

   保存  richeditor/save。对于是新增还是修改,需要借助Form中的一个隐藏域,<input type='hidden' id='id'  value='<%=id%>'/>,将id置于表述之中而不是URI中,传给Web服务器,这样做是因为表述包含了我要传递的数 据,将相当于RPC(远程过程调用)中的数据对象,然后借用Hibernate中saveOrUpdate的思想,如果该id==null则意味着新增, 否则意味着修改。

   显示阅读页面 richeditor/diplay?id=123

   显示修改页面 richeditor/edit?id=123

 

        RichEditorController.java如下

package org.jport.samples.web.mvc;

import java.lang.annotation.Annotation;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

/**
 * The central richeditor
 * {@link org.springframework.web.servlet.mvc.Controller} implementation for the
 * application.
 * 
 * @author sslaowan
 */
   
public class RichEditorController extends MultiActionController{

	public ModelAndView create(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		return new ModelAndView();
	}

	public ModelAndView edit(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		String id = (String) request.getParameter("id");
		//通过调用业务服务,根据id返回要修改的内容
		String text=(String) request.getParameter("value");
		 
		ModelAndView mv = new ModelAndView("forward:/richeditor/create.htm");
		mv.addObject("id", id);
	    mv.addObject("value", text);
		return  mv;
	}
	
	public ModelAndView display(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
 
		String id=(String) request.getParameter("id");
		//通过调用业务服务,根据id返回要修改的内容
		String text=id;
		request.setAttribute("value", text);
		return new ModelAndView();
	}

	public ModelAndView save(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		String text = request.getParameter("FCKeditor1");
		String id=request.getParameter("id");
		if("".equals(id)){
			System.out.println("save:"+text);
		}else{
			System.out.println("update:"+text);
		}
		
	 	ModelAndView mv = new ModelAndView("forward:/richeditor/display.htm?id="+text);
	        mv.addObject("value", text);
		return mv;
	}

 

}

 

       richeditor-servlet.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

	<!-- maps request URLs to Controller names -->
	<bean
		class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

	<!-- Controller names are not important when using the above HandlerMapping implementation-->
	<bean class="org.jport.samples.web.mvc.RichEditorController" />

	<!-- this bean with the well known name generates view names for us -->
	<!-- not strictly required since we just want to accept the defaults-->
	<bean id="viewNameTranslator"
		class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator" />

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>


</beans>

        create.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%String value=(String)request.getAttribute("value")==null?"":(String)request.getAttribute("value"); %>
<%String id=(String)request.getAttribute("id")==null?"":(String)request.getAttribute("id"); %>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>FCKeditor - Sample</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	 	 
	<script type="text/javascript" src="../fckeditor/fckeditor.js"></script>
</head>
<body>
	 
	<form action="/RestOnSpring/richeditor/save.htm" method="post">
	   <input type="hidden" name='id' value='<%=id%>'/>

      	<script type="text/javascript">
<!--
 
var sBasePath = '/RestOnSpring/fckeditor/' ;

var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.BasePath	= sBasePath ;
oFCKeditor.Height	= 300 ;
oFCKeditor.Value	= '<%=value%>' ;
oFCKeditor.Create() ;
//-->
		</script>
		<br />
		 
	</form>
</body>
</html>

    display.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%String value=(String)request.getAttribute("value")==null?"":(String)request.getAttribute("value"); %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
   <div>
   <form action="/RestOnSpring/richeditor/edit.htm?id=<%=value%>" method="post">           
		 	<input type="submit" value="编辑" /> 
		 </form>
	</div>
	<hr />
    <%=value%>
  </body>
</html>

 

   为了单纯的测试Web层,我通过在页面间传递文本内容(通过mv.addObject("value",text);这句话与request.setAttribute("value",text);等价)来模拟保存的数据,用String text=id或者是打印语句的方式来模拟业务。

分享到:
评论

相关推荐

    jsp+struts+hibernate+spring+FckEditor+freemarker+css+mysql的在线博客系统(源码完整直接运行,高仿真数据库记录)

    总结来说,这个在线博客系统是一个集成了多种主流技术的实战项目,适合初学者了解和学习Web开发的全貌,尤其是Java领域的MVC架构、ORM、AOP等概念。通过这个项目,开发者可以深入理解这些技术如何协同工作,从而提升...

    FCKeditor_2.6.6.zip+fckeditor-java-2.4.1.rar

    FCKeditor_2.6.6.zip+fckeditor-java-2.4.1.rar+fckeditor-java-2.4.1-bin.zip+fckeditor-java-2.4-src.zip+fckeditor-java-demo-2.4.war.zip 分享几个包,让你学习有成。加油

    extjs + fckeditor 的结合源码

    extjs + fckeditor 的结合源码 这个demo讲的是extjs + fckeditor 的结合 这个demo网上有 但是是java版的 今天我把它转换成asp.net版 测试环境vs2008+xp+extjs2.2+fckeditor 2.x 大家运行Default.aspx就可以看到...

    FCKeditor_2.6.4+fckeditor-java-2.4.1_BMW修改版

    由官网FCKeditor_2.6.4+fckeditor-java-2.4.1修改。 修改内容有: 1、上传的文件名为中文会变成乱码 2、新建中文目录变乱码(这个好似还有点小问题,不过不影响使用,还是不建议用中文目录) 3、对上传的文件使用...

    FCKeditor_2.6.3+FCKeditor-2.3.rar

    FCKeditor是一款经典的开源富文本编辑器,广泛应用于网站建设和内容管理系统中,为用户提供类似Microsoft Word的界面,方便用户在网页上编辑文本内容。FCKeditor_2.6.3+FCKeditor-2.3.rar这个压缩包包含了FCKeditor...

    extjs + fckeditor 的结合asp.net版

    本人agd第一次发demo比较粗糙...这个demo讲的是extjs + fckeditor 的结合 这个demo网上有 但是是java版的 今天我把它转换成asp.net版 测试环境vs2008+xp+extjs2.2+fckeditor 2.x 大家运行Default.aspx就可以看到效果了

    fckeditor2.6.4+fckeditor-java-2.4.1配置及中文乱码解决

    包括fckeditor2.6.4+fckeditor-java-2.4.1配置所需资源包及fckeditor-java-2.4.1源码和配置说明文档。 配置中解决了中文乱码,并为上传文件自动创建日期文件夹。

    FCKeditor.java-2.3.2 + FCKeditor_2.5.1 内附中文API

    FCKeditor.java-2.3.2 + FCKeditor_2.5.1 + 中文API 黄金搭档! 最近做项目需要jsp里使用编辑器,在网上搜资料 几乎前篇一律, 版本太多,一晚上没睡 调试通了!有兴趣的可以研究下!

    struts2+fckeditor关于信息发布的实例

    总之,这个"struts2+fckeditor关于信息发布的实例"提供了一个学习如何将Struts2的MVC架构与FCKeditor的富文本编辑功能相结合的好机会。通过实践这个实例,开发者可以更好地理解两者在Web应用中的实际应用,以及如何...

    struts2+FCKeditor-2.3

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

    freemarker+fckeditor+struts+hibernate

    "freemarker+fckeditor+struts+hibernate" 这个标题揭示了一个基于Java的Web开发项目,它整合了四个关键的技术组件:FreeMarker模板引擎,FCKeditor富文本编辑器,Struts MVC框架,以及Hibernate持久化框架。...

    Smarty+FCKeditor新闻系统实例

    在这个实例中,Smarty负责处理视图层,提供清晰的MVC(模型-视图-控制器)架构,而FCKeditor则作为用户友好的内容编辑工具,允许管理员方便地创建、编辑和格式化新闻内容。 Smarty是一个流行的PHP模板引擎,它的...

    struts2+fckeditor

    Struts2是一个非常流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。FCKeditor则是一款强大的在线文本编辑器,它允许用户在网页上进行富文本编辑,包括插入图片、链接等操作。在Struts2框架中...

    [新闻文章]Smarty+FCKeditor新闻系统实例_smartynew.zip

    Smarty 和 FCKeditor 是两个在 Web 开发中常用的工具,它们在构建新闻系统时发挥着重要作用。Smarty 是一个流行的PHP模板引擎,而FCKeditor则是一个功能强大的在线文本编辑器。接下来,我们将深入探讨这两个技术及其...

    FCKeditor_2.6.6+FCKeditor.Net_2.6.4

    FCKeditor是一款经典的开源富文本编辑器,广泛应用于Web开发中,为用户提供类似于Microsoft Word的界面,以便在网页上编辑内容。FCKeditor_2.6.6是该编辑器的一个版本,它提供了丰富的功能,如字体样式设置、图片...

    FCKeditor_2.6.3.zip+FCKeditor-2.3.zip

    FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合...

    FCKeditor.Net_2.6.3.zip+FCKeditor_v2.6.8

    FCKeditor是一款强大的开源网页文本编辑器,专为Web开发者设计,用于在网站上提供类似桌面文字处理软件的用户体验。这个资源包含两个版本——FCKeditor.Net_2.6.3.zip和FCKeditor_v2.6.8,都是FCKeditor的.NET实现,...

    jsp+Fckeditor实现在线编辑器

    **标题解析:**"jsp+Fckeditor实现在线编辑器"表明这个项目是利用JavaServer Pages (JSP) 技术和FCKeditor来构建一个在线文本编辑器。JSP是一种动态网页开发技术,常用于服务器端编程,而FCKeditor则是一个开源的、...

Global site tag (gtag.js) - Google Analytics