:wink: 对于jstl相信都不陌生,但一般的开发者基本没有自己写过,我也是,最近因为项目的需要,所以写了个,简单的功能,第一次原创,希望大家能给点意见
多的不说直接上代码:
package com.nosyman.jstl;
import java.io.UnsupportedEncodingException;
/**
* 对给定字符串进行编码
* @author nosyman
* 交流:48135490
* 邮箱:1950935123@qq.com
*/
public class Base64 {
/**
* 进行base64加密
* @param uri 要进行base64加密的串
* @param encode 编码方式
* @return 新编码的字符串
*/
public static String encode(String src,String encode){
try {
return new String(com.nosyman.security.Base64.encode(src.getBytes(encode))).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
}
package com.nosyman.jstl;
import java.io.UnsupportedEncodingException;
/**
* 对给定字符串进行编码
* @author nosyman
* 交流:48135490
* 邮箱:1950935123@qq.com
*/
public class EncodeURI {
/**
* 更改字符串编码
* @param uri 要进行编码的串
* @param encode 新的编码方式
* @return 新编码的字符串
*/
public static String encodeURI(String uri,String encode){
try {
return java.net.URLEncoder.encode(uri,encode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
}
上面是2个功能的类,下面是tld文件
<?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">
<tlib-version>1.0</tlib-version>
<short-name>nm</short-name>
<uri>http://www.nosyman.com/jstl/functions</uri>
<!-- JSTL自定义函数 获取新的编码内容 -->
<function>
<name>encodeURI</name> <!-- 使用的方法名 -->
<function-class>com.nosyman.jstl.EncodeURI</function-class>
<function-signature>java.lang.String encodeURI(java.lang.String,java.lang.String)</function-signature>
</function>
<function>
<name>base64</name> <!-- 使用的方法名 -->
<function-class>com.nosyman.jstl.Base64</function-class>
<function-signature>java.lang.String encode(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
这样就可以了,简单吧 :wink:
不过要注意在function-signature标签里面,函数声明跟返回类型必须在同一行,否则会抛出org.apache.jasper.JasperException: Invalid syntax for function signature in TLD. Tag Library: xxx, Function: xxx
下面再说说使用方法:
像其他标签一样,先要导入 :
<%@ taglib prefix="nm" uri="http://www.nosyman.com/jstl/functions"%>
在用到的地方:
${nm:encodeURI('家纺','utf-8')}
${nm:base64('家纺','gbk')}这样就可以了
这样就好了。
有同样 功能 的直接下载jar包吧
最后说到短地址,只要按规则把后面的参数只要进行处理就可以了,到后台了重新按照一定的方式还原就可以了
多的不说直接上代码:
package com.nosyman.jstl;
import java.io.UnsupportedEncodingException;
/**
* 对给定字符串进行编码
* @author nosyman
* 交流:48135490
* 邮箱:1950935123@qq.com
*/
public class Base64 {
/**
* 进行base64加密
* @param uri 要进行base64加密的串
* @param encode 编码方式
* @return 新编码的字符串
*/
public static String encode(String src,String encode){
try {
return new String(com.nosyman.security.Base64.encode(src.getBytes(encode))).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
}
package com.nosyman.jstl;
import java.io.UnsupportedEncodingException;
/**
* 对给定字符串进行编码
* @author nosyman
* 交流:48135490
* 邮箱:1950935123@qq.com
*/
public class EncodeURI {
/**
* 更改字符串编码
* @param uri 要进行编码的串
* @param encode 新的编码方式
* @return 新编码的字符串
*/
public static String encodeURI(String uri,String encode){
try {
return java.net.URLEncoder.encode(uri,encode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
}
上面是2个功能的类,下面是tld文件
<?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">
<tlib-version>1.0</tlib-version>
<short-name>nm</short-name>
<uri>http://www.nosyman.com/jstl/functions</uri>
<!-- JSTL自定义函数 获取新的编码内容 -->
<function>
<name>encodeURI</name> <!-- 使用的方法名 -->
<function-class>com.nosyman.jstl.EncodeURI</function-class>
<function-signature>java.lang.String encodeURI(java.lang.String,java.lang.String)</function-signature>
</function>
<function>
<name>base64</name> <!-- 使用的方法名 -->
<function-class>com.nosyman.jstl.Base64</function-class>
<function-signature>java.lang.String encode(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
这样就可以了,简单吧 :wink:
不过要注意在function-signature标签里面,函数声明跟返回类型必须在同一行,否则会抛出org.apache.jasper.JasperException: Invalid syntax for function signature in TLD. Tag Library: xxx, Function: xxx
下面再说说使用方法:
像其他标签一样,先要导入 :
<%@ taglib prefix="nm" uri="http://www.nosyman.com/jstl/functions"%>
在用到的地方:
${nm:encodeURI('家纺','utf-8')}
${nm:base64('家纺','gbk')}这样就可以了
这样就好了。
有同样 功能 的直接下载jar包吧
最后说到短地址,只要按规则把后面的参数只要进行处理就可以了,到后台了重新按照一定的方式还原就可以了