中文乱码 和 验证码验证错误 问题
老师您好,
1. 换到路由路径访问html页面以后,中文就都变成了乱码:
2. 验证码验证错误
// 获取表单里输入的验证码 var verifyCodeActual = $('#j_captcha').val(); if (!verifyCodeActual) { $.toast('请输入验证码!'); return; } formData.append('verifyCodeActual', verifyCodeActual);
package com.imooc.o2o.util; import javax.servlet.http.HttpServletRequest; public class CodeUtil { /** * 检查验证码是否和预期相符 * * @param request * @return */ public static boolean checkVerifyCode(HttpServletRequest request) { String verifyCodeExpected = (String) request.getSession() .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); String verifyCodeActual = HttpServletRequestUtil.getString(request, "verifyCodeActual"); if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) { return false; } return true; } }
@RequestMapping(value = "/registershop",method = RequestMethod.POST) @ResponseBody private Map<String, Object> registerShop(HttpServletRequest request) { Map<String, Object> modelMap = new HashMap<String, Object>(); if (!CodeUtil.checkVerifyCode(request)) { modelMap.put("success", false); modelMap.put("errMsg", "输入了错误的验证码"); return modelMap; }
正在回答 回答被采纳积分+1
同学你好。
1、首先是字符集的问题,鉴于同学说,index页面是显示正常的,但shopoperation页面是乱码。并且,shopoperation页面中,从后台获取的值的中文是没有乱码的。
1)可以猜想两个页面的编码并不一样。同学可以看看自己的shopoperation页面的编码是什么。将其更改为index页面的编码试试:
2)如果不能修改,打开设置,将编码全部改为utf-8,然后重新编译
使用 maven 的 clean install 来重新生成target文件:
2、有关验证码问题:
1)看到同学获取的参数截图,在想同学是否是js中有错误,同学可以检查一下isEdit是否正确:
2)然后使用断点来查看,提交时验证码是否包含其中:
使用F12开发者工具,找到source窗口,找到js文件,点击行号打断点,然后填写好表单,点击提交,即可触发断点,页面会暗下来,会出现悬浮窗,此时将鼠标悬停在存储验证码的位置,可以看到验证码值是否顺利获取,如果没有获取,那么是html或者js有问题,可以检查下id为j_captcha的标签。
祝学习愉快~
同学你好!
乱码问题:
1)建议同学将字符过滤器放在xml的最上面
2)同学查看一下自己所使用的浏览器是什么编码集。更改为utf-8。
验证码问题:
获取到的验证码为NUll:
1)同学先检查前台是否有传值,在Controller中打一个断点,看一下request中验证码是否为NUll:
2)如果不为null,可能是 HttpServletRequestUtil.getString()方法中有问题:
3)如果为null,说明同学的值前台没有传过来。同时同学检查一下前后台的verifyCodeActual是否有拼写错误。确保前台取值、保存值正确。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
同学你好!
同学的html页面是否指定了编码集
如果制定了,可以在xml文件中添加一下字符过滤器测试一下:
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.看同学的代码验证码这里没有问题。这里的验证码区分大大小写。同学是否大小写有误呢。如果还是有问题,建议同学将传到后台以及后台获取到生成的验证码的值。打印输出对比一下。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星