JSP页面url传递参数编码问题

本文介绍了如何在前端使用encodeURIComponent对中文参数进行编码,并在后端通过URLDecoder.decode方法进行解码的过程。针对中文参数在网络传输中可能出现的问题,提供了一种有效的解决方案。

在搜索的时候将中文传递到后台,但是地址栏是明文传递,解决办法就是将参数编码。

searchField : function searchField(){
		$("#btn-search").click(function(){
			var searchStr = $("#txt-search").val();
			//alert(searchStr);
			if(searchStr != "")
				document.location.href = document.getElementsByTagName('base')[0].href
					+  "admin/common/field-list"+ "?searchStr=" + encodeURIComponent(encodeURIComponent(searchStr));//使用encodeURIComponent进行编码
else document.location.href = document.getElementsByTagName('base')[0].href + "admin/common/field-list"; }); }

  后台接收时解码:

@RequestMapping(value = "/admin/common/field-list", method = RequestMethod.GET)
	public String fieldListPage(HttpServletRequest request,Model model, @RequestParam(value = "page", required = false, defaultValue = "1") int index,@RequestParam(value="searchStr",required=false,defaultValue="") String searchStr){
		log.info("searchStr"+searchStr);
		try {
			searchStr = java.net.URLDecoder.decode(searchStr, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Page<Field> page = new Page<Field>();
		page.setPageNo(index);
		page.setPageSize(8);
		List<Field> fieldList = new ArrayList<Field>();
		if(null != searchStr && searchStr.length()>0){
			fieldList = questionService.getFieldBySearchStr(searchStr, page);
		}else{
			fieldList = questionService.getAllField(page);
		}
		String pageStr = PagingUtil.getPagelink(index, page.getTotalPage(), "", "admin/common/field-list");
		model.addAttribute("searchContext", searchStr);
		model.addAttribute("fieldList", fieldList);
		model.addAttribute("pageStr", pageStr);
		return "field-list";
	}

  http://www.jb51.net/article/45293.htm

 

java.net.URLDecoder.decode((String)request.getParameter("tcontent"), "UTF-8");

转载于:https://www.cnblogs.com/bobc/p/8308718.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值