成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SpringMVC【參數(shù)綁定、數(shù)據(jù)回顯、文件上傳】

Flink_China / 3021人閱讀

摘要:那我們就不用在每一個方法通過將數(shù)據(jù)傳到頁面。還能夠配置該參數(shù)是否是必須的。方法的返回值有種重定向轉(zhuǎn)發(fā)內(nèi)部就是將數(shù)據(jù)綁定到域?qū)ο笾械?。注解能夠?qū)?shù)據(jù)綁定到中也就是中,如果經(jīng)常需要綁定到中的數(shù)據(jù),抽取成方法來使用這個注解還是不錯的。

前言

本文主要講解的知識點如下:

參數(shù)綁定

數(shù)據(jù)回顯

文件上傳

參數(shù)綁定

我們在Controller使用方法參數(shù)接收值,就是把web端的值給接收到Controller中處理,這個過程就叫做參數(shù)綁定...

默認支持的參數(shù)類型

從上面的用法我們可以發(fā)現(xiàn),我們可以使用request對象、Model對象等等,其實是不是可以隨便把參數(shù)寫上去都行???其實并不是的...

Controller方法默認支持的參數(shù)類型有4個,這4個足以支撐我們的日常開發(fā)了

HttpServletRequest

HttpServletResponse

HttpSession

Model

參數(shù)的綁定過程

一般地,我們要用到自定義的參數(shù)綁定就是上面所講的日期類型轉(zhuǎn)換以及一些特殊的需求....對于平常的參數(shù)綁定,我們是無需使用轉(zhuǎn)換器的,SpringMVC就已經(jīng)幫我們干了這個活了...

自定義綁定參數(shù)【老方式、全部Action均可使用】

在上一篇我們已經(jīng)簡單介紹了怎么把字符串轉(zhuǎn)換成日期類型了【使用的是WebDataBinder方式】...其實那是一個比較老的方法,我們可以使用SpringMVC更推薦的方式...

在上次把字符串轉(zhuǎn)換成日期類型,如果使用的是WebDataBinder方式的話,那么該轉(zhuǎn)換僅僅只能在當前Controller使用...如果想要全部的Controller都能夠使用,那么我們可以使用WebBindingInitializer方式

如果想多個controller需要共同注冊相同的屬性編輯器,可以實現(xiàn)PropertyEditorRegistrar接口,并注入webBindingInitializer中。

實現(xiàn)接口

public class CustomPropertyEditor implements PropertyEditorRegistrar {

    @Override
    public void registerCustomEditors(PropertyEditorRegistry binder) {
        binder.registerCustomEditor(Date.class, new CustomDateEditor(
                new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"), true));
        
    }

}
配置轉(zhuǎn)換器

注入到webBindingInitializer中

    
    
    
    
    
    
    
        
         
            
                
            
        
    


    
    
        
        
    

自定義參數(shù)轉(zhuǎn)換器【新方式、推崇方式】

上面的方式是對象較老的,現(xiàn)在我們一般都是實現(xiàn)Converter接口來實現(xiàn)自定義參數(shù)轉(zhuǎn)換...我們就來看看實現(xiàn)Converter比上面有什么好

配置日期轉(zhuǎn)換器

public class CustomDateConverter implements Converter {

    @Override
    public Date convert(String source) {
        try {
            //進行日期轉(zhuǎn)換
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(source);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

配置去除字符串轉(zhuǎn)換器

public class StringTrimConverter implements Converter {

    @Override
    public String convert(String source) {
        try {
            //去掉字符串兩邊空格,如果去除后為空設(shè)置為null
            if(source!=null){
                source = source.trim();
                if(source.equals("")){
                    return null;
                }
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return source;
    }
}

從上面可以得出,我們想要轉(zhuǎn)換什么內(nèi)容,就直接實現(xiàn)接口,該接口又是支持泛型的,閱讀起來就非常方便了...

配置轉(zhuǎn)換器

    
    
        
            
                
                
            
        
    


    
    
        
        
    


    
    
        
        
    


    

如果是基于的話,我們是這樣配置的




    
        
        
            
                
                
            
        
    
@RequestParam注解

我們一般使用的參數(shù)綁定都有遵循的規(guī)則:方法參數(shù)名要與傳遞過來的name屬性名相同。

在默認的情況下,只有名字相同,SpringMVC才會幫我們進行參數(shù)綁定...

如果我們使用@RequestParam注解的話,我們就可以使方法參數(shù)名與傳遞過來的name屬性名不同...

該注解有三個變量

value【指定name屬性的名稱是什么】

required【是否必須要有該參數(shù)】

defaultvalue設(shè)置默認值

例子:我們的方法參數(shù)叫id,而頁面帶過來的name屬性名字叫item_id,一定需要該參數(shù)

public String editItem(@RequestParam(value="item_id",required=true) String id) {

}
Controller方法返回值

Controller方法的返回值其實就幾種類型,我們來總結(jié)一下....

void

String

ModelAndView

redirect重定向

forward轉(zhuǎn)發(fā)

數(shù)據(jù)回顯

其實數(shù)據(jù)回顯我們現(xiàn)在的話就一點也不陌生了....我們剛使用EL表達式的時候就已經(jīng)學會了數(shù)據(jù)回顯了,做SSH項目的時候也有三圈問題的數(shù)據(jù)回顯...

在頁面上數(shù)據(jù)回顯本質(zhì)上就是獲取reqeust域的值..

而在我們SpringMVC中,我們是使用Model來把數(shù)據(jù)綁定request域?qū)ο笾械?/strong>

一般地我們都是使用model.addAttribute()的方式把數(shù)據(jù)綁定到request域?qū)ο笾?..其實SpringMVC還支持注解的方式

@ModelAttribute注解

我們可以將請求的參數(shù)放到Model中,回顯到頁面上

上面這種用法和model.addAttribute()的方式是沒啥區(qū)別的,也體現(xiàn)不了注解的方便性...

而如果我們要回顯的數(shù)據(jù)是公共的話,那么我們就能夠體會到注解的方便性了,我們把公共需要顯示的屬性抽取成方法,將返回值返回就行了。

那我們就不用在每一個controller方法通過Model將數(shù)據(jù)傳到頁面。

SpringMVC文件上傳

我們使用Struts2的時候,覺得Struts2的文件上傳方式比傳統(tǒng)的文件上傳方式好用多了...

http://blog.csdn.net/hon_3y/article/details/71091593

既然我們正在學習SpringMVC,那么我們也看一下SpringMVC究竟是怎么上傳文件的...

配置虛擬目錄

在這次,我們并不是把圖片上傳到我們的工程目錄中...

那為啥不將圖片直接上傳到我們的工程目錄中呢???我們仔細想想,按照我們之前的做法,直接把文件上傳到工程目錄,而我們的工程目錄是我們寫代碼的地方 ...往往我們需要備份我們的工程目錄。

如果把圖片都上傳到工程目錄中,那么就非常難以處理圖片了...

因此,我們需要配置Tomcat的虛擬目錄來解決,把上傳的文件放在虛擬目錄上...

又值得注意的是,Idea使用的Tomcat并不能使用傳統(tǒng)的配置方式,也就是修改server.xml方式來配置虛擬目錄,在Idea下好像不支持這種做法...

有興趣的同學可以去測試一下:

http://blog.csdn.net/hon_3y/article/details/54412484

那么我在網(wǎng)上已經(jīng)找到了對應(yīng)的解決辦法,就是如果在idea上配置虛擬目錄

http://blog.csdn.net/LABLENET/article/details/51160828

檢測是否配置成功:

快速入門

在SpringMVC中文件上傳需要用到的jar包

commons-fileupload-1.2.2.jar

commons-io-2.4.jar

配置文件上傳解析器


    
    
        
        
            5242880
        
    

測試的JSP

<%--
  Created by IntelliJ IDEA.
  User: ozc
  Date: 2017/8/11
  Time: 9:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    測試文件上傳




值得注意的是,在JSP的name屬性寫的是picture,那么在Controller方法參數(shù)的名稱也是要寫picture的,否則是獲取不到對應(yīng)的文件的..

@Controller
public class UploadController {
    @RequestMapping("/upload")
    //MultipartFile該對象就是封裝了圖片文件
    public void upload(MultipartFile picture) throws Exception {
        System.out.println(picture.getOriginalFilename());
    }
}

總結(jié)

在SpringMVC中的業(yè)務(wù)方法默認支持的參數(shù)有四種

request

response

session

model

我們的參數(shù)綁定(自動封裝參數(shù))是由我們的轉(zhuǎn)換器來進行綁定的。現(xiàn)在用的一般都是Converter轉(zhuǎn)換器

在上一章中我們使用WebDataBinder方式來實現(xiàn)對日期格式的轉(zhuǎn)化,當時僅僅是可用于當前Action的。我們想要讓全部Action都可以使用的話,有兩種方式:

實現(xiàn)PropertyEditorRegistrar(比較老的方式)

實現(xiàn)Converter(新的方式)

參數(shù)綁定都有遵循的規(guī)則:方法參數(shù)名要與傳遞過來的name屬性名相同

我們可以使用@RequestParam注解來具體指定對應(yīng)的name屬性名稱,這樣也是可以實現(xiàn)參數(shù)綁定的。

還能夠配置該參數(shù)是否是必須的。

Controller方法的返回值有5種:

void

String

ModelAndView

redirect重定向

forward轉(zhuǎn)發(fā)

Model內(nèi)部就是將數(shù)據(jù)綁定到request域?qū)ο笾械摹?/p>

@ModelAttribute注解能夠?qū)?shù)據(jù)綁定到model中(也就是request中),如果經(jīng)常需要綁定到model中的數(shù)據(jù),抽取成方法來使用這個注解還是不錯的。

idea配置虛擬目其實就是加多一個deployment,然后配置它的應(yīng)用路徑

SpringMVC的文件上傳就是配置一個上傳解析器,使用MultipartFile來接收帶過來的文件。

如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術(shù)文章,想要獲取更多的Java資源的同學,可以關(guān)注微信公眾號:Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68840.html

相關(guān)文章

  • 移動商城項目【總結(jié)】

    摘要:有必要建一個資源服務(wù)器存放靜態(tài)資源。一些用戶級別的數(shù)據(jù)輕量可以考慮存儲在中。存儲的是值,可以通過來對和對象之間的轉(zhuǎn)換如果我們的數(shù)據(jù)是在后臺傳過去或者轉(zhuǎn)換而成的,在前臺上并沒有做什么改變的話。 移動商城項目總結(jié) 移動商城項目是我第二個做得比較大的項目,該項目系統(tǒng)來源于傳智Java168期,十天的視頻課程(想要視頻的同學關(guān)注我的公眾號就可以直接獲取了) 通過這次的項目又再次開闊了我的視野,...

    BlackHole1 評論0 收藏0
  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...

    KevinYan 評論0 收藏0
  • 通過項目逐步深入了解Spring MVC(一)

    摘要:是一個基于的框架??刂破鲗⒁晥D響應(yīng)給用戶通過視圖展示給用戶要的數(shù)據(jù)或處理結(jié)果。有了減少了其它組件之間的耦合度。 相關(guān)閱讀: 本文檔和項目代碼地址:https://github.com/zhisheng17/springmvc 轉(zhuǎn)載請注明出處和保留以上文字! 了解 Spring: Spring 官網(wǎng):http://spring.io/ 一個好的東西一般都會有一個好的文檔解釋說明,如果你...

    whataa 評論0 收藏0
  • SpringBoot自動配置原理

    摘要:開啟自動配置功能后文詳解這個注解,學過的同學應(yīng)該對它不會陌生,就是掃描注解,默認是掃描當前類下的。簡單來說,這個注解可以幫助我們自動載入應(yīng)用程序所需要的所有默認配置。簡單理解這二者掃描的對象是不一樣的。 前言 只有光頭才能變強。 文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧前面Spring的文章(以學習...

    Rainie 評論0 收藏0

發(fā)表評論

0條評論

Flink_China

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<