在JSP2.0之后支持自己定义标签,如今一般都是jsp2.4的版本号了,所以无须考虑版本号的问题。

直接使用就能够了。尽管一般开发的过程中,非常少会自己定义JSP标签。可是通过一个JSP自己定义标签的学习。能够从一定程度上理解struts等框架把好好的JSP标签改得面目全非的机理。正如Jquery本质是Javascript一样,SSH实际上Jsp。事实上也没有什么,一个简单的样例就能够全然说明怎样在JSP中自己定义的标签。

通过自己定义标签就行达到所谓的MODEL2标准。在展示层VIEW给别人看的网页中不得出现不论什么的server运行代码。

假设出现了。就是那种MODEL1的标准。

一、基本目标

定义一个clock标签,这个标签还要求传入一个ID。

之后。假设JSP之中使用这个标签,传入一个ID。就会在页面显示当前的时间与传入的ID。例如以下图所看到的:

二、基本准备

这个东西不用引入不论什么的jar。web.xml文件能够利用eclipse for javaee自己主动生成,删除无用的东西,也不用配置不论什么东西,JSP2.0之后就自带定义标签库的属性,例如以下所看到的,web.xml自己主动生成的方法能够參考《【Javaweb】Eclipse for JavaEE新建的Webproject自己主动生成web.xml》(点击打开链接

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
</web-app>

站点目录结构例如以下图,在WEB-INF下新建一个tags目录,之后我们的标签都是tags:了,这个目录的命名决定了以后的标签头,这个目录以后就是我们的标签库。理论上这个tags放在哪里都能够,可是。为了不让别实用心的用户胡乱訪问,所以还是放在WEB-INF之中:

三、制作过程

1、此次涉及到一个比較少见的,后缀名为.tag的文件,右击刚刚建好tags目录,选择New->Other...,新建一个tag文件。

2、在弹出的对话框。输入tags,选择JSP Tag,点击下一步,命名为clock,因为clock.tag在tags里面,以后调用这个标签就tags:clock了。你的目录与文件名称的名字决定了这个以后标签的名字,就能够開始编辑clock.tag了

3、clock.tag文件例如以下所看到的,这个文件就是用来说明这个文件是干什么用。这就定义好tag:clock的动作了,ognl表达式里面的s:if标签,也就是这种道理,在s目录下以下有个if.tag文件,然后写好这个if.tag所运行的工作,先输出当前时间,时间输出的JAVA代码与《【Java】有关System.currentTimeMillis()的思考》(点击打开链接)的一模一样。丝毫没改,然后把传入来id以<h1></h1>来显示,根本就一段HTML+JSP混写的代码

<!-- 改好网页头的编码为utf-8,引入对应的java包 -->
<%@ tag language="java" pageEncoding="utf-8" import="java.util.Date,java.text.SimpleDateFormat"%>
<!-- 这个本标签将会引入id參数 -->
<%@ attribute name="id" %>
<%
//假设要在jsp脚本中使用传入參数则这样写
request.getAttribute("a");
//输出时间
out.println(new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss E").format(new Date(System.currentTimeMillis())).toString());
%>
<!-- 假设这个參数是直接输出的,则这样写 -->
<h1>${id}</h1>

4、在index.jsp对tags:clock标签传入參数“你好”。就会看到执行效果了。这样就形成了所谓的MODEL2网页编程规则,就是正常网页中不得出现不论什么的执行代码……说什么可以非常好地提高网页代码的复用性。

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index</title>
</head>
<body>
<tags:clock id="你好" />
</body>
</html>

【Jsp】JSP自己定义标签与MODEL1、MODEL2标准的更多相关文章

  1. JSP自己定义标签入门实例具体解释

    JSP自己定义标签主要能用到的两个包 javax.servlet.jsp.*;javax.servlet.jsp.tagext.*; 自己定义标签<userInfo:showUserInfo/& ...

  2. JSP自己定义标签继承哪个类

    JSP自己定义标签继承哪个类 解:JSP自己定义标签继承TagSupport

  3. 深入分析JavaWeb Item23 -- jsp自己定义标签开发入门

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

  4. JSP自己定义标签

    JSP自己定义标签 API文档: http://docs.oracle.com/javaee/7/api/ watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ ...

  5. jsp 2种include标签的区别

    众所周知,jsp中有2种标签用于包含其他jsp或者文件 1.include指令,其实是java代码 <%@ include file="xxx.jsp"%> 2.jsp ...

  6. jsp jsp传统标签开发

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. jsp jsp标签

    JSP标签页称为Jsp Action(JSP动作元素),用于在Jsp页面中提供业务逻辑功能,避免在Jsp页面中直接编写java代码,造成jsp页面难以维护. jsp常用标签 jsp:include标签 ...

  8. jsp中常用的标签

    jsp本质上就是一个servlet,只是tomcat会将其翻译成servlet,servlet本质上是一个类,那么jsp也是一个类.jsp中各种标签都会被tomcat翻译成各种基本的java代码 如果 ...

  9. JSP入门之自定义标签

    第二部分简单讲解:主要讲解el表达式,核心标签库.本章主要讲解:自定义标签库:404页面,505页面,错误页面配置方法 全部代码下载:链接 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素 ...

随机推荐

  1. Mysql 用法

    一转眼,一个星期过去了,来到测试班也一个星期了,今天经历了一次,这是自己这一周的总结,也算对自己这一周的一个交代. 几个比较重要的语句: 查看数据库 show databases; 创建数据库 cre ...

  2. ssh远程登录,禁止root登录

    1,useradd xiaobingpasswd xiaobing (设置密码) 2,禁止root登陆,修改 /etc/ssh/sshd_configPermitRootLogin yes 改为 Pe ...

  3. 【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画

    上一篇烂文中,老周给大伙伴们介绍过了几个比较好玩的动画.本篇咱们深化主题,说一说基于表达式的动画.这名字好理解,就是你可以用公式 / 等式来产生动画的目标值.比如,你想让某个可视化对象的高度减半,你的 ...

  4. python 多线程批量传文件

    #!/usr/bin/env python #_*_ coding:utf-8 -*-#autho:leiyong#time:2017-06-05#version: 1.3 import parami ...

  5. TFBOY 养成记 一些比较好多文章。

    API解释中文版(简书文章,没事看看): http://www.jianshu.com/p/e3a79eac554f Tensorlfow op辨异:tf.add()与tf.nn.bias_add() ...

  6. java虚拟机概述

    java 虚拟机是什么?       java虚拟机是一个将字节码指令映射为对应物理操作系统指令的程序.       java程序的运行需要事先安装 jdk,而在jdk内部的jre中其核心就是 jvm ...

  7. npm模块管理器入门

    什么是 NPM npm 是 Node 官方提供的包管理工具,他已经成了 Node 包的标准发布平台,用于 Node 包的发布.传播.依赖控制.npm 提供了命令行工具,使你可以方便地下载.安装.升级. ...

  8. 超级有用的Vim命令

    你是否曾经烦恼,每次编辑vim文件,想要跳到一行结尾,需要按多次右键,每次想找到某个字符的位置,都得用肉眼去观察,每次想跳到文件结尾,都要按多次向下键.现在,你不必担心这些繁杂的过程,因为我们完全可以 ...

  9. 逆波兰表达式POJ——2694

    问题描述: 逆波兰表达式是一种吧运算符前置的算术表达式,例如普通的表达式2+3的逆波兰表示为+23.逆波兰表达式的优点是运算符之间不必有优先级的关系,也不必有括号改变运算次序,例如(2+3)*4的逆波 ...

  10. 如何清除PHP中不需要的Layout模板

    最简单的办法就是在需要清除的静态页的最前端加上   {__NOLAYOUT__}  就可以清除所有的layout效果, 继而设置自己的css.js效果.