中文乱码 和 验证码验证错误 问题
老师您好,
1. 换到路由路径访问html页面以后,中文就都变成了乱码:
2. 验证码验证错误
1 2 3 4 5 6 7 | // 获取表单里输入的验证码 var verifyCodeActual = $( '#j_captcha' ).val(); if (!verifyCodeActual) { $.toast( '请输入验证码!' ); return ; } formData.append( 'verifyCodeActual' , verifyCodeActual); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 ; } } |
1 2 3 4 5 6 7 8 9 | @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文件中添加一下字符过滤器测试一下:
1 2 3 4 5 6 7 8 9 10 11 12 | < 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积分~
来为老师/同学的回答评分吧