创建自定义的jsp标签

创建自定义的jsp标签

 

创建一个自定义的jsp标签hello,用于输出字符串“helloEveryone”。

hello标签位于一个名为mytaglib的标签库(Tag Library),

hello.jsp使用mytaglib标签库中的hello标签输出“helloeveryone”。

步骤如下:

1、编写用于处理hello标签的类,名为HelloTag类,代码如下:

package com.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class HelloTag extends TagSupport{

	@Override
	public int doEndTag() throws JspException {
		try {
			pageContext.getOut().print("helloEveryone");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return EVAL_PAGE;
	}
}


2、创建一个TLD(Tag Library Descriptor,标签库描述符)文件,名为mytaglib.tld。定义mytaglib标签库和hello标签。这个文件的存放位置为WEB-INF/mytaglib.tld(servlet规范规定,TLD文件在web应用中必须存放在WEB-INF目录或者子目录下,但不能存放在WEB-INF/classes目录和WEB-INF/lib目录下,)。代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.1</tlib-version>
	<jsp-version>2.1</jsp-version>
	<short-name>mytagl</short-name>
	<uri>tagmylib</uri>
	
	<tag>
		<name>hello</name>
		<tag-class>com.tag.HelloTag</tag-class>
		<body-content>empty</body-content>
		<info>Just Say Hello</info>
	</tag>
</taglib>


3、在hello.jsp文件中使用hello标签步骤:

  i.  首先,在hello.jsp中引用mytaglib标签库的taglib标签的指令,代码如下:

<%@ taglib uri="tagmylib" prefix="my"%>

其中uri="tagmylib"为mytagli.tld文件中的<uri>tagmylib</uri>


 ii.然后,使用hello标签,如:<my:hello/>,这里的hello是mytaglib.tld文件中的name,

这个name决定了调用哪个tag-class类中的doEndTag方法输出的内容


二、整个项目的架构图,如下:



图中各个文件的代码分别如下:

1、login.html代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<form action="login" name="loginForm" method="post">
	<table>
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="username"> </td>
		</tr>
		<tr>
			<td>密码:</td>
			<td><input type="password" name="password"> </td>
		</tr>
		<tr>
			<td><input type="submit" name="submit" value="submit"> </td>
			<td><input type="reset" name="reset" value="reset"> </td>
		</tr>
	</table>
</form>

</body>
</html>

2、hello.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="tagmylib" prefix="my" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<b><my:hello/>:<%= request.getAttribute("username") %> </b>

</body>
</html>

3、mytagli.tld代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.1</tlib-version>
	<jsp-version>2.1</jsp-version>
	<short-name>mytagl</short-name>
	<uri>tagmylib</uri>
	
	<tag>
		<name>hello</name>
		<tag-class>com.tag.HelloTag</tag-class>
		<body-content>empty</body-content>
		<info>Just Say Hello</info>
	</tag>
</taglib>

4、DispatcherServlet.java代码如下:

package com.servlet;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

@SuppressWarnings("serial")
public class DispatcherServlet extends GenericServlet {

	String target = "/hello.jsp" ;
	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("username") ;
		String password = request.getParameter("password") ;
		
		request.setAttribute("username", username);
		request.setAttribute("password", password);
		
		ServletContext context = getServletContext() ;
		RequestDispatcher dispatcher = context.getRequestDispatcher(target) ;
		dispatcher.forward(request, response);
	}

}

5、HelloTag.java代码如下:

package com.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class HelloTag extends TagSupport{

	@Override
	public int doEndTag() throws JspException {
		try {
			pageContext.getOut().print("helloEveryone");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return EVAL_PAGE;
	}
}

6、web.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>HelloTag</display-name>
	<welcome-file-list>
		<welcome-file>login.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

	
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>com.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>

</web-app>

启动项目,访问网址:http://localhost:8081/HelloTag/login.html,得到页面如下;


点击submit提交后页面如下:







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值