写了很多程序,什么都记不住,每次都是看原来的,查百度。这公司能给你多少钱啊。想想心酸。这里讲一下springMVC中文件的上传,和当你使用modelAndView跳转发生的问题,还有 redirect 跳转的问题。
一、文件上传
文件上传,自己分析一下步骤背下来。
1.页面需要form 《method="post" enctype="multipart/form-data"》
2.后台需要MultipartFile 接受 @param(value=“”)可以设置名称
3.file.getOriginalFilename 是获得名称的好办法
4.创建文件 FIle obj = new File();
5.记得判断存不存在 if(!objFile.exists()){ objFile.mkdirs(); }
6.一个file.transferTo(obj) 搞定
原理一定想一想 都是 http 文件头,加上 io流
@RequestMapping("save.do")
public ModelAndView save(Product p,@RequestParam(value="file")MultipartFile file,HttpServletRequest request){
//目标文件带有.jpg后缀
String oriName = file.getOriginalFilename();
//uuid
String name = MyUUID.getUUID();
//拼接成新的名称
String fileName = name+oriName.substring(oriName.lastIndexOf("."));
//上传的物理位置
String path = request.getSession().getServletContext().getRealPath("upload");
//创建文件
File objFile = new File(path,fileName);
try {
//如果不存在,就创建
if(!objFile.exists()){
objFile.mkdirs();
}
//io流写入
file.transferTo(objFile);
//以下保存路径到数据库
p.setTop(fileName);
service.save(p);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new ModelAndView("redirect:/productIns.jsp");
}
附上源码。
二、方法返回视图问题
1.springMVC 到达对象上我们通常有几种办法。一种是modelAndView 。一种是返回string ;还有很多没怎么用
不知道你遇没遇到过
你请求的地址是 : a.do
返回的地址就是:a.jsp
你modelAndView 写的是(b.jsp) 这是因为你的包导错了。
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.portle.ModelAndView;
crtl+alt+o 坑死人啊
2.j2ee学过 ,两种返回的方法 forward 和 redirect
注意:你在spring-servlet.xml 中配置的 前后缀。在 redirect中是不好使的。
3.还有一个问题
比如你请求 pro/a.do
返回后 pro/a.jsp
可是你想要 a.jsp 怎么办
很简单,绝对路径,相对路径问题。 在 modelAndView("/a.jsp")
注意“/”