jsp超链接到java文件,jsp页面超链接传中文终极解决办法

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

常规方案有三部:

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

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

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

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

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

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

EncodeTag.java

Java代码 33831482_1.pngpackagemypackage.util;

importjava.io.IOException;

importjava.net.URLEncoder;

importjavax.servlet.jsp.JspException;

importjavax.servlet.jsp.JspWriter;

importjavax.servlet.jsp.tagext.TagSupport;

importorg.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;

publicclassEncodeTagextendsTagSupport {

privateObject key;//自定义标签的key属性

publicvoidsetKey(Object key)throwsJspException {

this.key=ExpressionEvaluatorManager.evaluate("key", key.toString(), Object.class,this, pageContext);

}

publicintdoEndTag() {

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);

}

returnEVAL_PAGE;

}

}

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

Xml代码 33831482_1.png<?xmlversion ="1.0"encoding="UTF-8"?>

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">

JSTL 1.1 core library

JSTL core

1.1

en

http://www.xxx.org/util/url/encode

urlEncode

mypackage.util.EncodeTag

empty

key

true

java.lang.Object

在jsp中头部引入

Java代码 33831482_1.png

在jsp中使用

Java代码 33831482_1.png">xxxx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值