文档章节

Jodd-madvoc 与 beetl集成

闲大赋
 闲大赋
发布于 2013/12/07 22:22
字数 692
阅读 413
收藏 2
点赞 0
评论 6

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群提问



© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1100
博文 86
码字总数 81146
作品 10
西城
架构师
加载中

评论(6)

翔宇0720
支持
lnyu
lnyu
有空试试吧
ddr
ddr
ding
longrmlife
longrmlife
"后退"写错了60
诺恒_原上一棵草
诺恒_原上一棵草
你们两只大牛玩了,就会火了
zqq90
zqq90
13Beetl 终于也支持 Jodd了,Jodd 要火了
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 ⋅ 0

Jodd 3.2.6 发布,Java工具包

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

老枪 ⋅ 2011/04/05 ⋅ 1

jodd mvc框架 madvoc 教程(1):Actions 概述

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

michaely ⋅ 2013/12/25 ⋅ 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 ⋅ 10

Jodd 3.5 发布,Java 常用工具包

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

zqq90 ⋅ 2014/02/22 ⋅ 11

Jodd MVC 例子

1.jar包 activation-1.1.jar jodd-3.4.3.jar jodd-joy-3.4.3.jar logback-classic-1.0.0.jar logback-core-1.0.0.jar mysql-connector-java-5.1.12-bin.jar simplecaptcha-1.1.1.jar slf4j-......

快慢机 ⋅ 2013/06/03 ⋅ 1

Jodd怎么样和HTTL模版引擎一起用?

刚了解Jodd,看了jodd和madvoc官方文档之后没有找到一个能和第三方模版引擎对接的地方,不知道jodd怎么和HTTL对接? @webit

乐不可支 ⋅ 2013/12/11 ⋅ 2

Jodd 3.6.7 发行说明,Java 常用工具包

Jodd 3.6.7 是个非常与众不同的版本,虽然主要是 bug 修复,但是 Java 升级到了 Java 7。 新特性: [vtor] Added message to validation annotation. [util] Added method to parse internet...

oschina ⋅ 2015/11/19 ⋅ 10

Jodd 3.6.1 发布,Java 常用工具包

Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb [2014-10-01] 3.6.1 更新日志 [修复...

zqq90 ⋅ 2014/10/02 ⋅ 10

Webit Script 1.4.1 发布,支持 Jodd3.5

Webit Script 是一个简单灵活自由开放的开源的模板引擎,基于Java开发,支持Java5 及以上版本,采用BSD开源协议。 Webit Script 1.4.1更新记录: 【新增】方法, 用于判断资源是否存在 【调整...

zqq90 ⋅ 2014/02/27 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

在java中读取文件(也支持读取jar中的文件)

getClass().getResourceAsStream("文件名.格式"); 这个方法是用于获取当前类所在目录下的文件;需要将文件放到和当前类同一个包下面 比如我有个类在 com.test这个包下, 要读取一个test.jpg的图...

太黑_thj ⋅ 44分钟前 ⋅ 0

CentOS 7 源码编译安装 MySQL 5.7记录

没事瞎折腾,本来可以yum安装,却偏偏去要编译源码。 1. 安装依赖包 1). 安装cmake等依赖 # yum install cmake ncurses ncurses-devel bison bison-devel 2). 安装boost 1.59.0 # wget htt...

admin_qing ⋅ 46分钟前 ⋅ 0

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部