每次提交验证码都错误

来源:3-5 前后端联调验证整体模块功能

weixin_慕瓜9083905

2020-03-04 11:43:07

http://img.mukewang.com/climg/5e5f2390094584b114580870.jpg



/**

 * 

 */

$(function(){

var initUrl = '/o2o/shopadmin/getshopinitinfo';

var registerShopUrl = '/o2o/shopadmin/registershop';

getShopInitInfo();//从后端拿数据到前端填充到区域和商铺分类

function getShopInitInfo(){

$.getJSON(initUrl,function(data){

if(data.success){

var tempHtml = '';

var tempAreaHtml = '';

data.shopCategoryList.map(function(item,index){

tempHtml += '<option data-id="'+item.shopCategoryId+'">'

+item.shopCategoryName + '</option>';

});

data.areaList.map(function(item,index){

tempAreaHtml+= '<option data-id="'+item.areaId+'">'

+item.areaName+'</option>';

});

$('#shop-category').html(tempHtml);

$('#area').html(tempAreaHtml);

}

});

$('#submit').click(function(){

var shop = {};

shop.shopName = $('#shop-name').val();

shop.shopAddr = $('#shop-addr').val();

shop.phone = $('#shop-phone').val();

shop.shopDesc = $('#shop-desc').val();

shop.shopCategory = {

shpCategoryId:$('#shop-category').find('option').not(function(){

return !this.selected;

}).data('id')

};

shop.area = {

areaId:$('#area').find('option').not(function(){

return !this.selected;

}).data('id')

};

var shopImg = $('#shop-img')[0].files[0];

var formData = new FormData();

formData.append('shopImg',shopImg);

formData.append('shopStr',JSON.stringify(shop));

var verifyCodeActual = $('#j_captcha').val();

if(!verifyCodeActual){

$.toast('请输入验证码!')

return;

}

formData.append('verifyCodeActual',verifyCodeActual);

$.ajax({

url:registerShopUrl,

type:'POST',

data:formData,

contentType:false,

processData:false,

cache:false,

success:function(data){

if(data.success){

//弹出信息

$.toast('提交成功!');

}else{

$.toast('提交事态!'+data.errMsg);

}

$('#captcha_img').click();

}

})

});

}

})



/**

 * 

 */

function changeVerifyCode(img){

img.src="../Kaptcha?"+Math.floor(Math.random()*100);

}




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;

}

}




package com.imooc.o2o.web.shopadmin;


import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.servlet.http.HttpServletRequest;


import org.omg.CORBA.portable.OutputStream;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;


import com.fasterxml.jackson.databind.ObjectMapper;

import com.imooc.o2o.dto.ShopExecution;

import com.imooc.o2o.entity.Area;

import com.imooc.o2o.entity.PersonInfo;

import com.imooc.o2o.entity.Shop;

import com.imooc.o2o.entity.ShopCategory;

import com.imooc.o2o.enums.ShopStateEnum;

import com.imooc.o2o.exceptions.ShopOperationException;

import com.imooc.o2o.service.AreaService;

import com.imooc.o2o.service.ShopCategoryService;

import com.imooc.o2o.service.ShopService;

import com.imooc.o2o.util.CodeUtil;

import com.imooc.o2o.util.HttpServletRequestUtil;

import com.imooc.o2o.util.ImageUtil;

import com.imooc.o2o.util.PathUtil;

@Controller

@RequestMapping("/shopadmin")

public class ShopManagementController {

@Autowired

private ShopService shopService;

@Autowired

private ShopCategoryService shopCategoryService;

@Autowired

private AreaService areaService;

@RequestMapping(value="/getshopinitinfo",method=RequestMethod.GET)

@ResponseBody

private Map<String,Object> getShopInitInfo(){

Map<String,Object> modelMap = new HashMap<String,Object>();

List<ShopCategory> shopCategoryList = new ArrayList<ShopCategory>();

List<Area> areaList = new ArrayList<Area>();

try {

shopCategoryList = shopCategoryService.getShopCategoryList(new ShopCategory());

areaList = areaService.getAreaList();

modelMap.put("shopCategoryList", shopCategoryList);

modelMap.put("areaList", areaList);

modelMap.put("success", true);

}catch(Exception e) {

modelMap.put("success", false);

modelMap.put("errMsg", e.getMessage());

}

return modelMap;

}

@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.接收并转化相应的参数,包括店铺信息以及图片信息

        String shopStr = HttpServletRequestUtil.getString(request, "shopStr");

        ObjectMapper mapper = new ObjectMapper();

        Shop shop = null;

        try {

            shop = mapper.readValue(shopStr, Shop.class);

        } catch (Exception e) {

            modelMap.put("success", false);

            modelMap.put("errMsg", e.getMessage());

            return modelMap;

        }

        CommonsMultipartFile shopImg = null;

        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(

                request.getSession().getServletContext());

        if (commonsMultipartResolver.isMultipart(request)) {

            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;

            shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg");

        } else {

            modelMap.put("success", false);

            modelMap.put("errMsg", "上传图片不能为空");

            return modelMap;

        }

//2.注册店铺

if(shop != null && shopImg !=null) {

PersonInfo owner = new PersonInfo();

//Session TODO

owner.setUserId(1L);

shop.setOwner(owner);

ShopExecution se; 

try{

se = shopService.addShop(shop,shopImg.getInputStream(),shopImg.getOriginalFilename()); 

if(se.getState() == ShopStateEnum.CHECK.getState()) {

modelMap.put("success", true);

}else {

modelMap.put("success", false);

modelMap.put("errMsg",se.getStateInfo());

}

}catch(ShopOperationException e) {

modelMap.put("success", false);

modelMap.put("errMsg",e.getMessage());

}catch(IOException e) {

modelMap.put("success", false);

modelMap.put("errMsg",e.getMessage());

}

return modelMap;

}

else {

modelMap.put("success", false);

modelMap.put("errMsg","请输入店铺信息");

return modelMap;

}

//3.返回结果

}

}


写回答

6回答

好帮手慕柯南

2020-03-05

同学你好!

前台的参数拼写错了,应该是shop

http://img.mukewang.com/climg/5e60ce8f094bb20e05940089.jpg

祝学习愉快~

0
heixin_慕瓜9083905
h 谢谢 可以了
h020-03-05
共1条回复

好帮手慕柯南

2020-03-05

同学你好!

根据你的错误提示应该是你shopCategory实体类中没有shopCategoryld属性

http://img.mukewang.com/climg/5e60ae360976451109200194.jpg

建议你添加一下

http://img.mukewang.com/climg/5e60af16096a27b806380518.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0
heixin_慕瓜9083905
h package com.imooc.o2o.entity; /** * 店铺类别 */ import java.util.Date; public class ShopCategory { private Long shopCategoryId;//店铺id private String shopCategoryName; private String shopCategoryDesc;//描述 private String shopCategoryImg; private Integer priority;//权重 private Date createTime; private Date lastEditTime; private ShopCategory parent;//上级ID public Long getShopCategoryId() { return shopCategoryId; } public void setShopCategoryId(Long shopCategoryId) { this.shopCategoryId = shopCategoryId; } public String getShopCategoryName() { return shopCategoryName; } public void setShopCategoryName(String shopCategoryName) { this.shopCategoryName = shopCategoryName; } public String getShopCategoryDesc() { return shopCategoryDesc; } public void setShopCategoryDesc(String shopCategoryDesc) { this.shopCategoryDesc = shopCategoryDesc; } public String getShopCategoryImg() { 我有啊
h020-03-05
共1条回复

weixin_慕瓜9083905

提问者

2020-03-05

http://img.mukewang.com/climg/5e606aa909a96b1209890487.jpg

提交后网页显示错误代码 然后debug模式只能走到shopStr后面走不了,有值

package com.imooc.o2o.web.shopadmin;


import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.servlet.http.HttpServletRequest;


import org.omg.CORBA.portable.OutputStream;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;


import com.fasterxml.jackson.databind.ObjectMapper;

import com.imooc.o2o.dto.ShopExecution;

import com.imooc.o2o.entity.Area;

import com.imooc.o2o.entity.PersonInfo;

import com.imooc.o2o.entity.Shop;

import com.imooc.o2o.entity.ShopCategory;

import com.imooc.o2o.enums.ShopStateEnum;

import com.imooc.o2o.exceptions.ShopOperationException;

import com.imooc.o2o.service.AreaService;

import com.imooc.o2o.service.ShopCategoryService;

import com.imooc.o2o.service.ShopService;

import com.imooc.o2o.util.CodeUtil;

import com.imooc.o2o.util.HttpServletRequestUtil;

import com.imooc.o2o.util.ImageUtil;

import com.imooc.o2o.util.PathUtil;

@Controller

@RequestMapping("/shopadmin")

public class ShopManagementController {

@Autowired

private ShopService shopService;

@Autowired

private ShopCategoryService shopCategoryService;

@Autowired

private AreaService areaService;

@RequestMapping(value="/getshopinitinfo",method=RequestMethod.GET)

@ResponseBody

private Map<String,Object> getShopInitInfo(){

Map<String,Object> modelMap = new HashMap<String,Object>();

List<ShopCategory> shopCategoryList = new ArrayList<ShopCategory>();

List<Area> areaList = new ArrayList<Area>();

try {

shopCategoryList = shopCategoryService.getShopCategoryList(new ShopCategory());

areaList = areaService.getAreaList();

modelMap.put("shopCategoryList", shopCategoryList);

modelMap.put("areaList", areaList);

modelMap.put("success", true);

}catch(Exception e) {

modelMap.put("success", false);

modelMap.put("errMsg", e.getMessage());

}

return modelMap;

}

@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.接收并转化相应的参数,包括店铺信息以及图片信息

        String shopStr = HttpServletRequestUtil.getString(request, "shopStr");

        ObjectMapper mapper = new ObjectMapper();

        Shop shop = null;

        try {

            shop = mapper.readValue(shopStr, Shop.class);

        } catch (Exception e) {

            modelMap.put("success", false);

            modelMap.put("errMsg", e.getMessage());

            return modelMap;

        }

        CommonsMultipartFile shopImg = null;

        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(

                request.getSession().getServletContext());

        if (commonsMultipartResolver.isMultipart(request)) {

            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;

            shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg");

        } else {

            modelMap.put("success", false);

            modelMap.put("errMsg", "上传图片不能为空");

            return modelMap;

        }

//2.注册店铺

if(shop != null && shopImg !=null) {

PersonInfo owner = new PersonInfo();

//Session TODO

owner.setUserId(1L);

shop.setOwner(owner);

ShopExecution se; 

try{

se = shopService.addShop(shop,shopImg.getInputStream(),shopImg.getOriginalFilename()); 

if(se.getState() == ShopStateEnum.CHECK.getState()) {

modelMap.put("success", true);

}else {

modelMap.put("success", false);

modelMap.put("errMsg",se.getStateInfo());

}

}catch(ShopOperationException e) {

modelMap.put("success", false);

modelMap.put("errMsg",e.getMessage());

}catch(IOException e) {

modelMap.put("success", false);

modelMap.put("errMsg",e.getMessage());

}

return modelMap;

}

else {

modelMap.put("success", false);

modelMap.put("errMsg","请输入店铺信息");

return modelMap;

}

//3.返回结果

}

}



http://img.mukewang.com/climg/5e606b4209c9600b06770264.jpg

0

好帮手慕柯南

2020-03-04

同学你好!

要在spring-web.xml中配置文件上传解析器,否则后台获取不到数据,具体代码

<!-- 文件上传解析器 -->
<bean id="multipartResolver"
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="defaultEncoding" value="utf-8"></property>
 <!-- 1024 * 1024 * 20 = 20M -->
 <property name="maxUploadSize" value="20971520"></property>
 <property name="maxInMemorySize" value="20971520"></property>
</bean>

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0

weixin_慕瓜9083905

提问者

2020-03-04

调试有值 但是还是不行http://img.mukewang.com/climg/5e5f669f094f200807250426.jpg

0

好帮手慕柯南

2020-03-04

同学你好!

这个问题可能的原因:

  1. 在浏览器控制台检查一下数据是否都正确提交了

    http://img.mukewang.com/climg/5e5f52cb0918deee17890600.jpg

  2. 打断点,查看一下后台是否能够获取到验证码seesion中的验证码,以及request的数据是不是下图所示的样子,并检查一下页面的验证码是否获取到了

    http://img.mukewang.com/climg/5e5f530f0933173e06390145.jpg

  3. 配置文件中文件上传的bean是否写错了

    http://img.mukewang.com/climg/5e5f52b8096bd68808040246.jpg

祝学习愉快~

0
heixin_慕瓜9083905
h <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解模式 --> <mvc:annotation-driven /> <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 --> <mvc:resources mapping="/resources/**" location="/resources/" /> <mvc:default-servlet-handler /> <!-- 3.定义视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/html/"></property> <property name="suffix" value=".html"></property> </bean> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.imooc.o2o.web" /> </beans> 我spring-web.xml没有这个文件上传解析器
h020-03-04
共1条回复

0 学习 · 8263 问题

查看课程