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

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!

时间: 2025-01-31 02:07:45

SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable的相关文章

【springMVC 学习三】springmvc常用注解之@Controller和@RequestMapping

对于各种注解而言,排第一的当然是"@Controller",表明某类是一个controller. "@RequestMapping"请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径:最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Controller @RequestMapping(value="/book"

基于注解的Spring MVC(所需jar包,web.xml配置,Spring文件配置,@Controller,@RequestMapping,@RequestParam,model填参,EL取值)

1.添加jar 2.web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLoca

【SpringMVC】SpringMvc基础-常用注解、对象和json或xml之间的转换

转载请注明出处http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] Spring MVC常用注解 @Controller @Controller注解在类上表明这个类是Spring MVC里的Controller将其声明为Spring的一个BeanDispatcher Servlet会自动扫描注解了此注解的类并将Web请求映射到注解了@RequestMapping的方法上. 在声明普通Bean的时候使用@Component.@Service.@Repo

Spring常用注解汇总_java

本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component-scan base-package="cn.test"/> @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean. @Scope注解 作用域 @Lazy(true) 表示延迟初始化 @Service用于

SpringMvc系列之SpringMvc常用请求映射器实例

本片文章用来介绍常用的SpringMvc常用的请求映射器. Web.xml配置如下: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&q

MySQL Join 詳解

mysql MySQL Join 詳解 (C) by Dennis Dll 2004.1.29 還是先 Create table 吧 create table emp(  id   int not null primary key,  name     varchar(10)); create table emp_dept(  dept_id       varchar(4) not null,  emp_id        int not null,  emp_name      varcha

函數-Javascript實例化對象的語法

问题描述 Javascript實例化對象的語法 var A=function(){ this.id=3; }; var a=new A(); a=new A; a=A(); 這三種實例化的語法有啥不一樣? 解决方案 主要是在类内部this指向的对象不同. var a=new A(); a=new A; 这两者一样

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构  DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服

106_《Delphi5开发百例精解》

<Delphi5开发百例精解> Delphi 教程 系列书籍 (106) <Delphi5开发百例精解> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载 原书名: DELPHI 5.0 开发百例精解 作者: 伍俊良 出版社: 北京希望电子出版社 出版日期:2000年4月 开本: 787*1092 1/16 页码: 322 内容简介 本书是"计算机程序设计丛书"中的一本,是一本用近百个例程教读者如何快速学习和掌握 Delphi 5.