- 浏览: 464350 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chexiazi:
一样的xml代码 报这个错 <ns1:XMLFault ...
CXF 通过用户名和密码进行验证 -
di1984HIT:
谢谢啊 ~~~
通过JavaCompiler进行编译java文件(转载) -
aa00aa00:
'%${userName}%' 这种是可以的,是可以模糊查询的 ...
mybatis 模糊查询 -
一棵杨柳的地盘:
我把你的代码不了一遍 但是汇报错首先:static { ...
CXF 通过用户名和密码进行验证 -
shangmin1990:
转 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件
在昨天是使用velocity和Servlet整合,其中使用继承(extends) VelocityViewServlet来实现servlet解析vm模板,发现这样写比较麻烦,今天研究了一下怎么和struts2进行整合,发现struts2可以很好的整合velocity。
项目结构为:
这个项目是用maven搭的项目,因为发现找jar包太麻烦了。
其中pom.xml文件为:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>VelocityStruts</groupId>
<artifactId>VelocityStruts</artifactId>
<packaging>war</packaging>
<name />
<version>0.0.1-SNAPSHOT</version>
<description />
<build>
<sourceDirectory>${basedir}/src</sourceDirectory>
<outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${basedir}/WebRoot</webappDirectory>
<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>5.0-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_04</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>1.2_04</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.8.0.GA</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>avalon-logkit</groupId>
<artifactId>avalon-logkit</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
</project>
在用servlet和velocity结合的时候,需要手动的覆盖handleRequest(HttpServletRequest request,
HttpServletResponse response, Context ctx)方法,并且手动的往ctx中写数据,才能在vm模板中读到数据,但是用struts2中,已经完全的简化了该步骤,直接像写普通的action一样,代码如下:
import java.util.ArrayList;
import java.util.List;
import com.velocity.bean.Department;
import com.velocity.bean.Employee;
public class HelloWorld {
private String message;
private String userName;
private List<Employee> list=new ArrayList<Employee>();
public List<Employee> getList() {
return list;
}
public void setList(List<Employee> list) {
this.list = list;
}
public HelloWorld() {
}
public String execute() {
setMessage("Hello " + getUserName());
list.add(new Employee(1,"张三","北京",18,new Department(1,"软件研发部1")));
list.add(new Employee(2,"张三","北京",19,new Department(2,"软件研发部2")));
list.add(new Employee(3,"张三","北京",20,new Department(3,"软件研发部3")));
list.add(new Employee(4,"张三","北京",21,new Department(4,"软件研发部4")));
list.add(new Employee(5,"张三","北京",22,new Department(5,"软件研发部5")));
list.add(new Employee(6,"张三","北京",23,new Department(6,"软件研发部6")));
list.add(new Employee(7,"张三","北京",24,new Department(7,"软件研发部7")));
list.add(new Employee(8,"张三","北京",25,new Department(8,"软件研发部8")));
list.add(new Employee(9,"张三","北京",26,new Department(9,"软件研发部9")));
list.add(new Employee(10,"张三","北京",27,new Department(10,"软件研发部10")));
return "SUCCESS";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
其中的bean类和上一篇文章中的一模一样,在这里就不重复了。
在struts中需要添加一个配置文件tools.xml(也可以不需要,该xml文件,就如他的名字一样,可以在vm中直接使用该配置文件中添加的工具变量,如date就是一个工具变量,可以在vm中通过日期:$date.get('yyyy-M-d H:m:s') 使用),代码如下:
<tool>
<key>date</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.DateTool</class>
<parameter name="format" value="yyyy-M-d" />
<tool>
<key>link</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.StrutsLinkTool</class>
</tool>
<tool>
<key>msg</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.MessageTool</class>
</tool>
<tool>
<key>errors</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.ErrorsTool</class>
</tool>
<tool>
<key>form</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.FormTool</class>
</tool>
<tool>
<key>tiles</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.TilesTool</class>
</tool>
<tool>
<key>validator</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.ValidatorTool</class>
</tool>
</toolbox>
如果想使用toolbox,必须在web.xml中添加如下一段话:
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/toolbox.xml</param-value>
</init-param>
以后的代码就和servlet类似了,在该项目中,我把vm模板文件放在了项目的根目录中了,如果想找到他的话,需要配置velocity.properties文件
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path= ---这里是配置vm的路径的
input.encoding=utf-8
output.encoding=utf-8
runtime.log =d/\:/velocity.log
web.xml文件如下
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/toolbox.xml</param-value>
</init-param>
</servlet>
<!-- Map *.vm files to Velocity -->
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.vm </welcome-file>
</welcome-file-list>
</web-app>
在web项目中loader.class 需要用 org.apache.velocity.tools.view.servlet.WebappLoader
其他的项目直接使用velocity包中的类就可以了。
velocity中也支持struts2中的ValueStack的数据,这样就轻松了很多,哈哈
其他的就没有什么可以说了,反正觉得struts和velocity结合的非常好。上传代码……
发表评论
-
ajax文件导出
2018-10-22 14:50 2193前提ajax是没 ... -
velocity 取reuqust中的数据
2012-02-01 19:55 1226在servlet中写入request.setAttribute ... -
转Jquery UI dialog 详解 (中文)
2012-01-18 16:42 12311 属性 1.11 autoOpen ,这个属性为true的 ... -
maven package 命令报:-source1.3 中不支持注释错误
2012-01-12 13:22 3878在使用maven 打包或者编译时报:-source1.3 中不 ... -
jquery 使用ajax 提交整个表单的数据
2012-01-06 14:52 5886在使用Struts开发项目的时候发现很爽的一件事就是可以不使用 ... -
struts2 通配符
2011-12-31 16:25 1255在使用struts2时,如果想定义action的话可以这样做 ... -
Maven Web项目部署到Tomcat下
2011-12-30 17:28 19502通过Maven来搭建项目是 ... -
Could not find artifact com.sun:tools:jar:1.5.0 解决方案
2011-12-29 17:22 2842在使用myeclipse 工具开发maven与struts2结 ... -
(转)Velocity宏Velocimacros
2011-12-29 14:50 1051#macro脚本元素允许模版设计者定义一段可以重复使用的VTL ... -
Velocity初始化过程解析
2011-12-29 13:35 1558Velocity初始化过程解析 Velocity是 ... -
(转)Struts2学习笔记--Internationalization
2011-11-21 18:13 1266Struts2 的国际化 ======== ... -
maven 自动打包
2011-04-25 11:56 2044转自:http://skydream.it ... -
$.get方法缓存问题
2011-04-19 12:26 3033$.get 方法缓存的问题 ajax的get方法在ie中存在 ... -
删除表格
2009-02-25 18:15 938有时候我们会决定我们需要从数据库中清除一个表格。事实上,如果我 ... -
js 获取当前日期
2010-07-26 11:28 1001Js 获取当前日期 文章分类:Web前端 var myDa ... -
如果防止IE出现“要再次显示该网页internet exploer 需要重新发送您以前提交的信息..”
2010-08-02 10:01 7610在做asp.net 项目时遇到了一个需求,是在编辑对话框,在 ... -
javascript:浮动div,可拖拽div,遮罩层(div和iframe实现)
2010-08-10 10:45 1764在网页中,经常需要标题里提到的几种效果,实现比较简单,这里总结 ... -
一个form,多个submit提交
2010-09-17 22:00 1881在很多 Web 应用中,为了完成不同的工作,一个 HTML f ...
相关推荐
Struts2+velocity 整合时所用的jar包 资源目录如下 commons-collections-3.1 commons-digester-2.0 commons-fileupload-1.2.2 commons-lang-2.5 freemarker-2.3.16 ognl-3.0.1 oro-2.0.8 struts2-core-2.2.3.1 ...
shiro_spring_velocity的整合文档
velocity和ssi整合开发
spring mvc与velocity整合
一个简单的struts2 整合 velocity 模板的例子
文档详细描述了Velocity整合struts2步骤,以及velocity的语法规范
采用最新的springmvc3.2、mybatis3.2、velocity1.7整合,完整的配置文件和测试例子,注解完成,轻量级的视图搭配
Struts2 整合 velocity最简单工程 最少的jar包 SSH Velocity
velocity+struts2实例,适合开发和整合使用,你可以发现很多时候都是可以复用或者优化的方法,只要你用心去修改、
NULL 博文链接:https://yjhexy.iteye.com/blog/978123
SpringMVC+ibatis+velocity整合例子,虽然比较简单。可以为没有配置好的同学作为参考。
Maven + Spring mvc + Mybatis + Velocity 整合实例,之前上传的整合 Demo,修改了一些问题,所以重新上传了一个
velocity学习笔记与struts2整合 velocity学习笔记与struts2整合 velocity学习笔记与struts2整合
Spring MVC框架,整合了velocity,这个没有用到Hibernate,下一版本会把集成Hibernate
Velocity 和 FreeMarker区别 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的
junit4与shh2+velocity框架整合 培训
velocity spring jpa hibernate 整合
模板:velocity和freemarker的比较模板:velocity和freemarker的比较
一个很简单容易上手的struts2与velocity集成 实例;很方便初学者进入struts2与velocity集成 学习