编写"纯HTML"JSP应用:学会使用 JSTL

js

  刚开始用JSP做web应用的时候,象使用PHP,ASP一样用JSP,在HTML代码中夹杂着一大堆的 scriptlet---即java 代码段。由于本人的“排版”技术还算可以,开始的时候觉得挺好,编写“效率”高,调试又方便!

  到了后来才知道---这是一种极其愚蠢的做法儿----JSP诞生的时候就已经明确与ASP,PHP划清了界限,使用javaBean、Servlet可以有效的将HTML中夹杂的java 代码段剥离,然后包装成一个可在多个页面复用的“逻辑处理组件”---这是JSP相对于PHP,ASP的优越之处之一。

  但有时即使使用javabean + servlet,我们也不得不将“极少量”的 java代码 嵌入到HTML中----的确,有时你必须这样:因为在 javabean中,你无法使用JSP中的隐含对象,比如 request,session,response等.

  使用Servlet虽然可以使用JSP的对象,但却不能象javaBean灵活地插入到 html 中--
所以,Tag(标签) 就出现了(可以使用所有的JSP隐含对象),它的出现彻底解决了这个问题,可以让你编写出“纯HTML”的JSP页码---由此带来的好处自然不言而喻:更高的可维护性、更高的组件复用效率、更易维护的HTML页面````

小弟不才,刚刚开始学JSTL,觉得这个东东真的很不错!很想让更多的 初学者 知道这个,并能应用到实际的web开发中。

  下面,就开始编写我们的第一个 Tag!

  **下面是使用了简单Tag的JSP文件,运行结果是显示当前时间:

<%@ page contentType="text/html;charset=gb2312" %>
<html><body>
<%@taglib uri="/tags" prefix="visa"%>
现在时间是:<visa:date/>
</body></html>

  很明显,使用了tag的JSP页清爽了许多---如果将数据库操作等一些复杂功能也封装进去的话,tag的优势就更明显了!

**环境:win2000 server + Tomcat5.019 + j2sdk1.42 + SQLServer 2k
**开发一个Tag,需要编写2个主要文件:
1-标签处理器(一个类servlet的java类)
2-标签描述符(一个XML风格的tld文件)
完成这两个文件,就可以在WEB应用中部署、应用了。

  好了,下面我们就开始做吧!

  1-编写tag处理器:datetag.java

  它的作用就象一个Servlet,接受来自客户端的请求,但它却可以象javaBean一样在JSP中方便调用。

package tag;

import java.util.Date;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class datetag extends TagSupport{

 public int doStartTag() throws JspException{
  Date dte=new Date();
  try{
  JspWriter out=pageContext.getOut();
  out.print(dte);
   }
   catch(java.io.IOException e)
   {throw new JspTagException(e.getMessage());}
 return SKIP_BODY;
}
}

  用 javac编译之后,就得到了 datetag.class文件了,将其放在 xxx\WEB-INF\classes\tag 目录下。

  2-编写tag库描述符:tags.tld

  比较容易看出,<tag></tag>部分有点象servlet mapping的配置--这里配置的是tag的名字与tag类之间的映射。

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<tag>
 <name>date</name>
 <tag-class>tag.datetag</tag-class>
 <body-content>empty</body-content>
</tag>
</taglib>

  将tags.tld保存在xxx\WEB-INF\ 目录下。

  3-配置你的web.xml:

  配置web.xml,注册你的标签库:在web.xml的 <web-app>与</web-app>之间添加:
在这里注册你的自定义标签符,在JSP中的引用名为:/tags

<taglib>

<taglib-uri>/tags</taglib-uri>
<taglib-location>/WEB-INF/tags.tld</taglib-location>

</taglib>

  4-开始在JSP中使用!

  因为已经在web.xml中注册过,通过 /tags 引用你的标签库;
prefix的作用就象<jsp:useBean/>中的 id,只是作为一个标志(可任意定义)
<visa:date/> 很明显,通过调用date,就等于调用了 datetag.class :

<%@ page contentType="text/html;charset=gb2312" %>
<html><body>
<%@taglib uri="/tags" prefix="visa"%>
现在时间是:<visa:date/>
</body></html>

  **相信到了这里,有人就有了疑问了:为了使用一个Tag,我就做了这么多的“多余”工作(编写tld,修改web.xml,还要重启tomcat),值得吗?!

  ---答案是:这是很值得的!

  1、如果将比较复杂的逻辑功能封装进Tag,它就具有比Servlet,javaBean更高的灵活性,更多的优点,更易扩展,更易维护---彻底分离表示层与逻辑层!

  2、因为Tag的功能并非只是这一些,还有更多高级功能---值得去学习!

  ****
  这只是一个很简单的应用,当然,你会有很多的“迷惑点”,这是正常的---在TAG中有一些独有的特性,想完全学会TAG并不是件简单的事情。
--所以,在这里,我向大家推荐一本好书:电子工业出版社的《jsp标志库编程指南》(英文名:《Professional JSP Tag Libraries》)

  PS:使用JSTL配合javabean,servlet还可以有效保护你的源码哦 ---- 因为,你可以向你的客户交付不含有java源代码的web应用,因为,所有的 java代码 都已经被编译成 *.class了   *^_^*

  [注意]:针对 Tomcat 5.0x以下的版本----如:Tomcat 4.0x:要编译标签处理器,必须将你的 servlet.jar(在% TOMCAT_HOME%\common\lib下面) 放进环境变量 CLASSPATH 中---(如果是 tomcat5.0x 以上的版本,好象没这个要求)---否则,会提示编译错误。

时间: 2024-09-14 22:48:40

编写"纯HTML"JSP应用:学会使用 JSTL的相关文章

编写 纯HTML jsp应用--学会使用 JSTL

js 刚开始用JSP做web应用的时候,象使用PHP,ASP一样用JSP,在HTML代码中夹杂着一大堆的 scriptlet---即java 代码段.由于本人的"排版"技术还算可以,开始的时候觉得挺好,编写"效率"高,调试又方便! 到了后来才知道---这是一种极其愚蠢的做法儿----JSP诞生的时候就已经明确与ASP,PHP划清了界限,使用javaBean.Servlet可以有效的将HTML中夹杂的java 代码段剥离,然后包装成一个可在多个页面复用的"逻

[学习笔记]**编写 纯HTML jsp应用--学会使用 JSTL**

js|笔记 刚开始用JSP做web应用的时候,象使用PHP,ASP一样用JSP,在HTML代码中夹杂着一大堆的 scriptlet---即java 代码段.由于本人的"排版"技术还算可以,开始的时候觉得挺好,编写"效率"高,调试又方便! 到了后来才知道---这是一种极其愚蠢的做法儿----JSP诞生的时候就已经明确与ASP,PHP划清了界限,使用javaBean.Servlet可以有效的将HTML中夹杂的java 代码段剥离,然后包装成一个可在多个页面复用的&quo

[学习笔记]**编写 纯HTML jsp应用--学会使用

js|笔记 刚开始用JSP做web应用的时候,象使用PHP,ASP一样用JSP,在HTML代码中夹杂着一大堆的 scriptlet---即java 代码段.由于本人的"排版"技术还算可以,开始的时候觉得挺好,编写"效率"高,调试又方便! 到了后来才知道---这是一种极其愚蠢的做法儿----JSP诞生的时候就已经明确与ASP,PHP划清了界限,使用javaBean.Servlet可以有效的将HTML中夹杂的java 代码段剥离,然后包装成一个可在多个页面复用的&quo

Win8系统安装office2007提示"Setup Error"的处理方法

  Win8系统安装office2007提示"Setup Error"的处理方法 解决方法如下: 1.留意错误出现的路径,比如图:E:Office2007ProPlus.WWOsetup.DLL(这里的路径其实就是你安装包文件所在对应的文件夹,下同) 2.找到这个目录:E:Office2007ProPlus.WW ; 3.里面有一个ProPlus.WW.cab 文件,大约260M左右 ; 4.用Winrar压缩工具打开这个cab文件或是电脑可以直接提取.提取里面的 osetup.dll 文件 ;

myeclipse-MyEclipse中编写的一个完整的jsp程序包括后台文件的运行流程

问题描述 MyEclipse中编写的一个完整的jsp程序包括后台文件的运行流程 一个程序在MyEclipse中的运行流程,也就是先加载那个文件,后运行那个文件,求指点 解决方案 你不如找一本web开发教程的书看看 解决方案二: 去学一下jsp就知道了,,很快的,,

编写无Java脚本的JSP页面

在上一章中总结了Web开发中应用MVC架构模式,将Servlet 用做控制器,JSP作为视图,JavaBean作为模型,实现业务流程控制,页面逻辑和业务逻辑的分离.然而,使用前面的技术实现MVC,并不是最完美的. 在当代的一个最佳的JavaWeb开发实践就是在MVC架构模式中,中和使用JavaBean,EL(expression language),JSP自定义标记库以及JSP标准标记库JSTL,编写无java脚本的JSP页面. 一 JSP表达式语言EL  在使用基于MVC架构模式的Web应用开

jsp中如何去除JSTL标签库“include, taglib”等留下的空白行

在做项目的时候,经常会使用到JSTL和EL表达式,有时我们需要看下页面生成的源代码,但是当jsp中充满了jstl的各种标签,页面就会存在很多的空白部分,有时太多了会让浏览器假死掉,这是我们就想要去掉这些空白的部分了.去掉的方法很多,下面一一列举出来. 我的开发及服务器环境:Windows7 + Eclipse2014 + Tomcat7.0 + JDK 1.7.0 经过多番测试,可用的方法有: 1.在每个JSP的头上加上一段代码   <%@ page trimDirectiveWhitespac

微信"三俗"遭网友吐槽

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; "伤不起,微信里全是些小孩照.宠物照.自拍照,可不可以屏蔽朋友圈嘛!"继网友吐槽微博"四俗":城里开咖啡馆.辞职去西藏.丽江开客栈.骑行三 一八后,微信朋友圈也被网友列出"三俗":有孩子的晒孩子,没孩子的晒宠物,没宠物的干脆晒自己,"千篇一律的照片,看得眼睛都'抗议'了". 有娃儿的晒娃

教你"10万"流量是怎么来的

中介交易 SEO诊断 淘宝客 云主机 技术大厅 很多朋友问我.什么是SEO.SEO核心是什么?我笑了笑,如同剑客,手中无剑心中有剑,方是最高境界.hao123的站长练SEO是什么都不知道.他如何做到百万流量的站?对,:网络营销,内容为王!这一句话一直影响着我,今天来和大家分析一下影响搜索引擎排名(SEO)的内容因素: 原则之一:内容越丰富,对SEO越有利! 为什么有这样一个原则呢? 我们就要学会分析搜索引擎的算法,如何分析呢? 要从人性化方面分析,因为搜索引擎所有的算法都在模仿人的思考方式来分析