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;
}
}
}