jsp&ajax乱码解决-1

        系统中是一个用开源框架做的系统,其中包括一部分ajax调用.即大部分是以.do的方式调用的后台action,而其中一部分又是以.do方式调用的后台ajax程序.两个都是调用.do的方式进行,所以后台基本的程序代码都差不多.惟一不同的就是非ajax调用时,返回的是modelAndView对象模型,将返回对象注入到request.attribute中,而ajax调用时,则是将需要返回的值由response.writer写回客户端.
        程序中采用的编码为GBK,而不是通用的utf-8编码,ajax使用是prototype.js,使用tomcat6进行开发.所以就要在一些问题上对编码进行处理.
        在处理jsp的乱码问题上,分两步方式进行.get方式采用在tomcat的server.xml中加入URIEncoding=GBK设置,使其查询编码为GBK,并使之支持中文参数.而post方式呢,采用的是经典的tomcat setCharacterFilter进行处理.主要编码如下:
import javax.servlet.*;
import java.io.IOException;

public class SetCharacterEncodingFilter
		implements Filter{

	protected String encoding = null;
	protected FilterConfig filterConfig = null;
	public void destroy() {
		this.encoding = null;
		this.filterConfig = null;
	}
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		/** Conditionally select and set the character encoding to be used */
		if(ignore || (request.getCharacterEncoding() == null)) {
			String encoding = selectEncoding(request);
			if(encoding != null) {
				request.setCharacterEncoding(encoding);
			}
		}
		/** Pass control on to the next filter */
		chain.doFilter(request, response);
	}
	public void init(FilterConfig filterConfig) throws ServletException {

		this.filterConfig = filterConfig;
		this.encoding = filterConfig.getInitParameter("encoding");
		String value = filterConfig.getInitParameter("ignore");
		this.ignore = value == null || value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes");
	}
	protected String selectEncoding(ServletRequest request) {
		return this.encoding;
	}
}

 

这样在web.xml中加入此filter,并设置ignore为true和encoding为GBK.
       本来以为事情就这样完了,不想在进行ajax调用时,就出现问题了.ajax里面也分两种方式,一种是get,一种是post.其中以get方式进行调用时,是没有问题的.参数被正确地传递到action中,而以post方式进行调用时,麻烦就出来了,action中的中文参数全部成了乱码.在网上查了一下,ajax的post请求是以utf-8进行编码的,当用filter进行过滤时,自然就成了乱码了.由于在系统中的ajax调用是经过封装的,采用的方式是以post进行调用,且参数也多,可能查询的参数也不是get所能传递的,个人也不太欣赏get方式进行ajax调用.所以就不想修改现有的ajax调用方式,坚决用post方式.
      接下来就想从这个filter中下手,只要接受到ajax请求时,不再进行编码操作,而是以默认的utf-8进行编码.由于我写的ajax调用里面有个特殊的参数为ajax=true这个查询字符串.就想到了用拦截串这个东东,将ajax请求的编码再转换为utf-8编码.所以就写了如下的一个拦截器,进行编码转换.

public class Xx extends AbstractInterceptor{
	@SuppressWarnings("unchecked")
	public String intercept(ActionInvocation actionInvocation) throws Exception {
		Map paramMap = actionInvocation.getInvocationContext().getParameters();
		if(paramMap.get("ajax") != null) {
			for(Object key : paramMap.keySet()) {
				if(key instanceof String) {
					String value = (String) paramMap.get(key);
					paramMap.put(key, new String(value.getBytes("GBK"), "UTF-8"));
				}
			}
		}
		return actionInvocation.invoke();
	}
}

 

        这样一来,凡是碰到有ajax调用的地方,都会进行一次转换,将已经乱码的参数转换成正确的参数.且不需要对其他地方进行发动,惟一需要的就是在action的配置上,在有ajax调用的action上加一个转换拦截器.不过这样感觉不是很好,每次ajax调用都要进行一次编码转换,能不能不进行编码转换呢.
       这就是下一个问题了,setCharacterFilter深入.
YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

JSP环境下的Ajax乱码问题解决方法

AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数   function uniencode(text)    {        text = escape(text.toString()).replace(/\+/g, "%2B");        var matches = t...

174

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

JSP页面Ajax发送请求与乱码解决

JSP页面内容(前台代码): .error {     color: red;     font-size: 14px; } .normal{ color:green; font-size:14px } function matchBookname() {     var bookname = $('#textbookname').val().tri

曦微顾逸轩 854

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

jsp页面接收ajax请求参数乱码问题,AJAX 中文参数 乱码问题

AJAX中文问题分为两大类:1)发送路径中的参数有中文,在服务器段接收参数值是乱码例如:var url="a.jsp?name=小李";xmlHTTP.open ("post",url,true);解决办法:利用javascript的提供的escape()或encodeURI()方法例如:客户端:var url="a.jsp?name=小李";url=encodeURI(url);url=enco...

weixin_39926042的博客 665

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

jsp&ajax乱码处理-2

      刚才前一篇已经讲了处理乱码的一种方法,我并不想单独用拦截器的方式来处理,那样每一个action就要加一个interceptor,且对每个都要重新转码一次.于是就想从filter入手来解决,让他本身就以utf-8的方式从客户端一直到action.在先前的setCharacterFilter里面,看到这样一个东西.if(ignore || (request.getCharacterEnco...

Fly_m的专栏 192

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区运营负责人如何利用平台实现企业创新需求的精准分析与服务推送?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

高校技术转移办公室人员在推动成果转化落地过程中,如何实现科技成果的高效推介与价值评估?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

PSIM-三相维也纳VIENNA整流器电压电流双闭环+中点电位平衡SVPWM控制仿真

内容概要:本文档详细介绍了一种基于PSIM软件实现的三相维也纳(VIENNA)整流器仿真模型,重点实现了电压电流双闭环控制与中点电位平衡的SVPWM调制策略。该仿真系统通过精确的控制算法有效提升了整流器的功率因数,降低了输入电流谐波含量,并解决了三电平拓扑中常见的直流侧中点电位偏移问题,具有较高的工程实用价值,适用于高效率、高功率密度的电力电子系统设计与科研验证。文档还整合了丰富的配套资源,涵盖多种电力电子变换器拓扑结构、先进控制算法及典型应用场景,形成了系统化的技术资料体系,有助于深入理解现代整流技术的核心原理与发展动态。; 适合人群:面向从事电力电子、电气工程、新能源变换系统等领域的科研人员、高校研究生以及具备一定仿真基础的工程技术人员。; 使用场景及目标:①深入研究三相VIENNA整流器的工作机理与控制特性;②掌握电压外环、电流内环双闭环控制结构的设计方法;③理解并实现SVPWM调制技术与中点电位平衡控制策略的协同作用;④开展相关控制算法的仿真验证、性能优化与实验对比,为高性能整流装置的研发提供理论支撑和技术原型。; 阅读建议:建议结合文中列出的其他仿真案例(如PWM整流器、LLC谐振变换器、DAB变换器等)进行横向对比学习,充分利用所提供的PSIM、MATLAB/Simulink等多平台仿真资源,重点关注控制逻辑与主电路的耦合关系,通过参数调试与波形分析深化对系统动态响应和稳态性能的理解,强化“理论—建模—仿真—优化”的闭环研究能力。

产业园区运营负责人如何利用数智工具提升园区企业的技术对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何通过数智工具提升技术需求挖掘的精准度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ICD10 openGauss版

ICD10 openGauss版

上一篇: 对speedframework框架的修改和运用
下一篇: jsp&ajax乱码处理-2
Fly_m
博客等级 码龄20年 40粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值