js前台编码,java后台解码,el表达式拼装param中文参数编码

本文介绍了JavaScript前台对中文参数进行编码,以及Java后台如何正确解码这些参数的方法。针对两次编码和一次编码的情况,分别提供了正确的后台解码方案,并展示了EL表达式在分页请求中处理中文参数的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js前台编码:

1.使用两次encode

function query(nameObj,brandnameObj){
  var namevalue = window.encodeURI(window.encodeURI(nameObj.value));
  var brandnamevalue = encodeURI(encodeURI(brandnameObj.value));
  var form = document.forms[0];
  form.action="<html:rewrite action='/product/list.do'/>?sort=&name="+namevalue+"&brandname="+brandnamevalue;
  form.submit();
 }

2.使用一次encode

function query(nameObj,brandnameObj){
  var namevalue = window.encodeURI(nameObj.value);
  var brandnamevalue = encodeURI(brandnameObj.value);
  var form = document.forms[0];
  form.action="<html:rewrite action='/product/list.do'/>?sort=&name="+namevalue+"&brandname="+brandnamevalue;
  form.submit();
 }

java后台解码(对应前台两次编码):

1.死都不知道怎么死的方法:

   if(formbean.getName() != null && !"".equals(formbean.getName())){
    formbean.setName(URLDecoder.decode(formbean.getName(),"UTF-8"));
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+formbean.getName()+"%");
   }

2.正确方法:

if(formbean.getName() != null && !"".equals(formbean.getName())){
    String name= URLDecoder.decode(formbean.getName(),"UTF-8");
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+name+"%");
   }

java后台解码(对应前台一次编码):

   if(formbean.getName() != null && !"".equals(formbean.getName())){
    String name = new String(formbean.getName().getBytes("iso-8859-1"),"UTF-8");
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+name+"%");
   }

el表达式分页param中文请求参数:

function topage(page){
  var form = document.forms[0];
  var namevalue="";
  var brandnamevalue="";
  namevalue = window.encodeURI("${param.name}");
  brandnamevalue = encodeURI("${param.brandname}");
form.action="<html:rewrite action='/product/list.do'/>?sort=<c:if test="${!empty param.sort}">${param.sort}</c:if><c:if test="${!empty param.name}">&name=</c:if>"+namevalue+"<c:if test="${!empty param.brandname}">&brandname=</c:if>"+brandnamevalue;

  form.page.value=page;
  form.submit();
 }

综上:

注意最主要的一点就是java自动会进行一次url转码操作,所以那个不知道怎么死的方法,就是因为转码之后又赋给formbean就已经乱码了。

而用el表达式取出请求参数时,只需要进行一次编码即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值