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类开始------------------------------------------

  1. public class PageTag  implements Tag {
  2. public PageContext pagecontex;
  3. public JspWriter out;
  4. //自定义属性,当前页
  5. private String curpage;
  6. //自定义属性,跳转路径
  7. private String action;
  8. //设置页面内容
  9. public void setPageContext(PageContext pc) {
  10. pagecontex = pc;
  11. out = pc.getOut();
  12. //再次方法中不能获取属性值
  13. }
  14. //结束
  15. @SuppressWarnings("unchecked")
  16. public int doEndTag() throws JspException {
  17. /*freemarker生成模板...开始*/
  18. Configuration cfg = new Configuration();
  19. //指定freemarker模板位置
  20. cfg.setServletContextForTemplateLoading( pagecontex.getServletContext(), "WEB-INF/templates");
  21. try {
  22. Map root = new HashMap();
  23. root.put("curpage", curpage);
  24. root.put("action", action);
  25. root.put("path",pagecontex.getServletContext().getContextPath());
  26. //得到模板
  27. Template templ = cfg.getTemplate("page.ftl");
  28. //输出模板
  29. templ.process(root, out);
  30. } catch (TemplateException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. } catch (IOException e) {
  34. // TODO Auto-generated catch block
  35. e.printStackTrace();
  36. }
  37. /*freemarker生成模板...结束*/
  38. return 0;
  39. }
  40. //开始
  41. public int doStartTag() throws JspException {
  42. return 0;
  43. }
  44. public Tag getParent() {
  45. return null;
  46. }
  47. //释放控件
  48. public void release() {
  49. }
  50. public void setParent(Tag t) {
  51. }
  52. //-----------get set
  53. public String getCurpage() {
  54. return curpage;
  55. }
  56. public void setCurpage(String curpage) {
  57. this.curpage = curpage;
  58. }
  59. public String getAction() {
  60. return action;
  61. }
  62. public void setAction(String action) {
  63. this.action = action;
  64. }
  65. }

---------------------------------tag类结束------------------------------------------

---------------------------------tld文件开始------------------------------------------

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
  5. version="2.1">
  6. <description>JSTL tagTest core library</description>
  7. <display-name>myTag</display-name>
  8. <tlib-version>1.1</tlib-version>
  9. <short-name>myf</short-name><!-- 用来引入时的名字-->
  10. <uri>/muyunfei</uri><!-- 用来引入时的地址-->
  11. <tag>
  12. <description>
  13. pageTag<!--描述 -->
  14. </description>
  15. <name>page</name><!--标签的名字-->
  16. <tag-class>tag.mytag.page.PageTag</tag-class><!-- 对应的java类,要写全-->
  17. <body-content>JSP</body-content>
  18. <attribute><!-- 属性,可以多个-->
  19. <name>curpage</name><!-- 自己在java文件中定义的私有变量 -->
  20. <required>true</required> <!-- 标签是否必须该属性 -->
  21. <rtexprvalue>false</rtexprvalue>  <!-- 是否支持表达式 -->
  22. </attribute>
  23. <attribute>
  24. <name>action</name><!-- 自己在java文件中定义的私有变量 -->
  25. <required>true</required> <!-- 标签是否必须该属性 -->
  26. <rtexprvalue>true</rtexprvalue>  <!-- 是否支持表达式 -->
  27. </attribute>
  28. </tag>
  29. </taglib>

---------------------------------tld文件结束------------------------------------------

---------------------------------freemaker文件*.ftl(page.ftl)     开始------------------------------------------

  1. <div class="grid-outPagerImg"  onclick="endpage()"  style="float:right;padding-top: 0px">
  2. <img  alt="最后页" border="0"
  3. src="${path}/images/last.png"
  4. style="cursor:hand;" onmouseout="this.src='${path}/images/last.png'"
  5. onmouseover="this.src='${path}/images/lasth.png'">
  6. </img>
  7. </div>
  8. <div class="grid-inPagerImg "  onclick="next()" style="float:right;padding-top: 1px">
  9. <img  alt="后一页" border="0"
  10. src="${path}/images/next.png"
  11. style="cursor:hand;" onmouseout="this.src='${path}/images/next.png'"
  12. onmouseover="this.src='${path}/images/nexth.png'">
  13. </img>
  14. </div>
  15. <div class="grid-pagerText" style="float:right;padding-top: 2px"> 页/共<label id="totilepage"></label>页</div>
  16. <input type="text"  id="curpage"  style="width: 20px;float:right"/>
  17. <div class="grid-pagerText" style="float:right;padding-top: 2px"> 第 </div>
  18. <div class="grid-inPagerImg " onclick="javascript:alert('${action}?curpage=${curpage}')"" style="float:right;padding-top: 1px">
  19. <img  alt="前一页" border="0"
  20. src="${path}/images/prev.png"
  21. style="cursor:hand;" onmouseout="this.src='${path}/images/prev.png'"
  22. onmouseover="this.src='${path}/images/prevh.png'">
  23. </img>
  24. </div>
  25. <div class="grid-outPagerImg"  onclick="javascript:alert('${action}?curpage=${curpage}')" style="float:right;padding-top: 0px">
  26. <img  alt="第一页" border="0"
  27. src="${path}/images/first.png"
  28. style="cursor:hand;" onmouseout="this.src='${path}/images/first.png'"
  29. onmouseover="this.src='${path}/images/firsth.png'">
  30. </img>
  31. </div>
  32. <div class="grid-fnCreatePagerInnerHtml" id="ajaxtablefnCreatePagerInnerHtml">
  33. <div class="grid-allNumberImg grid-pagerText" style="color:#09f;width:85px;float:right;padding-top: 2px">
  34. 共有记录<label id="totilerecode">${curpage}</label>条
  35. </div>
  36. </div>

---------------------------------freemaker文件*.ftl(page.ftl)     结束------------------------------------------

---------------------------------jsp页面     开始------------------------------------------

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@taglib prefix="myf" uri="/muyunfei"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <title>My JSP 'myftag.jsp' starting page</title>
  7. </head>
  8. <body>
  9. 自定义控件使用: <br>
  10. <myf:page action="/ftlhelloword" curpage="1"></myf:page>
  11. </body>
  12. </html>

---------------------------------jsp页面     结束------------------------------------------

javaweb框架--自定义标签与freemaker结合的更多相关文章

  1. 来看看javaweb的自定义标签

    1.为什么需要自定义标签? jsp的简单标签其实就是jsp的自定义标签,主要作用就是移除jsp页面中的java代码,使得jsp页面只有标签和EL表达式,而没有java代码.利用自定义标签,可以使软件开 ...

  2. JavaWeb -- Jsp 自定义标签的使用

    Jsp中不要有一行Java代码, 需要的Java代码都要封到自定义标签中. 自定义标签的作用: a.  自定义标签除了可以移除jsp页面java代码外,它也可以实现以上功能. b.  控制jsp页面某 ...

  3. Javaweb自定义标签

    项目中用到自定义的标签文件,但是却在web.xml中没有看到相关的标签配置,原来如果web应用使用servelet2.4以上的版本就不需要在web.xml中定义了,servelet会自动加载tld文件 ...

  4. javaweb学习总结(二十三)——jsp自定义标签开发入门

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  5. javaweb(二十三)——jsp自定义标签开发入门

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  6. javaweb基础(23)_jsp自定义标签

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  7. thinkphp5 taglib自定义标签教程

    学着写了一下,终于搞定了,顺便分享一下!taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似: {dede:arclist typeid='' row='' col='' titlel ...

  8. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

  9. day13(JSTL和自定义标签&MVC模型&javaweb三层框架)

    day13 JSTL标签库(重点) 自定义标签(理解) MVC设计模式(重点中的重点) Java三层框架(重点中的重点) JSTL标签库   1 什么是JSTL JSTL是apache对EL表达式的扩 ...

随机推荐

  1. MySQL优化2.索引

    什么是索引: 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 建立索引合适的列 经常用作where条件的列,order by排序的列 数据列不重复而且并不是唯一的几个值 不被经常 ...

  2. element table批量删除

    很小的一个问题,但是有细节需要注意 (1)问题:在起初我写的时候是根据元素的name是否相同判断是否是同一个节点,出现的问题就是,如果说两个元素的name相同,就会判断出错 (2)代码: <te ...

  3. php环境一键升级脚本

    因为要解析PHP页面需要配置相应的PHP环境,而系统本身的php版本又大多不合适.网上那种一键lamp和lnmp的脚本很多,但是这样一来自己能够定制的空间则少了.所以我自己编写了个门用于安装php环境 ...

  4. web优化(一 前端)

    当我们在浏览器地址栏中输入一个URL的时候,网页开始请求,我们在页面上看到的内容就是许多个HTTP请求从服务器返回的数据展示,这些展示的快慢很大程度依赖前端的优化,怎样做好前端的优化,我这里总结了几点 ...

  5. uniGUI之通过URL控制参数(25)

    通过URL代入参数,在代码中读取,如: http://localhost:8077/?ServerPort=212&&ServerIP=192.168.31.12 procedure ...

  6. Go语言学习笔记(三)

    一.浮点数 1.概述 浮点类型用于存储带有小数点的数字 一个整数数值可以赋值给浮点类型但是一个整型变量不可以赋值给浮点类型 浮点数进行运算的结果是浮点数 Go语言中浮点类型有两个 float32 fl ...

  7. NSObject类的API介绍

    这篇文章围绕的对象就是NSObject.h文件,对声明文件中的属性.方法进行必要的“翻译”. 该文件大致由两部分组成:NSObject协议和NSObject类. (一)NSObject协议 - (BO ...

  8. 从零构建以太坊(Ethereum)智能合约到项目实战——第24章 IPFS + 区块链

    P93 .1-IPFS环境配置P94 .2-IPFS+P .IPNS+P .个人博客搭建 - 如何在IPFS新增一个文件P95 .3-IPFS+P .IPNS+P .个人博客搭建 - 通过ipfs创建 ...

  9. Servlet 学习(三)

    HTTP 请求的构成 1.HTTP 请求行: 请求方式,比如 GET .POST 等 本次请求的URI ,比如 /hello 协议和版本号 2. HTTP 请求报头: (头部/首部/请求头) 请求头和 ...

  10. centos6.5安装图形操作界面

    yum -y install xorg-x11-fonts-Type1 #安装Xwindow yum -y groupinstall "X Window System" #安装GN ...