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

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

修正思路:不让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>



openfire安装---及时聊天 openfire安装---及时聊天 、、、、 立即下载

相关推荐

openfire 聊天实现

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

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

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

weixin_33355665的博客 572

手把手教你用TJA1145A实现CAN节点智能唤醒(含数据帧过滤技巧)

本文详细介绍了如何使用TJA1145A收发器实现CAN节点的智能唤醒功能,包括数据帧过滤技巧和超低功耗设计。通过硬件级帧过滤和双条件唤醒机制,TJA1145A在保持微安级休眠电流的同时,能对特定报文做出毫秒级响应,显著提升电池供电设备的续航能力。

weixin_28721917的博客 249

SpringMVC 程序开发

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

chenbaifan的博客 1万+

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7571

光通信仿真入门:手把手教你用VPI和Matlab搭建第一个联合仿真系统(含避坑指南)

本文详细介绍了如何使用VPI和Matlab搭建光通信联合仿真系统,涵盖软件配置、链路搭建、数据交互等关键环节,并提供常见问题的解决方案。特别适合初学者快速掌握光通信仿真技术,避免常见错误,提升仿真效率。

weixin_28733637的博客 378

openfire如何整合spring mvc

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

weixin_34293902的博客 301

主流双目相机技术参数横向评测:从ZED到国产新锐

本文对主流双目相机技术参数进行了横向评测,涵盖ZED、Bumblebee等国际品牌及国产新锐产品。详细分析了分辨率、帧率、视场角等关键参数,并针对机器人导航、AR/VR交互、工业检测等场景提供选型建议。特别推荐ZED相机在科研领域的成熟应用,以及国产方案在长基线设计和主动双目技术上的创新突破。

weixin_33670786的博客 318

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

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

d55q_p55b的博客 1517

Linux DRM驱动实战:手把手教你用drmModeSetCrtc显示纯色画面(附完整代码)

本文提供了一份完整的Linux DRM驱动实战指南,手把手教你使用drmModeSetCrtc在屏幕上显示纯色画面。文章详细解析了从打开设备、获取资源、创建帧缓冲区到最终提交画面的完整调用流程,并附带了可直接编译运行的完整代码示例,帮助开发者快速上手Linux图形底层开发。

weixin_29216353的博客 512

冒泡排序的并行计算

本人也是并行计算的小白,在这里记录下自己的学习笔记。 今天做了一下冒泡排序的并行计算比较: 串行冒泡排序如下: #include <stdio.h> #include <stdlib.h> #include <windows.h> void BubbleSort(int * pData, int nSize) { if (!pData) { ...

gaoyi的专栏 4490

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

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems

该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。

CSPhD-winston的博客 493

SpringBoot 插件化开发模式

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

tangjieqing的博客 1488

PowerShell 升级到 v7 并设置为默认版本(详细操作指南)

本文详细介绍了如何将PowerShell升级到v7并设为默认版本。PowerShell 7基于.NET Core构建,具有跨平台支持、性能优化和新语法特性等优势。文章提供了多种安装方法(MSI安装包、包管理器)和设置默认版本的方案(修改PATH、创建符号链接、配置编辑器等),同时涵盖企业批量部署解决方案和常见问题处理。通过升级到PowerShell 7,用户可以获得更强大的命令行体验,适用于开发、运维和自动化场景。

huluang的专栏 4291

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Openfire集成实现方式

Openfire集成实现方式

yunzhonghefei的博客 2541

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

rongwenbin的专栏 3137

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

水花的博客 4407

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

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

springboot插件式开发框架

springboot插件式开发框架 介绍 该框架主要是集成于springboot项目,用于开发插件式应用的集成框架。 核心功能 配置式插拔于springboot项目。 在springboot上可以插件式开发, 扩展性极强, 可以针对不同项目开发不同插件, 进行不同部署。 在插件应用模块上可以任意使用spring注解式进行依赖注入、可以开发controller接口、也可以遵循主程序提供的插件接口开...

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值