首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

XML、HTML、URL特殊字符的处置

2012-09-10 
XML、HTML、URL特殊字符的处理不完全代码 form表单提交时,调用一个js函数将需要特殊处理的字段使用encodeURI

XML、HTML、URL特殊字符的处理
不完全代码

form表单提交时,调用一个js函数将需要特殊处理的字段使用encodeURIComponent()方法进行编码。

<html>    <form name="instantMgrSendForm" action="<%=path + jspCtxSer.getRequestServletUrl()%>" method="post" onsubmit="return validate()">        <%=jspCtxSer.getRequiredHtmlHiddenFields(null,"sendInstantMgrFlow")%>        <textarea id="body" name="body" style="width: 300px; height: 80px">        </textarea>        <input id="submit" value="发送" type="submit" />    </form></html>

<script language="JavaScript" src="<%=path%>js/jquery.js"></script><script language="javascript">function validate(){$('#body').val(encodeURIComponent($('#body').val()));        return true;}</script>

form表单提交后,后续处理交由业务流程sendInstantMgrFlow来处理
业务流程sendInstantMgrFlow是处理一系列操作步骤的集合,在其中加入一步UrlDecodeStep
<?xml version="1.0" encoding="UTF-8"?><SelfDefTransFlow><TransactionFlow id="sendInstantMgrFlow"transFlowContext="sendInstantMgrCtx"refTransTemplate="authCheckTransTemplate"><transStep id="UrlDecodeStep" names="body" enCoding="UTF-8"dest="next" /><transition id="Other" dest="setErrorPageStep" /></transStep><transStep id="sendInstantMgrStep" fromNO="" funcode="SMS001"format="15"dest="next" /><transition id="Other" dest="setErrorPageStep" /></transStep><transStep id="sqlAccessTransStep" serviceName="getSYSData"targetScope="root"><transition id="0" dest="next" /><transition id="Other" dest="setErrorPageStep" /></transStep><transStep id="sendSMSBySocketStep" funcode="SMS001"dest="SetLogForSendInstantMgrStep" /><transition id="Other" dest="setErrorPageStep" /></transStep><transStep id="setSuccessPageStep"/><transStep id="setErrorPageStep"pageName="error.jsp" /><refFormat alias="inputSendMsgFmt" refId="inputSendMsgFmt" /><refFormat alias="outputSendMsgFmt" refId="outputSendMsgFmt" /></TransactionFlow><context id="sendInstantMgrCtx" type="transFlow"><refKColl refId="sendInstantMgrColl" /><refService refId="getSYSData" /></context><kColl id="sendInstantMgrColl"><iColl id="msgIColl"><kColl><field id="funcode" des="功能码" /><field id="id" des="短信渠道自动为每一条新的短信生成,方便查询" /><field id="channel" des="发送请求的渠道应用在短信平台注册的编号" /><field id="type" des="短信类型:100宣传短信,101业务短信" /><field id="prio" des="短信发送优先级 0:普通1:重要2:最高" /><field id="sdate" des="短信的发送开始日期" /><field id="edate" des="短信的最迟发送日期" /><field id="stime" des="短信的发送开始时间" /><field id="etime" des="短信的最迟发送时间" /><field id="to"   des="短信接受人的手机号码(发送给多个手机号码时,号码之间用“,”号分隔)" /><field id="sp" des="接收短信运营商" /><field id="from" des="短信的发送人的手机号码" /><field id="sender" des="短信发送者" /><field id="format" des="信息格式:15为普通短信" /><field id="body" des="短信的内容" /></kColl></iColl></kColl><SQLAccessService id="getSYSData" dbResource="CBIFJDBC"><JDBCSQLStatementexp="select smshost, smsport from sms_sysdataconfig"><ResultMap columnName="smshost" dataName="SMSHost" /><ResultMap columnName="smsport" dataName="SMSPort" /></JDBCSQLStatement></SQLAccessService></SelfDefTransFlow>

/* * @(#)UrlDecodeStep.java      1.0   2011-12-09 * * Copyright (c) 2009 Sunyard System Engineering Co., Ltd. * All rights reserved. * * This software is the confidential and proprietary information of  * Sunyard System Engineering Co., Ltd. ("Confidential Information").   * You shall not disclose such Confidential Information and shall use it  * only in accordance with the terms of the license agreement you entered  * into with Sunyard. */////////////////////////////////////////////////////////////////package com.sunyard.cbif.sms.transSteps;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import com.sunyard.cbif.etp.base.Context;import com.sunyard.cbif.etp.base.ETPConstance;import com.sunyard.cbif.etp.base.ETPObjectNotFoundException;import com.sunyard.cbif.etp.base.TransactionFailException;import com.sunyard.cbif.etp.base.TransactionStep;/** * 用于对页面送过来的经encodeURIComponent()的字段进行解码和 * 特殊字符的半全角转换 * @version 1.0 * @author Aaron *  */public class UrlDecodeStep extends TransactionStep {private static final long serialVersionUID = 1L;private String enCoding = "UTF-8";public UrlDecodeStep() {super();}@Overridepublic int execute(Context context) throws TransactionFailException,Exception {try {enCoding = super.getParamValue("enCoding");String tnames = super.getParamValue("names");String[] names = tnames.split(",");for (int i = 0; i < names.length; ++i) {String value = (String) context.getValueAt(names[i]);if (value != null)if (!value.trim().equals(""))context.getElementAt(names[i]).setValue(Decode(value));elsecontext.getElementAt(names[i]).setValue("");}} catch (ETPObjectNotFoundException e) {ETPConstance.sendMessageToMonitor(e);return 1;} catch (UnsupportedEncodingException er) {ETPConstance.sendMessageToMonitor(er);return 1;}return 0;}/** * 根据enCoding解码 * * @throws UnsupportedEncodingException */private String Decode(String src) throws UnsupportedEncodingException {System.out.println("---UrlDecodeStep-1-解码前的短信内容---〉" + src);src = URLDecoder.decode(src, this.enCoding);System.out.println("---UrlDecodeStep-2-解码后的短信内容---〉" + src);/* 避免打乱xml报文将所有半角的xml标记替换为全角字符 */src = Half_shape_to_Full_shape(src);System.out.println("---UrlDecodeStep-3-替换xml特殊字符为全角字符的短信内容---〉" + src);return src;}/** * 特殊xml、html字符转换为全角字符 */private String Half_shape_to_Full_shape(String src) {src = src.replace('<', '<');src = src.replace('>', '>');src = src.replace('/', '/');src = src.replace('\\', '\');src = src.replace('&', '&');src = src.replace('|', '|');src = src.replace('#', '#');return src;}}

控制台输出
---UrlDecodeStep-1-解码前的短信内容---〉Hello%20World!%E4%BD%A0%E5%A5%BD%EF%BC%81%0D%0A%3Cbr%2F%3E%0D%0A%3Ca%20href%3D%22Hello.Action%3FName%3DAaron%26passwd%3D123456%22%3E%0D%0A%7C%40%7C%23%7C%24%7C%25%7C%5E%7C%26%7C*%7C!%7C-%7C%5C%7C%C2%B7%7C%C2%B7%7CEND---UrlDecodeStep-2-解码后的短信内容---〉Hello World!你好!<br/><a href="Hello.Action?Name=Aaron&passwd=123456">|@|#|$|%|^|&|*|!|-|\|·|·|END---UrlDecodeStep-3-替换xml特殊字符为全角字符的短信内容---〉Hello World!你好!<br/><a href="Hello.Action?Name=Aaron&passwd=123456">|@|#|$|%|^|&|*|!|-|\|·|·|END

热点排行