您的位置:首页 > Web前端 > JavaScript

创建自定义的jsp标签

2016-12-29 17:00 387 查看
创建自定义的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提交后页面如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息