SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable

我的開發環境
框架:        springmvc+spring+freemarker
開發对象: springsource-tool-suite-2.9.0
JDK版本: 1.6.0_29
tomcat版本:apache-tomcat-7.0.26


前置文章-SpirngMVC设备入門 http://www.cnblogs.com/sunang/p/3419544.html


             Spring整合Freemarker http://www.cnblogs.com/sunang/p/3419676.html


本文地址:http://www.cnblogs.com/sunang/p/3421707.html  轉載請注明出處^_^


要重视的點已经用          標注,請大师要特別重视。


1.@Controller,@RequestMapping


用@Controller註釋的類才會被SpringMVC解析器搜刮到,這個註釋是必須的。@RequestMapping註釋用於指定controller办法的URL索引。這兩個注解的具體用法請看以下代碼:


controller层LearnMVCController.java代码:


 



package www.asuan.com.controller;



import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;



@Controller

@RequestMapping("/learnMVC")//父索引 可省略

public class LearnMVCController {

    @RequestMapping("/ex") //子索引

    public String learnMVC() {

        return "learnMVC.ftl";

    }

}


视图learnMVC.ftl代码:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h2>Hello World!</h2>

</body>

</html>


 


有父索引的请况下,接见:http://localhost:8080/你的名/learnMVC/ex.htm


省略父索引的请况下,接见:http://localhost:8080/你的名/ex.htm 就可将恳求发送到所需controller办法。


运行成果:



2.@RequestParam


該註釋用於controller办法註釋中,用於綁定由視圖傳過來的參數,代碼如下:


controller代碼



package www.asuan.com.controller;



import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;



@Controller

@RequestMapping("/learnMVC"public class LearnMVCController {

    @RequestMapping("/ex"public String learnMVC(@RequestParam(value = "userId", required = false) Integer userIdGot, Model model) {

        String str = "成功获得綁定數據:" + userIdGot;

        model.addAttribute("userIdGot", str);

        return "learnMVC.ftl";

    }

}


@RequestParam註釋參數中,把握器會掃描視圖傳遞過來的、參數名與value值雷同的參數,此處為userId,掃描到參數后將參數的值綁定到註釋後面聲明的變量中,此處為userIdGot.


例如我們訪問地址:http://localhost:8080/你的名/learnMVC/ex.htm?userId=10001


那麼起首把握器掃描到URL鏈接後面帶的變量userId與value的值雷同,所以把握器把變量userId的值10001賦給了@RequestParam後面聲明的變量userIdGot,這樣我們就获得了前臺傳過來的參數。


required參數為true的時候,若是你沒傳所需的參數,,法度將報錯。required參數可省略,省略時,其值默認為false.


重视:這個例子當中,若是聲明變量Integer userIdGot改成int userIdGot,而你又沒有傳相應的參數,訪問頁面將報錯。因為當把握器找不到匹配的變量時,會把null賦給這個變量,而null值裝化為int的時候會報錯,所以此處應用包裝類


編寫視圖文件如下:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h2>¥{userIdGot}</h2>

</body>

</html>


在瀏覽器訪問:http://localhost:8080/你的名/learnMVC/ex.htm?userId=10001


運行結果如下:



3.@PathVariable


@PathVariable用於綁定URL路徑上添加的參數,例如本文的連接:http://www.cnblogs.com/sunang/p/3421707.html 若是http://www.cnblogs.com/sunang是我們訪問把握層的路徑的話,那麼/p/3421707就是我們添加的參數,通過@PathVariable就可以綁定獲取這些參數在服務端進行相應操纵。詳細应用办法情況以下代碼:


起首編寫learnMVC.ftl,代碼如下:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h2>¥{msgGot}</h2>

</body>

</html>


編寫controller層,代碼如下:



package www.asuan.com.controller;



import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;



@Controller

@RequestMapping("/learnMVC"public class LearnMVCController {

     //子索引由 ex+參數+參數 組成

    @RequestMapping("/ex/{type}/{articleId}"public String learnMVC(@PathVariable(value = "type") String typeGot,

            @PathVariable(value = "articleId") Integer articleIdGot, Model model) {

        String str = "URL後面所傳輸的參數為:" + typeGot + "/" + articleIdGot;

        model.addAttribute("msgGot", str);

        return "learnMVC.ftl";

    }

}


@PathVariable的實現道理和@RequestParam类似,把握器掃描@RequestMapping路徑中、{}號裏面的參數名,把參數值綁定到與@PathVariable的value值相等的變量中,比如上例中,{type}的值被綁定到value="type"的註釋後面聲明的變量typeGot中,參數的個數可以設定,這裡為兩個參數。


重视:在訪問URL時,必須用ex/參數值/參數值 的格局才干訪問到上例中的controller办法,别的還要重视參數的類型。


現在讓我們運行,在瀏覽器訪問:http://localhost:8080/你的名/learnMVC/ex/p/10086.htm    注:此處p對應{type},10086對應{articleId}


運行結果:



 


 complete!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值