寫了很多程序,什麼都記不住,每次都是看原來的,查百度。這公司能給你多少錢啊。想想心酸。這裏講一下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")
注意“/”