javaweb框架--自定义标签与freemaker结合
http://blog.csdn.net/myfmyfmyfmyf/article/details/8960299
很有用但是不不知道怎么说,写个例子,总之方便多了,并且容易管理,重复利用强
1、自定一个类,实现 javax.servlet.jsp.tagext.Tag;(PageTag.java)
2、建立一个tld文件(myfTag.tld)
3、建立一个freemaker文件*.ftl(page.ftl)
4、建立jsp页面,导入标签(<%@taglib prefix="myf" uri="/muyunfei"%>)
5、jsp中使用( <myf:page action="/ftlhelloword" curpage="1"></myf:page>)
6、效果,以后使用很方便,如果需要修改直接改freemaker就可以
---------------------------------tag类开始------------------------------------------
- public class PageTag implements Tag {
- public PageContext pagecontex;
- public JspWriter out;
- //自定义属性,当前页
- private String curpage;
- //自定义属性,跳转路径
- private String action;
- //设置页面内容
- public void setPageContext(PageContext pc) {
- pagecontex = pc;
- out = pc.getOut();
- //再次方法中不能获取属性值
- }
- //结束
- @SuppressWarnings("unchecked")
- public int doEndTag() throws JspException {
- /*freemarker生成模板...开始*/
- Configuration cfg = new Configuration();
- //指定freemarker模板位置
- cfg.setServletContextForTemplateLoading( pagecontex.getServletContext(), "WEB-INF/templates");
- try {
- Map root = new HashMap();
- root.put("curpage", curpage);
- root.put("action", action);
- root.put("path",pagecontex.getServletContext().getContextPath());
- //得到模板
- Template templ = cfg.getTemplate("page.ftl");
- //输出模板
- templ.process(root, out);
- } catch (TemplateException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- /*freemarker生成模板...结束*/
- return 0;
- }
- //开始
- public int doStartTag() throws JspException {
- return 0;
- }
- public Tag getParent() {
- return null;
- }
- //释放控件
- public void release() {
- }
- public void setParent(Tag t) {
- }
- //-----------get set
- public String getCurpage() {
- return curpage;
- }
- public void setCurpage(String curpage) {
- this.curpage = curpage;
- }
- public String getAction() {
- return action;
- }
- public void setAction(String action) {
- this.action = action;
- }
- }
---------------------------------tag类结束------------------------------------------
---------------------------------tld文件开始------------------------------------------
- <?xml version="1.0" encoding="UTF-8" ?>
- <taglib 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-jsptaglibrary_2_1.xsd"
- version="2.1">
- <description>JSTL tagTest core library</description>
- <display-name>myTag</display-name>
- <tlib-version>1.1</tlib-version>
- <short-name>myf</short-name><!-- 用来引入时的名字-->
- <uri>/muyunfei</uri><!-- 用来引入时的地址-->
- <tag>
- <description>
- pageTag<!--描述 -->
- </description>
- <name>page</name><!--标签的名字-->
- <tag-class>tag.mytag.page.PageTag</tag-class><!-- 对应的java类,要写全-->
- <body-content>JSP</body-content>
- <attribute><!-- 属性,可以多个-->
- <name>curpage</name><!-- 自己在java文件中定义的私有变量 -->
- <required>true</required> <!-- 标签是否必须该属性 -->
- <rtexprvalue>false</rtexprvalue> <!-- 是否支持表达式 -->
- </attribute>
- <attribute>
- <name>action</name><!-- 自己在java文件中定义的私有变量 -->
- <required>true</required> <!-- 标签是否必须该属性 -->
- <rtexprvalue>true</rtexprvalue> <!-- 是否支持表达式 -->
- </attribute>
- </tag>
- </taglib>
---------------------------------tld文件结束------------------------------------------
---------------------------------freemaker文件*.ftl(page.ftl) 开始------------------------------------------
- <div class="grid-outPagerImg" onclick="endpage()" style="float:right;padding-top: 0px">
- <img alt="最后页" border="0"
- src="${path}/images/last.png"
- style="cursor:hand;" onmouseout="this.src='${path}/images/last.png'"
- onmouseover="this.src='${path}/images/lasth.png'">
- </img>
- </div>
- <div class="grid-inPagerImg " onclick="next()" style="float:right;padding-top: 1px">
- <img alt="后一页" border="0"
- src="${path}/images/next.png"
- style="cursor:hand;" onmouseout="this.src='${path}/images/next.png'"
- onmouseover="this.src='${path}/images/nexth.png'">
- </img>
- </div>
- <div class="grid-pagerText" style="float:right;padding-top: 2px"> 页/共<label id="totilepage"></label>页</div>
- <input type="text" id="curpage" style="width: 20px;float:right"/>
- <div class="grid-pagerText" style="float:right;padding-top: 2px"> 第 </div>
- <div class="grid-inPagerImg " onclick="javascript:alert('${action}?curpage=${curpage}')"" style="float:right;padding-top: 1px">
- <img alt="前一页" border="0"
- src="${path}/images/prev.png"
- style="cursor:hand;" onmouseout="this.src='${path}/images/prev.png'"
- onmouseover="this.src='${path}/images/prevh.png'">
- </img>
- </div>
- <div class="grid-outPagerImg" onclick="javascript:alert('${action}?curpage=${curpage}')" style="float:right;padding-top: 0px">
- <img alt="第一页" border="0"
- src="${path}/images/first.png"
- style="cursor:hand;" onmouseout="this.src='${path}/images/first.png'"
- onmouseover="this.src='${path}/images/firsth.png'">
- </img>
- </div>
- <div class="grid-fnCreatePagerInnerHtml" id="ajaxtablefnCreatePagerInnerHtml">
- <div class="grid-allNumberImg grid-pagerText" style="color:#09f;width:85px;float:right;padding-top: 2px">
- 共有记录<label id="totilerecode">${curpage}</label>条
- </div>
- </div>
---------------------------------freemaker文件*.ftl(page.ftl) 结束------------------------------------------
---------------------------------jsp页面 开始------------------------------------------
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@taglib prefix="myf" uri="/muyunfei"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>My JSP 'myftag.jsp' starting page</title>
- </head>
- <body>
- 自定义控件使用: <br>
- <myf:page action="/ftlhelloword" curpage="1"></myf:page>
- </body>
- </html>
---------------------------------jsp页面 结束------------------------------------------
javaweb框架--自定义标签与freemaker结合的更多相关文章
- 来看看javaweb的自定义标签
1.为什么需要自定义标签? jsp的简单标签其实就是jsp的自定义标签,主要作用就是移除jsp页面中的java代码,使得jsp页面只有标签和EL表达式,而没有java代码.利用自定义标签,可以使软件开 ...
- JavaWeb -- Jsp 自定义标签的使用
Jsp中不要有一行Java代码, 需要的Java代码都要封到自定义标签中. 自定义标签的作用: a. 自定义标签除了可以移除jsp页面java代码外,它也可以实现以上功能. b. 控制jsp页面某 ...
- Javaweb自定义标签
项目中用到自定义的标签文件,但是却在web.xml中没有看到相关的标签配置,原来如果web应用使用servelet2.4以上的版本就不需要在web.xml中定义了,servelet会自动加载tld文件 ...
- javaweb学习总结(二十三)——jsp自定义标签开发入门
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- javaweb(二十三)——jsp自定义标签开发入门
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- javaweb基础(23)_jsp自定义标签
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- thinkphp5 taglib自定义标签教程
学着写了一下,终于搞定了,顺便分享一下!taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似: {dede:arclist typeid='' row='' col='' titlel ...
- Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架
JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...
- day13(JSTL和自定义标签&MVC模型&javaweb三层框架)
day13 JSTL标签库(重点) 自定义标签(理解) MVC设计模式(重点中的重点) Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL JSTL是apache对EL表达式的扩 ...
随机推荐
- Java面向对象编程 -2
成员属性封装 在类之中的组成就是属性和方法,一般而言方法都是对外提供服务的,所以是不会进行封装处理的,而对于属性需要较高的安全性,所以往往需要对其进行保护 这个时候就需要采用封装性对属性进行保护. 在 ...
- 蓝牙/zigbee/nrr24xx
目前使用的短距离无线通信技术及标准主要有Bluetooth.WIFI.ZigBee.UWB.NRF24XX系列产品等.Nordic公司生产的单片集成射频无线收发器NRF24XX系列芯片具有低功耗.支持 ...
- Spring MVC 解读——@Autowired、@Controller、@Service从原理层面来分析
目录(?)[+] Spring MVC 解读Autowired 一Autowired 二BeanPostProcessor 三磨刀砍柴 四Bean 工厂 五实例化与装配 六执行装配 七一切的开始 ...
- iOS 开发之 生产者与消费者模式及其实现
概念: 在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的 ...
- win10 桌面快捷键技术
win 10 的 快捷键技术,使用还是挺流畅舒适的: Windows10技术新增键盘快捷键汇总: 1.贴靠窗口:Win +左/右> Win +上/下>窗口可以变为1/4大小放置在屏幕4个角 ...
- 【Android多线程】异步信息处理机制
https://www.bilibili.com/video/av65170691?p=3 (本文为此视频听课笔记) 一.线程和线程之间为什么要进行通讯 各线程之间要传递数据 二.线程和线程之间如何通 ...
- Educational Codeforces Round 81 + Gym 102267
UPD:变色了!!!历史最高1618~ Educational Codeforces Round 81 (Rated for Div. 2) The 2019 University of Jordan ...
- 【C++初学者自学笔记二】函数重载(模块一)
1.概念:同意作用域的一组参数列表不同,函数名相同的函数,这组函数叫函数重载(C语言是不能定义相同名称的函数,但是C++可以允许定义). 2作用:重载函数通常来命名一组功能相似的函数,这样做减少了函数 ...
- 设计模式01 创建型模式 - 建造者模式(Build Pattern)
参考 1. Builder Design Pattern | Youtube 2. 建造者模式(Builder和Director)| 博客园 3. 深入理解Builder模式 | 简书 建造者模式(B ...
- input输入文字的时候背景会变色,如何去掉呢?
默认,如图: 当input框输入文字的时候背景会变色,如图: 有两种方法: 1.在form标签里家这个属性就行: autocomplete="off"