`

jsp页面超链接传中文终极解决办法-自定义标签

阅读更多

在做web前端页面的时候,经常碰到传中文问题。网上有许多方案,但仍不能根治,最终要用js或者java的encode相关方法。

常规方案有三部:

1.改tomcat的server.xml中URIEncodeing为utf-8

2.页面中编码设置为utf-8

3.整个项目编码使用utf-8

 

我这样处理后,在火狐下,不会出现乱码,但IE中奇数个中文时仍有乱码。不过可以通过在页面中用URLEncoder.encode()方法解决,但如果在jsp页面里用<%=java.net.URLEncoder.encode(request.getAttribute('xxx'))%>又显得繁琐且不美观。

 

索性自己写个自定义标签来处理

使用此方法就不会再出现IE奇数个汉字成乱码的问题了,不多说,上代码

 

 

EncodeTag.java

 

package mypackage.util;

import java.io.IOException;
import java.net.URLEncoder;

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

import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;

public class EncodeTag extends TagSupport {
	private Object key;//自定义标签的key属性

	public void setKey(Object key) throws JspException {
		this.key=ExpressionEvaluatorManager.evaluate("key", key.toString(), Object.class, this, pageContext);

	}
	public int doEndTag() {
		try {// 使用JspWriter获得JSP的输出对象
			JspWriter jspWriterOutput = pageContext.getOut();
			jspWriterOutput.write(URLEncoder.encode(key.toString(),"utf-8"));
		} catch (IOException ioEx) {
			System.out.println("IOException in HelloTag " + ioEx);
		}
		return EVAL_PAGE;
	}
	

}

 

encode.tld(此文件需放在你的web项目的src目录下)

 

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">

	<description>JSTL 1.1 core library</description>
	<display-name>JSTL core</display-name>
	<tlib-version>1.1</tlib-version>

	<short-name>en</short-name>

	<uri>http://www.xxx.org/util/url/encode</uri>

	<tag>

		<name>urlEncode</name>

		<tag-class>mypackage.util.EncodeTag</tag-class>

		<body-content>empty</body-content>

		<attribute>

			<name>key</name>			
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Object</type>
		</attribute>

	</tag>

</taglib>

 

在jsp中头部引入

 

<%@ taglib uri="http://www.xxx.org/util/url/encode" prefix="en"  %> 

 

在jsp中使用

<a href="xxx/xxx.do?key=<en:urlEncode key="${obj.key}"/>">xxxx</a></div>
							
分享到:
评论
1 楼 web_promise 2013-12-18  
<a href="xxx/xxx.do?key=<en:urlEncode key="${obj.key}"/>">xxxx</a></div>   这么模式连接中不能进行编码 直接在页面中使用 <en:urlEncode key="${obj.key} 可以编码,还是没能解决问题,求,解答

相关推荐

    JSP20Examples-自定义标签

    3. **JSP页面**:在JSP页面中引入TLD文件,然后就可以像使用标准JSP动作标签一样使用自定义标签了。 **自定义标签的实现步骤** 1. **创建标签处理类**:实现`Tag`接口或`SimpleTag`接口。`Tag`接口适用于需要控制...

    JSP应用开发-自定义标签的使用.pptx

    **JSP自定义标签的使用**是JSP应用开发中的一种高级特性,它允许开发者创建自己的标签库,以更简洁、可复用的方式编写代码,提高程序的可读性和维护性。下面我们将深入探讨自定义标签的相关概念和创建步骤。 **1. ...

    原创-自定义标签库制作

    完成上述步骤后,就可以在JSP页面中使用 `&lt;mytaglib:hello/&gt;` 来调用自定义标签了。这将触发标签处理类中的逻辑,最终在浏览器中显示 “Hello!!!”。 通过以上步骤,我们成功地创建并部署了一个简单的自定义标签库...

    jsp 自定义标签实例

    3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`&lt;jsp:taglib&gt;`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`&lt;myTag:myTag attribute1="value1" attribute2="value2"&gt;`。 在给定...

    jsp2.0 自定义标签和自定标签函数

    在JSP页面中,通过`指令`引入自定义标签库,并使用`&lt;tag-name&gt;属性...&lt;/tag-name&gt;`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL...

    Struts2分页-自定义标签-类似百度分页

    在实际项目中,`TagDemo`可能是一个包含自定义标签示例的目录或文件,其中可能有JSP页面、标签处理类、标签库定义文件等相关组件。通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页...

    jsp 自定义标签的使用

    3. **在JSP页面中使用**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...

    JSP自定义标签学习笔记

    在JSP(JavaServer Pages)开发中,自定义标签是一种扩展JSP功能的强大工具,它允许开发者创建可重用的代码组件,以提高代码的可读性和可维护性。本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际...

    jsp权限控制,jsp自定义标签实现

    使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...

    由浅到深详细讲解JSP自定义标签

    JSP(JavaServer Pages)自定义标签是JSP技术中一个重要的特性,允许开发者创建可重用的、自定义的组件,从而提高代码的可读性和可维护性。本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用...

    JSP自定义标签之日期显示

    在Java服务器页面(JSP)开发中,自定义标签是一种扩展JSP功能的强大方式,它允许我们封装复杂的逻辑或重复使用的代码片段,提高代码的可读性和可维护性。本篇将深入探讨“JSP自定义标签之日期显示”,以及如何通过...

    JSP GridView --使用自定义标签实现ASP.NET的控件

    总之,通过自定义标签实现JSP GridView是一种有效的解决策略,它允许开发者在JSP环境中复用ASP.NET GridView的高级功能,同时也展示了JSP的灵活性和可扩展性。如果你对自定义JSP标签或数据展示组件感兴趣,这个博客...

    JSP自定义标签实例与详细讲解

    在JavaServer Pages (JSP) 技术中,自定义标签是实现页面逻辑和视图分离的一种重要方式,它允许开发者创建可重用的组件,提高代码的可维护性和复用性。本教程将深入探讨JSP自定义标签的实例与详细讲解。 一、JSP...

    jsp-config标签使用详解

    - `&lt;taglib&gt;`元素定义了标签库的URI以及前缀,这使得开发者可以在JSP页面中引用自定义标签库中的标签。 - 例如: ```xml &lt;taglib-uri&gt;/WEB-INF/mytags.tld&lt;/taglib-uri&gt; &lt;taglib-location&gt;/WEB-INF/mytags....

    jsp页面自定义标签的实现

    为了提高代码的可维护性和可重用性,我们可以使用自定义标签(Custom Tags),这正是"jsp页面自定义标签的实现"这一主题的核心。自定义标签允许开发者封装复杂的HTML或者Java代码,使其成为易于复用的组件,进而降低...

    jsp页面自定义标签Tag

    **JSP页面自定义标签(Tag)详解** 在Java服务器页面(JSP)技术中,自定义标签(Custom Tag)是提升代码复用性和可维护性的重要手段。它允许开发者创建自己的HTML标签来封装复杂的Java逻辑,使得页面更加清晰、易...

    jsp自定义标签报错的问题

    在使用JSP自定义标签时,开发者可能会遇到一些报错问题,这通常涉及到项目结构、类路径设置或自定义标签的编译与打包方式。在本文中,我们将深入探讨这些问题,以及如何解决“JspException”这个特定异常。 首先,...

    JSP自定义标签 无限级树-支持各节点图标自定义

    在JSP中,自定义标签是开发者为了简化页面逻辑、提高代码复用性而创建的特殊标签。它们通常封装了复杂的Java代码,使得HTML页面的编写更加简洁易懂。自定义标签的实现基于JSP标签库(Tag Library),通过TLD(Tag ...

    jsp自定义标签例子,能在Tomcat下直接运行

    当JSP页面解析到自定义标签时,会调用这些类中的方法来执行相应的逻辑。 3. **在JSP页面中使用自定义标签** 在JSP页面中,可以像使用HTML标签一样使用自定义标签,只需在开始和结束位置加上定义好的标签名称,并...

    jsp的自定义标签

    3. **使用标签**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入标签库,并使用`&lt;tag-name&gt;`的形式调用自定义标签。 自定义标签的实现有两种方式: - **简单标签(Simple Tag)**:适用于标签处理逻辑相对简单的场景...

Global site tag (gtag.js) - Google Analytics