Spring 弹簧-@控制器建议使用
我有上传图像的要求。这里涉及两件事: 1.将映像推送到映像服务器 2.将图像数据保存到数据库 此映像推送逻辑是通用的,在所有控制器中都有引用。我只想在一个拦截器中使用带有@ControllerAdvice的单独控制器来维护这个映像推送逻辑 在委托给相关控制器之前,请求处理带有@ControllerAdvice类注释的推送逻辑,然后将结果数据传递给相关控制器Spring 弹簧-@控制器建议使用,spring,spring-mvc,Spring,Spring Mvc,我有上传图像的要求。这里涉及两件事: 1.将映像推送到映像服务器 2.将图像数据保存到数据库 此映像推送逻辑是通用的,在所有控制器中都有引用。我只想在一个拦截器中使用带有@ControllerAdvice的单独控制器来维护这个映像推送逻辑 在委托给相关控制器之前,请求处理带有@ControllerAdvice类注释的推送逻辑,然后将结果数据传递给相关控制器 在此方面的任何帮助都将不胜感激。拦截器是您正在寻找的 看看这个例子: @Configuration @EnableWebMvc @Compo
在此方面的任何帮助都将不胜感激。拦截器是您正在寻找的 看看这个例子:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="myapp.server.controller")
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ImageUploadInterceptor());
}
}
现在我们定义拦截器:
@Component
public class ImageUploadInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//Upload image here
return true;
}
}
这能满足您的需要吗?现在我的代码如下所示
@Controller
public class StoreController{
@Autowired services..
@RequestMapping("/store/image")
public ModelAndView saveStoreImage(@ModelAttribute("imageUpload") final ImageUpload,BindingResult){
//现在,首先将推送映像推送到content server
使用ProcessBuilder调用.sh文件。它将返回状态代码0(0表示已成功将图像上载到静态图像服务器)
//现在创建真实图像obj
final Image image = new Image(); // Image is my own domain
image.setEntityId(storeId);
image.setImageUri("/images/testImage.png");
imageService.save(image);
//此图像uri是我们之前推送的具有名称的图像路径
//现在创建一个服务,将图像保存到数据库中
}
}
上述代码在所有控制器中重复
@控制器
公共类耦合控制器{
@Autowired Services....
@ReqMapping("/coupon/image")
public ModelAndView saveCouponImage((@ModelAttribute("imageUplod") final ImageUpload,BindingResult){
// same push logic like above executing sh file..is common always
//and then create Image and populate data save into DB
}
}
现在,我想用@ControllerAdvice维护一个类的公共图像上传(push)逻辑,并将图像数据传递给相关的控制器
谢谢,
Syamala.什么是“图像推送逻辑”?接收图像就像为控制器方法定义参数一样简单。您面临的问题是什么?您尝试过什么吗?