文档章节

Jodd-madvoc 与 beetl集成

闲大赋
 闲大赋
发布于 2013/12/07 22:22
字数 692
阅读 426
收藏 2

Jodd-madvoc 是一个很不错的web mvc框架。但只使用了jsp作为视图技术,这显然拉了madvoc的后腿。本文将告诉你如何将beetl集成到jodd上。

第一步:配置web.xml:在基于madvoc的基础配置上,需要增加beetl的初始化工作


<filter>
        <filter-name>madvoc</filter-name>
        <filter-class>jodd.madvoc.MadvocServletFilter</filter-class>
         <init-param>
            <param-name>madvoc.webapp</param-name>
            <param-value> com.test.AppWebApplication</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>madvoc</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>



init-param 是自定义一个madvoc 的初始化类,我们将完成初始化beetl,以及注册一个ActionResult来处理视图渲染工作


第二步: 完成AppWebApplication类:

public class AppWebApplication extends WebApplication {
	protected void initResults(ResultsManager actionManager) {
		actionManager.register(new BeetlActionResult());
	}
	
	public void configure(MadvocConfigurator configurator) {
		AutomagicMadvocConfigurator auto = (AutomagicMadvocConfigurator)configurator;
		auto.setExcludedJars("**/beetl.1.25.03.jar");
		super.configure(configurator);
	}

}




重载了initResults 将注册一个BeetlActionResult,这是用来初始化Beetl,以及负责渲染具体视图,我们稍后会提到

重载了confgure ,auto.setExcludedJars 用于让jodd别扫描beetl类,因为jodd配置是基于扫描类来获取配置信息的。因为beetl也集成struts,spring等mvc框架,还是别让他扫描,以免出错


第三步,实现BeetlActionResult,  jodd提供机制允许注册视图渲染类,如json,二进制数据等,基类是ActionResult

package com.test;
import java.util.Enumeration;

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

import jodd.madvoc.ActionRequest;
import jodd.madvoc.result.ActionResult;

import org.bee.tl.core.GroupTemplate;
import org.bee.tl.core.Template;
import org.bee.tl.ext.WebConfig;
import org.bee.tl.ext.WebPathKit;
import org.bee.tl.ext.spring.SessionWrapper;
import org.bee.tl.ext.spring.WebVariable;

public class BeetlActionResult  extends ActionResult{
	
	public static final String NAME = "beetl";	
	GroupTemplate group = null;
	public BeetlActionResult() {
		super(NAME);

		try{
			
			WebConfig config = new WebConfig();
			config.updateRootPath(WebPathKit.getWebRootPath()); //更新模版路径
			group = config.createGroupTemplate();
			group.setCharset("UTF-8");
		
		}catch(Exception ex){
			throw new RuntimeException(ex.getMessage());
		}
	}	


	@Override
	public void render(ActionRequest actionRequest, Object resultObject, String resultValue, String resultPath) throws Exception {
			
		HttpServletRequest request = actionRequest.getHttpServletRequest();
		HttpServletResponse response = actionRequest.getHttpServletResponse();
		response.setContentType("text/html;charset=UTF-8");
		String target = resultPath;
		
		
		Template t = group.getFileTemplate(resultPath);
		Enumeration en = request.getAttributeNames();
		while (en.hasMoreElements())
		{
			String key = (String) en.nextElement();
			t.set(key, request.getAttribute(key));
		}

		WebVariable webVariable = new WebVariable();
		webVariable.setRequest(request);
		webVariable.setResponse(response);
		webVariable.setSession(request.getSession());

		t.set("servlet", webVariable);
		t.set("request", request);
		t.set("ctxPath", request.getContextPath());
		t.setRawValue("session", new SessionWrapper(request.getSession()));
		t.getText(response.getWriter());

		
	}

}




第四步,测试一下:

写一个Controller:

package com.test;
import jodd.madvoc.meta.Action;
import jodd.madvoc.meta.In;
import jodd.madvoc.meta.MadvocAction;
import jodd.madvoc.meta.Out;

@MadvocAction
public class IndexAction {

     @In
     String name;

     @Out
     String value;

     @Action("/index.html")
     public String world() {
        
         value = "Hello World!";
         return "beetl:ok.html";
     }
}



按照Jodd定义,如果访问/index.hmtl,系统将自行world方法,其返回一个字符串以beetl开头,我们曾经注册个这个类,就是上面的BeetlActionResult。ok.html将根据Jodd定义,其视图是/index.ok.html,由于Beetl的GroupTemplate没有配置模板根目录,因此默认是Web-inf/template作为根目录,其目录下有一个index.ok.html文件(当然,你可以根据jodd配置如何映射到视图文件),内容非常简单,如下

hello,中国 ${value}



我已经将相关代码和工程放到git上,如果需要,可以访问 https://github.com/javamonkey/jodd-madvoc-beetl.git
有任何疑问,可以通过beetl qq群提问



© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1160
博文 94
码字总数 87660
作品 10
西城
架构师
私信 提问
加载中

评论(6)

翔宇0720
支持
lnyu
lnyu
有空试试吧
ddr
ddr
ding
longrmlife
longrmlife
"后退"写错了60
诺恒_原上一棵草
诺恒_原上一棵草
你们两只大牛玩了,就会火了
zqq90
zqq90
13Beetl 终于也支持 Jodd了,Jodd 要火了
Jodd 3.2.6 发布,Java工具包

Jodd 3.2.6 发布,Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。 具体更新列表如下: VTor constraint added. Petite: added suppo...

老枪
2011/04/05
748
1
jodd mvc框架 madvoc 教程(1):Actions 概述

jodd的madvoc是一个使用Coc和注解(annotations)的实用的mvc框架,主要用来简化web应用开发。它有着 使用简单,学习曲线小,容易扩展等特点,同时不用实用额外的xml配置,actions是一些简单...

理工男海哥
2013/12/25
0
1
Jodd 3.6 发布,Java 常用工具包

Jodd = tools + ioc + mvc + db + aop + tx + html + json [2014-09-05] 更新日志 [新增] Json 序列化反序列化模块 [更改] Lagarto 依据规范解析 HTML. [更改] Props 每次取值时解析宏. [更改...

zqq90
2014/09/06
3.1K
10
Jodd 3.3.4 发布,常用 Java 工具包

Jodd 3.3.4 发布,这是一个维护版本,大部分是 bug 修复,也有稍许改动: RemoveSessionFromUrlFilter and JDateTime.isInDayLightTime() were added. HtmlStapler servlet now returns cont......

oschina
2012/06/13
657
0
Jodd 3.5 发布,Java 常用工具包

Jodd = tools + ioc + mvc + db + aop + tx + html < 1.3M 经过两个月的努力,辛酸和喜悦,新版本的Jodd闪亮登场!!这和那些无私的贡献者是分不开的,Jodd因此而更变的更好。希望你能喜欢这...

zqq90
2014/02/22
2.6K
11

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
3
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部