国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

spring-mvc注解

EdwardUp / 2579人閱讀

摘要:關(guān)鍵注解的關(guān)鍵注解主要有其中主要是用于標(biāo)記該類是一個控制器,用于指示的哪一個類或方法來處理請求動作,即用于標(biāo)識具體的處理器。默認(rèn)已經(jīng)裝配了作為組件的實現(xiàn)類,而由使用,將請求信息轉(zhuǎn)換為對象。

關(guān)鍵注解

springmvc的關(guān)鍵注解主要有@Controller/@RequestMapping/@RequestParam/@PathVariable/@RequestHeader/@CookieValue/@SessionAttributes/@ModelAttribute
其中@Controller主要是用于標(biāo)記該類是一個控制器,@RequestMapping用于指示spring的哪一個類或方法來處理請求動作,即用于標(biāo)識具體的處理器。

Model/ModelAndView和ModelMap的區(qū)分

每個請求處理方法可以有多個不同類型的參數(shù),可以出現(xiàn)在請求處理方法中的參數(shù)類型有:HttpServletRequest/HttpServletResponse/HttpSession/WebRequest/NativeWebRequest/Locale/InputStream/OutputStream/Principal/Map/Model/ModelMap/RedirectAttributes/Errors/BindingResult/SessionStatus/UriComponentsBuilder等。舉例如下:若需要訪問HttpSession

@RequestMapping("")
public String login(HttpSession session){....}

Model是一個Spring MVC類型,其中包含了Map對象用來存儲數(shù)據(jù),如果方法中添加了Model參數(shù),則每次調(diào)用請求處理方法時,SpringMVC都會創(chuàng)建model對象,并將其作為參數(shù)傳遞給方法。

如何將模型數(shù)據(jù)傳遞給控制器和視圖是Spring MVC的一項重要工作,Spring MVC主要提供了多種途徑,下面分類進(jìn)行介紹:
1.Model和ModelMap: Spring MVC在內(nèi)部使用了一個Model接口存儲數(shù)據(jù)模型數(shù)據(jù),它的功能類似于Map接口,但是比map接口容易使用,而ModelMap接口實現(xiàn)了Map接口。Spring MVC在調(diào)用處理方法之前會創(chuàng)建一個隱含的模型對象,作為模型數(shù)據(jù)的存儲容器,如果處理方法的參數(shù)有Model或ModelMap類型,則Spring MVC會將隱含模型的引用傳遞給這些參數(shù),在處理方法內(nèi)部,開發(fā)者就可以通過這些參數(shù)來引用模型數(shù)據(jù),當(dāng)然也可以向模型中添加新的屬性。
2.ModelAndView :其和Model差不多,但是其不僅包含模型數(shù)據(jù),還包含視圖信息,可以通過ModelAndView設(shè)置其視圖路徑:舉例如下:

@RequestMapping("")
public ModelAndView login(ModelAndView mv){
    mv.setViewName("視圖路徑");
    return mv;
}
參數(shù)綁定

@RequestParam舉例如下:
注意:一旦使用了@RequestParam注解,就要求前臺必須傳遞@RequestParam要求的參數(shù),否則后臺就不會響應(yīng)

@RequestMapping("")
public ModelAndView login(@RequestParam("loginname") String loginname,
                          @RequestParam("password") String password){
    ..........
}

@PathVariable
用于獲取URL中的動態(tài)參數(shù)

URL:http://localhost:8080/pathtest/1
@RequestMapping("/pathtest/{userId}")
public ModelAndView login(@PathVariable Integer userId){
    ..........
}
//上例中userId就是動態(tài)參數(shù)

@RequestHeader
用于將請求頭中的信息映射到處理方法的參數(shù)中,舉例如下:

@RequestMapping("/pathtest")
public ModelAndView login(@RequestHeader("User-Agent") String userAgent){
    ..........
}

@CookieValue
用于將請求的Cookie數(shù)據(jù)映射到功能處理的方法參數(shù)上。

@RequestMapping("/pathtest")
public ModelAndView login(@CookieValue("JSESSIONID") String sessionId){
    ..........
}

@SessionAttribute
允許我們有選擇地指定Model中哪些屬性需要存儲到HttpSession對象中
注意@SeesionAttribute只能聲明在類上,不能聲明在方法上

@Controller
@SessionAttribute("user")
public class SessionController{......}
@ModelAttribute

@ModelAttribute注解的方法,會在請求進(jìn)入處理方法之前,先攔截請求,做過處理后再將請求轉(zhuǎn)發(fā)給具體的處理方法,舉例如下:

@Controller
public class ModelAttributeController{
    @ModelAttribute("loginname")
    public String userModel(RequestParam(loginname) String loginname){
    //使用@ModelAttribute注釋的value屬性,來指定model屬性的名稱,model屬性的值就是方法的返回值
        return loginname;    
    }
    @RequestMapping("/login")
    public String loing1(){
        return "result"
    }
}
上例中,在請求進(jìn)入login1方法之前,請求會先進(jìn)入userModel方法

@Controller
public class ModelAttributeController{
    @ModelAttribute
    public String userModel(String loginname,Model model){
    //model中將會存儲一個參數(shù)(String=loginname)
        return loginname;    
    }
    @RequestMapping("/login")
    public String loing1(Model model){
        return "result"
    }
}

@Controller
public class ModelAttributeController{
    
    @ModelAttribute("username")
    @RequestMapping("/login")
    public String loing1(Model model){
        return "result"
    }
}
上述示例中,@ModelAttribute和@RequestMapping同時注釋一個方法,loing1的返回值不再是視圖名稱,而是model的屬性值,視圖名稱是@RequestMapping的value值“l(fā)ogin”


@Controller
public class ModelAttributeController{
    
    @ModelAttribute("user")
    public User userModel5(){
        ....
    }
    @RequestMapping("/login")
    public String login5(@ModelAttribute("user") User user){
        return "result"
    }
}
//上例中userModel5(...)方法先于login5(...)方法調(diào)用,userModel5(...)方法會在Model中添加一個屬性,key是@ModelAttribute的值“user”,value是userModel5(...)方法的返回值。 login5(...)方法中的@ModelAttribute的意思是將Model中的user屬性賦值給login5(...)的方法參數(shù)。
信息轉(zhuǎn)換

Spring3.0 新增加了一個重要信息轉(zhuǎn)換接口HttpMessageConverter,該接口負(fù)責(zé)將請求信息轉(zhuǎn)換為一個對象,對象類型為T,并將轉(zhuǎn)換后的對象綁定到請求方法的參數(shù)中。DispatcherServlrt默認(rèn)已經(jīng)裝配了RequeestMappingHandlerAdapter作為HandlerAdapter組件的實現(xiàn)類,而HttpMessageConverter由RequestMappingHandlerAdapter使用,將請求信息轉(zhuǎn)換為對象。

HttpMessageConverter接口的具體實現(xiàn)類有:StringHttpMessageConverter ,FormHttpMessageConverter ,XmlAwareFormHttpMessageConverter ,ResourceHttpMessageConverter ,SourceHttpMessageConverter ,ByteArrayHttpMessageConverter等。

RequestMappingHandlerAdapter可以默認(rèn)已經(jīng)安裝了幾個HttpMessageConverter,如果需要裝配其他類型的HttpMessageConverter,需要自定義一個RequestMappingHandlerAdapter,舉例如下:


    
        
            
            ......
        
    
Json數(shù)據(jù)轉(zhuǎn)換

如果要想使用SpringMVC處理JSON格式的數(shù)據(jù),首先需要在RequestMappingAdapter上配置JSONX信息轉(zhuǎn)換器,如下所示:


    
        
            
            
                
                    text/html
                    application/json
                
            
            
            ......
        
    

@Requestbody注解用于讀取Request請求中的body部分?jǐn)?shù)據(jù),使用系統(tǒng)默認(rèn)配置的HttpMessageConverter進(jìn)行解析,然后把相應(yīng)的數(shù)據(jù)綁定到Controller中方法的參數(shù)上。當(dāng)前臺頁面使用GET或POST方法提交數(shù)據(jù)時,數(shù)據(jù)編碼格式由請求頭的ContentType指定,可以分為以下幾種情況:
1.application/x-www-form-urlencoded,這種情況可以由@RequestBody處理也可以由其他注解處理;
2.multipart/form-data,@RequestBody不能處理這種格式;
3.application/json、application/xml等格式的數(shù)據(jù),必須使用@RequestBody來處理;

在實際開發(fā)中可以使用@RequestBody注解很方便地接收J(rèn)SON格式的數(shù)據(jù),并將其轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)類型。@RequestBody的使用舉例如下:

@Controller
public class JsonController{
    @RequestMapping("/json")
    @ResponseBody
    public Map  testJson(@RequestBody Book  book){....}
}

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70502.html

相關(guān)文章

  • 『SpringMVC』<context:include-filter>&<

    摘要:現(xiàn)在給定一個項目的包結(jié)構(gòu)在中有以下配置只掃描注解可以看出要把最后的包寫上,不能包含子包,所以不能寫成。   大家好,我是豬弟,豬在我心中從來不是蠢的代名詞,而是懶的代名詞,本次準(zhǔn)備記錄一個在開發(fā)測試過程中遇到的問題,跟蹤了三天spring和第三方RPC組件的源碼,最終發(fā)現(xiàn)了問題是因為第三方組件沒有處理好而父子容器導(dǎo)致的,還有一個因素是spring注解掃描重疊。 Spring版本:4.3...

    darryrzhong 評論0 收藏0
  • spring-MVC源碼解讀(一)

    摘要:處理器是繼前端控制器的后端控制器,在的控制下對具體的用戶請求進(jìn)行處理。由于涉及到具體的用戶業(yè)務(wù)請求,所以一般情況需要程序員根據(jù)業(yè)務(wù)需求開發(fā)。 1、mcv整體架構(gòu)和流程 showImg(https://segmentfault.com/img/bV55Qq?w=860&h=406); 用戶發(fā)送請求至前端控制器 DispatcherServlet DispatcherServlet 收到...

    I_Am 評論0 收藏0
  • SpringMVC入門筆記

    摘要:入門筆記簡介是一種基于的實現(xiàn)了設(shè)計模式的請求驅(qū)動類型的輕量級框架,是系開源項目中的一個,和配合使用。配置在中需要添加使用的和映射規(guī)則。入門較快,而掌握起來相對較難。 SpringMVC入門筆記 1. 簡介 Spring MVC是一種基于Java的實現(xiàn)了Web MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架 ,是Spring系開源項目中的一個,和IoC配合使用。通過策略接口,Spring...

    zhaochunqi 評論0 收藏0
  • 使用maven創(chuàng)建簡單的多模塊 Spring Web項目

    摘要:第一次寫技術(shù)文章,主要內(nèi)容是使用創(chuàng)建一個簡單的項目,如有操作或理解錯誤請務(wù)必指出,當(dāng)謙虛學(xué)習(xí)。基本思想其實就是一個項目引用別的模塊包,最終項目被打成包發(fā)布。 第一次寫技術(shù)文章,主要內(nèi)容是使用maven創(chuàng)建一個簡單的SpringMVC WEB 項目,如有操作或理解錯誤請務(wù)必指出,當(dāng)謙虛學(xué)習(xí)。做這一次的工作主要是因為想加強(qiáng)一下自己對Spring Web 項目的理解,因為平時都是直接寫業(yè)務(wù)代...

    DevYK 評論0 收藏0
  • 轟轟烈烈的搭建Spring + Spring MVC + Mybatis

    摘要:配置和編碼格式使用提供過濾器處理字符編碼。請求從不改變資源的狀態(tài),無副作用。中添加,采用默認(rèn)配置已經(jīng)足夠面對大多數(shù)場景注入?yún)⒖兼溄邮职咽纸棠阏献顑?yōu)雅框架我的編碼習(xí)慣接口定義設(shè)計最佳實踐 創(chuàng)建項目 打開IDEA -> Create New Project勾選Create from archetypeshowImg(https://segmentfault.com/img/bV5tS4?...

    Fourierr 評論0 收藏0

發(fā)表評論

0條評論

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