随着AJAX的流行。Java世界也开始改变。
出现了大量的AJAX框架。
但是总有一部分人。总有那么一些人。就是TM的喜欢自己实现。
比如,我。
当然。我也用了框架,但是呢,有的时候用自己做的会好一点。
SOSO。但是却有中文乱码问题。因为我服务器端用的是GBK编码。
直接使用JS传参数,服务器取就是null。
于是在JS定义如下:
/**
* 防止乱码的转码
* */
EncodeUtil.encoding = function(str){
str = encodeURI(str);
str = encodeURI(str);
return str;
}
这个是用来对传递的参数值进行转码
如:"myHello.jsp?userName="+userName;
这段代码是在JS中出现的。我需要传递userName到服务器去。
那么在这句之前,我需要做这么一步:
userName = EncodeUtil.encoding(userName);
好了。你可以尝试alert输出一下。
可以看见的是一串你看不懂的东西。
那就对了。
那么在对应的服务器端对应的进行转码。
你可以用java.net.URLDecoder.decode(str,encode);
DEMO:userName = URLDecoder.decode(getUserName,"UTF-8");
getUserName是用request取到的。
因为JS中默认是用的UTF-8编码。所以我们要将这个转换为当前系统的默认编码。
以上是JDK1.4或更高版本可用。
如果是JDK1.3。那么需要自己写一个转换。
如下:
/**
* 将指定字符s转码为enc指定的编码数据
* @param String 要进行转码的字符
* @param String 指定的编码
* @return String 经过转码的字符
* */
public static String decode(String s, String enc) throws UnsupportedEncodingException {
boolean needToChange = false;
StringBuffer sb = new StringBuffer();
int numChars = s.length();
int i = 0;
if (enc.length() == 0) {
throw new UnsupportedEncodingException("URLDecoder: empty string enc parameter");
}//end if
while (i < numChars) {
char c = s.charAt(i);
switch (c) {
case '+':
sb.append(' ');
i++;
needToChange = true;
break;
case '%':
try {
byte[] bytes = new byte[ (numChars - i) / 3];
int pos = 0;
while (( (i + 2) < numChars) && (c == '%')) {
bytes[pos++] = (byte) Integer.parseInt(s.substring(i + 1, i + 3),16);
i += 3;
if (i < numChars) {
c = s.charAt(i);
}
}//end while
if ( (i < numChars) && (c == '%')) {
throw new IllegalArgumentException("URLDecoder: Incomplete trailing escape (%) pattern");
}//end if
sb.append(new String(bytes, 0, pos, enc));
}catch (NumberFormatException e) {
throw new IllegalArgumentException("URLDecoder: Illegal hex characters in escape (%) pattern - " + e.getMessage());
}//end catch
needToChange = true;
break;
default:
sb.append(c);
i++;
break;
}//end switch
}//end while
return (needToChange ? sb.toString() : s);
}//end method[decode]
以上所有方式均为本人从网络中收集整理而成。非原创。
分享到:
相关推荐
NULL 博文链接:https://z-p-h.iteye.com/blog/1529957
frame与frame之间如何用JavaScript传值
javascript和jsp面之间的传值.docx
javascript和jsp页面之间的传值.docx
本源码用jsp/servlet/javascript模拟了网上购物 实现了以下功能: 1.勾选某一货物时动态生成其价格和邮费 2.选择不同邮寄方式时动态生成各自的邮费 3.动态计算总费用 4.购买后显示购买详细信息
本源码用jsp/servlet/javascript模拟实现选班长 众学生排成一圈,依次报数, 事先规定谁第一个报数,报到哪个数字退出队伍(选班长落选) 当某人喊道事先规定的那个数时退出队伍,剩下的依次类推
数据库为SQLServer2000,内附说明。
系统采用技术:Servlet+jsp+mysql+jQuery+bootstrap+面向接口编程 系统管理员: 个人信息管理,课程管理,成绩管理,学生信息管理,教师管理,所有账号管理等。 教师: 个人信息管理,课程管理,成绩管理,...
JSP+CSS+JavaScript+java+servlet+mysql 使用说明 1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导
javascript,css,jsp,servlet各种API集合
在线选课系统:包括学生和老师两种用户,学生可进行选课查询,老师可进行添加课程和查询功能。使用java servlet+jsp+mysql+css+js制作
NULL 博文链接:https://phpxiaoxin.iteye.com/blog/423340
JSP&Servlet&JavaScript&Ajax&jQuery源代码
很多时候都要用jsp利用session进行传值 现在静态网页也可以进行同样的操作。希望能帮到大家。
jsp+javascript+servlet用户登录和注册,发帖
javascript实用代码实例 js 定位 延时 传值 跳转.docx
主要介绍了JavaScript实现在页面间传值的方法,涉及javascript传值的技巧,非常具有实用价值,需要的朋友可以参考下
一个用jsp、servlet写的购物网站,这是我在实训时做的一个项目,包含jsp、servlet、html、css、Javascript、Oracle等技术。包含完整的代码和资源文件,还有一个PPT演示。
配置Eclipse编写HTML/JS/CSS/JSP页面的自动提示。配置文件见我的博客!