如标题,用户在输入了一串内容后(中文),用POST提交,结果到servlet里面转码时就丢失内容了。servlet里面有写://设置请求编码req.setCharacterEncoding("UTF-8");jsp里面也是有写:用chromeF12查看也可以看到表单有提交内容,就是到servlet里面就丢失了。求帮助部分代码如下:@SuppressWarnings("unchecked")@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{StringBufferresult=newStringBuffer();PrintWriterout=null;Stringmethod=null;try{//设置不创建Sessionreq.getSession(false);//设置响应类型和编码res.setContentType("text/html;charset=UTF-8");//设置请求编码req.setCharacterEncoding("UTF-8");//到这个地方就不可以了map里面就没有值了。。。-_-!~~logger.info("aftermap:"+JsonUtil.toJson(req.getParameterMap()));//声明不缓存res.setHeader("Cache-Control","no-cache");res.setHeader("Expires","Thu,01Nov201210:00:00GMT");res.setHeader("Pragma","no-cache");//获取输出对象out=res.getWriter();//Stringversion=ParamUtil.getParameter(req,"version","2");method=ParamUtil.getParameter(req,"method","");Stringvar=ParamUtil.getParameter(req,"var","").trim();if(!StringUtil.isNullOrBlank(var)){result.append("var");result.append(var);result.append("=");}//请求方法为空if(StringUtil.isNullOrBlank(method)){result.append(JsonUtil.getFailedResponse("-1","请求方法为空!"));out.println(result);return;}//创建请求TwRequestjReq=TwRequest.newInstance();//设置方法jReq.setMethod(method);//设置头部jReq.setHeader("userId",userId);jReq.setHeader("userName",userName);jReq.setHeader("isOnline",isOnline?1:0);jReq.setHeader("userLogin",QingBbsUtil.getUserLogin(req));jReq.setHeader("userIp",ip);jReq.setHeader("userPort",userPort);jReq.setHeader("vKey",CookieUtil.getCookieValue(req.getCookies(),"vk"));Stringreferer=req.getHeader("Referer");booleanisInternal=false;for(Stringinternal:((LinkedHashMap)ConfigUtil.getConfigValue("internal_ip")).get("ip")){if(ip.startsWith(internal))isInternal=true;}//组装参数Stringkey,value;Map.Entryentry;Mapmap=req.getParameterMap();Iteratoriter=map.entrySet().iterator();while(iter.hasNext()){entry=(Map.Entry)iter.next();key=entry.getKey().toString();value=req.getParameter(key);if(key.startsWith("params.")){//设置参数jReq.setParams(key.substring(key.indexOf(".")+1),value);}elseif(key.startsWith("params[")){//设置参数jReq.setParams(key.substring(key.indexOf("[")+1,key.length()-1),value);}}out.print(result);return;}catch(Exceptione){logger.error("处理请求出错!method="+method,e);result.append(JsonUtil.getFailedResponse("-1","处理请求出错!"));out.println(result);return;}finally{if(out!=null){out.close();}}}另外为了确定jsp页面没有问题,我写了一个测试的jsp页面,代码如下:Inserttitlehere另外用户提交的内容里面好像是包含了特殊的字符,我检查了一下可能是特殊字符导致转码出错了,但是没有找到对应的解决方法。
2 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
丢失内容是什么意思。如果的后端Class是用doGet处理请求,会有HTTP错误码提示的。如果是doGet/doPost的问题。可以这样:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}
添加回答
举报
0/150
提交
取消
