我的開發環境
框架:        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!

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

  1. SpringMVC常用注解實例詳解3:@ResponseBody

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  2. SpringMVC常用注解實例詳解2:@ModelAttribute

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  3. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  4. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

  5. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  6. SpringMVC常用注解@Controller,@Service,@repository,@Component

    SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...

  7. 一 : springmvc常用注解

    springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...

  8. Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)

    Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...

  9. springmvc常用注解标签详解

    1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...

随机推荐

  1. Windows服务二:测试新建的服务、调试Windows服务

    一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main ...

  2. .Net字符串替换

    在.Net中,有些地方需要进行字符的替换才能实现一些相关功能,这里是一个简单的字符串替换的方法 //如下,变量strWhere中是通过一些方法获取的sql拼接的条件语句,但在数据库中是多表查询,有同名 ...

  3. Linux 常用命令 :cd命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  4. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  5. (转载)持续集成(第二版)[来自:Martin Fowler]

    转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...

  6. C#获得客户端IP

    代码: /// <summary> /// 获得当前页面客户端的IP /// </summary> /// <returns>当前页面客户端的IP</retu ...

  7. LR连接oracle数据库-lr_db_connect

    在Loadrunner中也提供了C对数据库操作的相关功能函数,以下这些数据库功能函数只能用于Web Services协议. lr_db_connect 连接数据库 lr_db_disconnect 断 ...

  8. ABAP 读取EXCEL文件到内表

    1.选择excel文件: PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUES ...

  9. 我的Git使用-资料查询,名博笔记

    1.首先您要知道什么是GIT 2.然后对其GIT的历史有所了解(吹牛b的时候用得着,如果还不知道 linux 脱袜子 Linus Torvalds  o(︶︿︶)o ) Git 常用资料查询站点. 官 ...

  10. Web页面报错: Eval()、XPath() 和 Bind() 这类数据绑定方法只能在上下文中使用

    可以使用string.formt来避免出错. 如: <%# Convert.ToInt32(DataBinder.Eval(Container.DataItem, "Status&qu ...