openfire 3.9.1 下使用spring mvc 4.0.3+velocity 1.7插件页面开发 --修正

修正思路:不让openfire的pluginServlet自动加载类springmvc的DispatcherServlet改成在插件初始化的时候手动将DispatcherServlet注册到PluginServlet中.

1.web-custom.xml不定义DispatcherServlet.

2.自定义一个CustomDispatcherServlet,继承DispatcherServlet,在其构造方法中指定springMvc的配置文件路径,并且修改 配置文件中velocityConfigurer节点下的resourceLoaderPath值.

import java.io.File;

import org.springframework.web.servlet.DispatcherServlet;

import com.aomaisoft.openfire.plugin.usionmrg.web.tools.XMLEditor;

/**
 * 自定义DispatcherServlet,指定context位置
 * 
 * @author 20005
 * @createDate 2014-7-14 上午11:10:59
 */
public class CustomDispatcherServlet extends DispatcherServlet {

	private static final long serialVersionUID = 5713165491251313468L;

	public CustomDispatcherServlet() {
		super();
		String pluginDir = null;
		Character fileSep = File.separatorChar;
		String contextConfigLocation = pluginDir + fileSep + "java" + fileSep
				+ "PluginServlet-servlet.xml";
		// 更改模板目录
		XMLEditor.alterXML(pluginDir, contextConfigLocation);

		contextConfigLocation = "file:/" + contextConfigLocation;
		super.setContextConfigLocation(contextConfigLocation);
	}
}

附上XMLEditor代码 ,依赖dom4j.jar,可以到 http://www.java2s.com/去下载

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * xml节点修改
 * 
 * @author 20005
 * @createDate 2014-7-15 下午04:35:47
 */
public class XMLEditor {

	public static Document read(String fileName) {
		SAXReader reader = new SAXReader();
		Map<String, String> nsMap = new HashMap<String, String>();
		nsMap.put("beans", "http://www.springframework.org/schema/beans");
		reader.getDocumentFactory().setXPathNamespaceURIs(nsMap);
		reader.setEncoding("UTF-8");
		Document document = null;
		try {
			document = reader.read(new File(fileName));
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}

	public static void alterXML(String newValue, String url) {

		OutputFormat format = new OutputFormat("\t", true);
		format.setEncoding("UTF-8");
		Document document = read(url);
		Element node = ((Element) document
				.selectSingleNode("//beans:property[@name='resourceLoaderPath']"))
				.element("value");
<span style="white-space:pre">		</span>//此处路径要做相应的修改,为你的模板路径
		String string = "file:/%s\\web\\WEB-INF\\template";
		string = String.format(string, newValue);
		node.setText(string);
		try {
			// 重新写入到XML文档
			XMLWriter writer = new XMLWriter(new FileOutputStream(url), format);
			writer.write(document);
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

3.在插件初始化时手动注册到PluginServlet中

@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
	// 得到spring mvc配置文件路径,修改成你相应的路径,我是放在web-inf下的
	File webXML = new File(pluginDirectory.toString() + File.separatorChar
	+ "web" + File.separatorChar + "WEB-INF" + File.separatorChar
	+ "springMVC.xml");
	// 注册servlet
	PluginServlet.registerServlets(manager, this, webXML);
}

4.完成,测试.

spring配置文件部分代码

<!-- 视图解析 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
		<!-- 在src目录下新建文件夹template用来存在velocity模板文件 -->
		<property name="prefix" value="/" />
		<property name="suffix" value=".html" />
		<property name="contentType" value="text/html;charset=utf-8"></property>
	</bean>
	<bean id="velocityConfigurer"
		class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
		<property name="resourceLoaderPath">
			<value><!-- 先不填,在程序中指定 -->
			</value>
		</property>
		<property name="velocityProperties">
			<props>
				<prop key="input.encoding">
					UTF-8
				</prop>
				<prop key="output.encoding">
					UTF-8
				</prop>
			</props>
		</property>
	</bean>



springMVC,spring,mybatis所有插件 mybatis的插件,亲测有效,把它解压拷贝到myeclipse的dropins路径下,重启软件,newflie-other查看插件就有了 立即下载

相关推荐

openfire 聊天实现

仿微信聊天的demo,通过openfire搭建的服务器进行连接,此后我会将openfire的搭建教程也上传,请稍后

插件的内部实现_Openfire插件化开发-指导手册

所有的计算都表明它不工作,唯一的做法是:使其工作。 --Pierre-Georges Latécoère 早期法国航空企业家1综述1.1 前言 Openfire是免费的、开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的IM服务器,Openfire的组件分为内部基础组件和...

weixin_33355665的博客 572

openfire安装---及时聊天

openfire安装---及时聊天 、、、、

SpringMVC 程序开发

https翻译成中文SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“SpringMVC”.ModelViewController(模型,视图,控制器),他是一种设计模式,这种设计模式将软件(项目)分为三部分模型,视图,控制器Model(模型)View(视图)Controller(控制器)...

chenbaifan的博客 1万+

MatLab:数字图像处理实验

图像处理基本处理实验目的实验环境实验内容题目一代码结果题目二平移平移代码平移结果水平镜像水平镜像代码水平镜像结果垂直镜像垂直镜像代码垂直镜像结果放大放大代码放大结果缩小缩小代码缩小结果旋转旋转代码旋转结果双线性旋转旋转代码旋转结果 实验目的 1、熟悉并掌握MATLAB工具的使用;  2、实现图像的读取、显示、存储、平移、镜像、放大、缩小及旋转操作; 3、掌握常用的插值方法,并了解其优缺点。 实验环境 MatLab2016 实验内容 题目一 读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分别显

luoyao_的博客 9694

为R720安装iDRAC Service Module

这玩意找了好久资料, 教程都不咋靠谱, 要不就是有不理解的地方 所以直接一路莽着过河: 去官网找到设备对应的驱动程序: 几个查找筛选项看图 官网链接: https://www.dell.com/support/home/zh-cn/product-support/product/poweredge-r720/drivers 在下方的列表中找到对应系统版本的驱动并下载: 由于安装的系统为ESXi 6.5 U2 Dell定制版, 这里没有刚好的驱动, 所以下了个兼容的: 下载好后是一个压缩包:

Janus 6361

openfire如何整合spring mvc

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34293902的博客 301

高杂合度基因组组装实战:Hifiasm参数调优与purge_dups过滤效果对比(附猪毛菜案例)

本文深入探讨了高杂合度基因组组装中Hifiasm参数调优与purge_dups过滤的实战效果对比,通过猪毛菜案例详细解析了两种方法的适用场景与优化策略。文章重点分析了purge_dups在contig过滤中的显著效果,为基因组组装提供了关键的技术参考。

weixin_29232121的博客 495

SpringBoot 插件化开发模式

实现服务模块之间解耦的方式有很多,但是插件来说,其解耦的程度似乎更高,而且更灵活,可定制化、个性化更好。举例来说,代码中可以使用设计模式来选择使用哪种方式发送短信给下单完成的客户,问题是各个短信服务商并不一定能保证在任何情况下都能发送成功,怎么办呢?这时候设计模式也没法帮你解决这个问题,如果使用定制化插件的方式,结合外部配置参数,假设系统中某种短信发送不出去了,这时候就可以利用插件动态植入,切换为不同的厂商发短信了。

tangjieqing的博客 1488

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3502

YOLOv8改进:基于EfficientNetV2均衡缩放网络的特征提取层优化【YOLOv8】

YOLO(You Only Look Once)系列模型以其高效的实时目标检测能力而闻名。YOLOv8作为该系列的最新版本,通过引入改进的网络结构和算法优化,进一步提升了目标检测的性能。然而,YOLOv8在特征提取阶段的网络结构仍有改进的空间。EfficientNetV2是一种基于均衡缩放的卷积神经网络,它通过优化网络的宽度、深度和分辨率来实现高效的特征提取。与之前的EfficientNet版本相比,EfficientNetV2在速度和精度上都有显著提升,尤其在处理复杂目标检测任务时表现尤为突出。

博客 1582

springmvc最详细的开发流程(上)

在main方法中实现接口中的方法onStartup(),可知,在服务启动时,会自动调用该接口中的方法。我们从的配置类继承的接口进入,一直往父类中ctrl+鼠标右键进入,最终发现了onstartup这个方法。webApplicationInitializer接口的作用是做初始化工作,去替代web.xml。到达顶层接口WebApplicationInitializer可见源码中的注解提示,可用xml配置文件当时或者代码配置。

d55q_p55b的博客 1517

AI学习指南RAG篇(19)-API调用与集成

通过上述API调用示例,您可以方便地将RAGFlow与其他系统集成,实现数据集管理、文档处理、会话管理等功能。希望本文的介绍能帮助您更好地理解和使用RAGFlow的API。

俞兆鹏的博客 2545

openfire 3.9.1 下使用spring mvc 4.0.3+velocity 1.7插件页面开发

按本方法在部署时会现在问题.修正后的链接为:http://blog.csdn.net/eggtk/article/details/38079183 要求: 开发openfire插件,插件使用spring mvc+velocity显示页面. 1.首先导入依赖包:,我是使用maven下载好依赖包后得到的插件的lib目录下的. 2.建立spring mvc配置文件PluginServlet-se...

193

学习STM32的CAN总线通信

在配置时,确保您启用了CAN总线功能。CAN节点是CAN总线上的一个设备,每个节点都有唯一的标识符。在CAN总线中,有两种类型的节点:CAN控制器和CAN外设。步骤2:配置CAN总线 在STM32CubeMX中,选择CAN总线模块并进行必要的配置。在CAN总线中,有两个重要的概念:CAN节点和CAN帧。步骤5:测试CAN总线通信 在成功编译和烧录代码后,您可以使用串口调试助手或其他CAN总线工具来测试CAN总线通信。步骤3:编写CAN总线通信代码 在项目的主代码文件中,我们将编写CAN总线通信的示例代码。

2401_85258012的博客 496

Open3D 点云重叠区域检测【2025最新版】

本文介绍了一种基于八叉树和KD树的点云重叠区域检测方法。算法提供两种检测模式:八叉树(快速)和KD树(精确),支持可视化显示和详细统计信息输出。实现功能包括边界扩展、索引去重、精度调节等,可通过max_depth参数控制八叉树细分程度,distance_threshold调整检测精度。代码使用Open3D库,能自动计算并显示各点云的重叠比例和点数统计,最终结果以不同颜色区分重叠与非重叠区域。该方案适用于三维点云数据处理中的重叠分析任务。

点云侠的博客 598

Openfire集成实现方式

Openfire集成实现方式

yunzhonghefei的博客 2541

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java Smack整合Openfire服务器实现IM即时通讯聊天功能

在文章开始,请你了解和熟悉openfire方面的相关知识,这样对你理解下面代码以及下面代码的用途有很好的了解。同时,你可能需要安装一个简单的CS聊天工具,来测试你的代码是否成功的在openfire服务器上建立会话链接,并成功的向在线用户发送聊天消息。 聊天软件Spark,用于测试聊天消息发送是否成功,下载地址:http://www.igniterealtime.org/downloads/dow

rongwenbin的专栏 3137

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Openfire 的安装和配置

1、 下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfire 下载地址: Exe:http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_7_1.exe ZIP: ...

weixin_34152820的博客 466

openfire配置

经过了近3天的时间终于搞定了openfire3.9.1源码的部署,因为最新的是3.9.1所以和其他的版本多多少少还是有些区别的! 1、下载源码 官网下载:http://www.igniterealtime.org/downloads/source.jsp,一般比较喜欢在官网上下! 或者可以到我的百度网盘上下,http://pan.baidu.com/s/1jG4wvci!

我的成长之路! 1943

Xmpp推送服务smack与springboot的结合使用(三)

介绍XMPP协议的推送实现采用的smack库,可以与不同的java框架整合使用,这次我使用的springboot框架实现。这篇文章主要写代码的实现,对XMPP不清楚的,可以看前几篇文章: java推送技术的选择(一) openfire服务的安装(二) 搭建springboot项目 pom.xml文件,加入jar包<?xml version="1.0" encoding="UTF-8"

水花的博客 4407

Web-fragment 插件化可移植开发

Web-fragment高度模块化Java项目(集成SpringMVC) 概要     这篇文章是基于Servlet 3.0规范提供的web fragment特性做的模块化开发,Servlet主要有以下三方面特性:     参考http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/     其中可插入特性(web

zl的博客 5840

SpringMVC之国际化插件-yellowcong

Eclipse的国际化,必须要安装这两个插件(1、PropeEdit 2、JInto),这样的话做起来,就比较的简单了,那个JInto这个插件非常的好用,非常的推荐大家使用。

1129
上一篇: openfire 3.9.1 下使用spring mvc 4.0.3+velocity 1.7插件页面开发
下一篇: openfire 3.9.1 下使用spring mvc 4.0.3+velocity 1.7插件页面开发 --修正
eggtk
博客等级 码龄16年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值