程序员社区

【校园商铺SSM-9】店铺注册--Controller层的实现

1. 封装HttpServletRequest工具类

Controller层与View层密不可分,需要接受View层传递过来的信息,我们使用SSM框架的话,传递的请求信息都存在HttpServletRequest中。 因此需要先封装一个工具类来获取HttPServletRequest中的值。

import javax.servlet.http.HttpServletRequest;

//将前端传来的String值解析为相应的值,因为前端无论什么类型都传String
public class HttpServletRequestUtil {//通过前端传来的key值进行转换,这个key值通过前端设定好,我们后台直接去取出

    public static int getInt(HttpServletRequest request, String key) {//操作前端传来的int值
        try {
            return Integer.decode(request.getParameter(key));
        } catch (Exception e) {
            return -1;
        }
    }

    public static Long getLong(HttpServletRequest request, String key) {//操作前端传来的Long值
        try {
            return Long.valueOf(request.getParameter(key));
        } catch (Exception e) {
            return -1L;
        }

    }

    public static Double getDouble(HttpServletRequest request, String key) {//操作前端传来的double值
        try {
            return Double.valueOf(request.getParameter(key));
        } catch (Exception e) {
            return -1d;
        }

    }

    public static Boolean getBoolean(HttpServletRequest request, String key) {//操作前端传来的boolean值
        try {
            return Boolean.valueOf(request.getParameter(key));
        } catch (Exception e) {
            return false;
        }

    }

    public static String getString(HttpServletRequest request, String key) {//操作前端传来的Stirng值
        try {
            String result = request.getParameter(key);
            if (request != null) {
                result = result.trim();
            }
            if ("".equals(result)) {//如果字符串为空
                result = null;
            }
            return result;
        } catch (Exception e) {
            return null;
        }
    }
}

2. Contrlloer层的实现

@Controller
@RequestMapping("/shopadmin")
public class ShopManagementController {
    @Autowired
    private ShopCategoryService shopCategoryService;

    @RequestMapping(value="/registshop",method = RequestMethod.POST)
    @ResponseBody
    private Map<String,Object> registerShop(HttpServletRequest request){
        Map<String,Object>  modelMap=new HashMap<String,Object>();
        //1.接受转换相应的参数,包括店铺信息和店铺图片信息
        String shopStr = HttpServletRequestUtil.getString(request,"shopStr");//通过转换工具类将前端传来的数据转为字符串
        ObjectMapper mapper=new ObjectMapper();//获取处理json的对象
        //定义一个Shop实体类来接收起前端传来的信息
        Shop shop=null;
        try{
            shop=mapper.readValue(shopStr,Shop.class);//将传入的shopStr转为Shop对象并完成赋值
        }catch (Exception e){//出错后输出错误信息
            modelMap.put("success",false);
            modelMap.put("errMsg",e.getMessage());
            return modelMap;
        }
        /*
         * 操作添加图片
         * */
        CommonsMultipartFile shopImg=null;//spring自带
        CommonsMultipartResolver commonsMultipartResolver=new CommonsMultipartResolver(
                request.getSession().getServletContext()
        );//解析request传来的文件的,通过本次会话的上下文获取相关文件上传的内容
        if (commonsMultipartResolver.isMultipart((request))) {//如果有上传的文件流
            MultipartHttpServletRequest multipartHttpServletRequest= (MultipartHttpServletRequest) request;//这样就能提取出request中的文件流了
            shopImg=(CommonsMultipartFile)multipartHttpServletRequest.getFile("shopImg");//(这个字符串"shopImg"是前端传来的),得到文件
        }else {//如果不具备图片
            modelMap.put("success",false);
            modelMap.put("errMsg","上传图片不能为空");
            return modelMap;
        }
        // 2.注册店铺
        if (shop!=null&&shopImg!=null) {//如果接受完相应的参数
            PersonInfo owner=new PersonInfo();//owner的信息可以通过session获取
            owner.setUserId(2L);//先手动设置,后期更改
            shop.setOwner(owner);
            ShopExecution shopExecution= null;//不能直接传文件,因为CommonsMultipartFile和File不能直接转换
            try {
                shopExecution = shopService.addShop(shop,shopImg.getInputStream(),shopImg.getOriginalFilename());
                if (shopExecution.getState()== ShopStateEnum.CHECK.getState()){//如果操作成功
                    modelMap.put("success",true);
                }else {
                    modelMap.put("success",false);
                    modelMap.put("errMsg",shopExecution.getStateInfo());
                    return modelMap;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return modelMap;
        }else{
            modelMap.put("success",false);
            modelMap.put("errMsg","请输入店铺信息");
            return modelMap;
        }
    }
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【校园商铺SSM-9】店铺注册--Controller层的实现

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区