jsp超链接到java文件,jsp页面超链接传中文终极解决办法
在做web前端頁(yè)面的時(shí)候,經(jīng)常碰到傳中文問(wèn)題。網(wǎng)上有許多方案,但仍不能根治,最終要用js或者java的encode相關(guān)方法。
常規(guī)方案有三部:
1.改tomcat的server.xml中URIEncodeing為utf-8
2.頁(yè)面中編碼設(shè)置為utf-8
3.整個(gè)項(xiàng)目編碼使用utf-8
我這樣處理后,在火狐下,不會(huì)出現(xiàn)亂碼,但I(xiàn)E中奇數(shù)個(gè)中文時(shí)仍有亂碼。不過(guò)可以通過(guò)在頁(yè)面中用URLEncoder.encode()方法解決,但如果在jsp頁(yè)面里用又顯得繁瑣且不美觀。
索性自己寫(xiě)個(gè)自定義標(biāo)簽來(lái)處理
使用此方法就不會(huì)再出現(xiàn)IE奇數(shù)個(gè)漢字成亂碼的問(wèn)題了,不多說(shuō),上代碼
EncodeTag.java
Java代碼 packagemypackage.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;//自定義標(biāo)簽的key屬性
publicvoidsetKey(Object?key)throwsJspException?{
this.key=ExpressionEvaluatorManager.evaluate("key",?key.toString(),?Object.class,this,?pageContext);
}
publicintdoEndTag()?{
try{//?使用JspWriter獲得JSP的輸出對(duì)象
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項(xiàng)目的src目錄下)
Xml代碼 <?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代碼
在jsp中使用
Java代碼 ">xxxx
總結(jié)
以上是生活随笔為你收集整理的jsp超链接到java文件,jsp页面超链接传中文终极解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python图像等比例压缩_python
- 下一篇: 高通骁龙cpu排行_骁龙系列处理器性能分