SpringMVC知識一

一、MultipartFile上傳文件
1.配置文件

<!-- 配置MultipartResolver 用於文件上傳 使用spring的CommosMultipartResolver -->  
<bean id="multipartResolver"
<span style="white-space:pre">		</span>class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<span style="white-space:pre">		</span><property name="defaultEncoding">
<span style="white-space:pre">			</span><value>UTF-8</value>
<span style="white-space:pre">		</span></property>
<span style="white-space:pre">		</span><property name="maxUploadSize">
<span style="white-space:pre">			</span><!-- 上傳文件大小限制爲31M,31*1024*1024 -->
<span style="white-space:pre">			</span><value>32505856</value>
<span style="white-space:pre">		</span></property>
<span style="white-space:pre">		</span><property name="maxInMemorySize">
<span style="white-space:pre">			</span><value>4096</value>
<span style="white-space:pre">		</span></property><pre name="code" class="java"><span>		</span><property name="uploadTempDir">
<span>			</span><value>fileUpload/temp</value>
<span>		</span></property>

</bean>


defaultEncoding:請求的編碼格式,默認爲ios-8859-1

maxUploadSize:上傳文件的大小,單位爲byte

uploadTempDir:上傳文件的臨時路徑、

2.上傳表單

記得在form標籤中加入enctype="multipart/form-data"表示表單是要處理文件的

3.上傳控制類

//通過Spring的autowired註解獲取spring默認配置的request  
    @Autowired  
    private HttpServletRequest request;  
  
    /*** 
     * 上傳文件 用@RequestParam註解來指定表單上的file爲MultipartFile 
     *  
     * @param file 
     * @return 
     */  
    @RequestMapping("fileUpload")  
    public String fileUpload(@RequestParam("file") MultipartFile file) {  
        // 判斷文件是否爲空  
        if (!file.isEmpty()) {  
            try {
<span style="white-space:pre">		</span>String fileName = file.getOriginalFilename();  
        <span style="white-space:pre">	</span>//path爲String,即用戶想指定的保存路徑
        <span style="white-space:pre">	</span>File targetFile = new File(path, fileName);  
        <span style="white-space:pre">	</span>if(!targetFile.exists()){  
            <span style="white-space:pre">		</span>targetFile.mkdirs();  
        <span style="white-space:pre">	</span>}  

            <span style="white-space:pre">	</span>file.transferTo(targetFile);  
                // 第二種方式:文件保存路徑  
                //String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"  
                        + file.getOriginalFilename();  
                // 轉存文件  
                //file.transferTo(new File(filePath));  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
        // 重定向  
        return "redirect:/list.html";  
    }  
  
    /*** 
     * 讀取上傳文件中得所有文件並返回 
     *  
     * @return 
     */  
    @RequestMapping("list")  
    public ModelAndView list() {  
        String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/";  
        ModelAndView mav = new ModelAndView("list");  
        File uploadDest = new File(filePath);  
        String[] fileNames = uploadDest.list();  
        for (int i = 0; i < fileNames.length; i++) {  
            //打印出文件名  
            System.out.println(fileNames[i]);  
        }  
        return mav;  
    }  

4.常用方法

String getContenType():獲取文件MIME類型

InputStream getInputStream():獲取文件流

String getName():獲取表單中文件組件的名字

String getOriginalFileName():獲取上傳文件的原名

long getSize():獲取文件字節大小,單位byte

boolean isEmpty():是否爲空

void transferTo(File dest):保存到一個目標中

二、@RequestMapping

參考:http://blog.csdn.net/kobejayandy/article/details/12690041

1.簡介

RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作爲父路徑。

2.有六個屬性:

1)value、method

value:指定請求的實際地址,指定的地址可以是URI Template模式

method:指定請求的method類型,GET、POST、PUT、DELETE等

value的uri值可爲以下三類:

A)普通的具體值;

@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map add(SysMenu obj){
	Map map=new HashMap();
	return map;
}

B)含有某變量的一類值;

  1. @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)  
  2. public String findOwner(@PathVariable String ownerId, Model model) {  
  3.   Owner owner = ownerService.findOwner(ownerId);    
  4.   model.addAttribute("owner", owner);    
  5.   return "displayOwner";   
  6. }  

C)含有正則表達式的一類值;

  1. @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")  
  2.   public void handle(@PathVariable String version, @PathVariable String extension) {      
  3.     // ...  
  4.   }  

2)consumes、produces、params、headers



發佈了276 篇原創文章 · 獲贊 2 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章