velocity整合servlet
目录结构
点我下载工程代码
俩实体类不用说了
看CustomerVelocityServlet类
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.servlet.VelocityViewServlet;
import com.velocity.bean.Department;
import com.velocity.bean.Employee;
@SuppressWarnings("serial")
public class CustomerVelocityServlet extends VelocityViewServlet{
//设置返回视图为text/html编码为gbk
@Override
protected void setContentType(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html;charset=gbk");
}
//处理请求
@Override
protected Template handleRequest(HttpServletRequest request,
HttpServletResponse response, Context ctx) throws Exception {
ctx.put("username", "张三");
ctx.put("password", "123456789");
ctx.put("age", "20");
ctx.put("address", "陕西西安");
ctx.put("blog", "http://blogjava.net/sxyx2008");
List<Employee> list=new ArrayList<Employee>();
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")));
ctx.put("list", list);
//调用父类的方法getTemplate()
return getTemplate("demo.vm", "gbk");
}
}
继承org.apache.velocity.tools.view.servlet.VelocityViewServlet,覆写setContentType和handleRequest方法,其中setContentType用于设置浏览器的响应,handleRequest处理用户的请求,返回Template,我们调用父类中的getTemplate()方法返回
在WEB-INF目录下创建一vm目录,用于存放模板文件
在WEB-INF目录下创建velocity.properties(名字可以任意取)
内容为
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path=/WEB-INF/vm/
input.encoding="gbk"
output.encoding="gbk"
resource.loader = webapp 加载方式为webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader webapp方式加载处理类
webapp.resource.loader.path=/WEB-INF/vm/ 模板文件目录
input.encoding="gbk" 输入字符编码
output.encoding="gbk" 输出字符编码
配置web.xml
<servlet-name>customerVelocityServlet</servlet-name>
<servlet-class>com.velocity.servlet.CustomerVelocityServlet</servlet-class>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>customerVelocityServlet</servlet-name>
<url-pattern>/customerVelocityServlet</url-pattern>
</servlet-mapping>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
加载自定义的velocity.properties
demo.vm
<HTML>
<HEAD>
<TITLE> velocity </TITLE>
</HEAD>
##嘿嘿,我是velocity中的注释噢
#*
嘿嘿,我也是velocity中的注释噢
*#
<BODY>
<h1>hehe,这是经过由servlet返回的velocity视图</h1>
hello ${username},这是你的信息
<ul>
<li>用户密码为:${password}</li>
<li>年龄为:${age}</li>
<li>出生地址为:${address}</li>
<li>个人主页为:<a href='${blog}'>${blog}</a></li>
</ul>
<br/>
#foreach($emp in $!{list})
$!{velocityCount}
$!{emp.id}
$!{emp.ename}
$!{emp.eaddress}
$!{emp.age}
$!{emp.department.id}
$!{emp.department.deptname} <hr/>
#end
</BODY>
</HTML>
http://localhost:8080/velocityweb/customerVelocityServlet
效果图
velocity整合servlet的更多相关文章
- spring boot整合servlet、filter、Listener等组件方式
创建一个maven项目,然后此项目继承一个父项目:org.springframework.boot 1.创建一个maven项目: 2.点击next后配置父项目及版本号 3.点击finish后就可查看p ...
- SpringBoot整合Servlet的两种方式
SpringBoot整合Servlet有两种方式: 1.通过注解扫描完成Servlet组件的注册: 2.通过方法完成Servlet组件的注册: 现在简单记录一下两种方式的实现 1.通过注解扫描完成Se ...
- SpringBoot(四)-- 整合Servlet、Filter、Listener
SpringBoot中有两种方式可以添加 Servlet.Filter.Listener. 1.代码注册 通过ServletRegistrationBean. FilterRegistrationBe ...
- spring boot 2.x 系列 —— spring boot 整合 servlet 3.0
文章目录 一.说明 1.1 项目结构说明 1.2 项目依赖 二.采用spring 注册方式整合 servlet 2.1 新建过滤器.监听器和servlet 2.2 注册过滤器.监听器和servlet ...
- Spring Boot整合Servlet、Filter、Listener
整合 Servlet 方式一: 编写 servlet package com.bjsxt.controller; import javax.servlet.ServletException; ...
- springboot整合web开发(整合servlet、filter、listener、访问静态、文件上传)
整合servlet 1.继承HttpServlet 2.添加@WebServlet注解 @WebServlet(name="FirstServlet",urlPatterns=&q ...
- 【使用篇二】SpringBoot整合Servlet(1)
两种方式: 通过注解扫描完成 Servlet组件的注册 通过方法完成 Servlet组件的注册 一.通过注解扫描完成 Servlet 组件的注册 1. 编写Servlet类 /** * SpringB ...
- spring 整合 servlet
目的:记录spring整合 servlet过程demo.(企业实际开发中可能很少用到),融会贯通. 前言:在学习spring 过程(核心 ioc,aop,插一句 学了spring 才对这个有深刻概念, ...
- springboot(3):整合Servlet,filter,listener
1.springboot整合Servlet(2种方式) 添加maven依赖:spring-boot-starter-web 1>通过注解扫描完成Servlet组件的注册(方式1) 步骤:需要3步 ...
随机推荐
- MSSQLSERVER服务无法启动的解决方案
MSSQLSERVER服务无法启动的解决方案 有时候sqlserver无法启动了,原因是mssqlserver服务没有启动,当你手动启动时,又出现服务无法响应的可恶错误提示... 笔者“有幸”遇到了, ...
- java中的算术运算符、赋值运算符、比较运算符、逻辑运算符、条件运算符
一.算术运算符 算术运算符主要用于进行基本的算术运算,如加法.减法.乘法.除法等. Java 中常用的算术运算符: 其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同滴 例 ...
- CSS换行文本溢出显示省略号,多行
首先,div部分 <body> <div>多行的显示该如何解决呢,后面经过一番google后,我找到了chrome的一个API可以解决上面提到的需求-webkit-line-c ...
- 初学git(一):创建本地“仓库”
初学git(一):创建本地“仓库” 作为一个初学者,我是跟着廖学峰老师的官方博客学习,这里只是做个笔记,哈哈,关于git的历史.和其他版本控制的对比啥的,我就不说了.另外,我这里用的是Mac OS X ...
- Xmanager远程Centos 7 Xfce
最近发现远程除了使用VNC还可以用Xmanager,孤陋寡闻了,通过这个远程软件,又把不怎么关注的Xwindow给了解了一遍. Xfce是一个自由软件,运行在类Unix操作系统 (如Linux.Fre ...
- ReportViewer内存泄漏问题解决方案[上]
做这个项目有点倒霉,快要验收的时候,发现微软ReportViewer控件的一个bug,导致我们的项目无法正常验收. 问题描叙:用ReportViewer本地模式做的报表,在ASP.NET页面中呈现.在 ...
- myeclipse性能优化
1. 取消启动项.这个设置立竿见影.Window->Preferences->General->Startup and Shutdown, Plug-ins activated on ...
- 无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)
无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器. (Microsoft SQL Server,错误: 20582) 2013-01-05 15:02 478 ...
- silverLight--绑定数据dataGrid
后台代码编写 ,为表格绑定数据: using System; using System.Collections.Generic; using System.Linq; using System.Net ...
- yaf框架学习笔记
1.yaf框架支持简单的试图引擎,并且支持用户自定义视图引擎,比如smarty. 2.Yaf_Request_Http::getQuery ,Yaf_Request_Http::getQuery ( ...