springmvc基于注解的开发

注解第一个例子

1. 创建web项目 springmvc-2

2. 在springmvc的配置文件中指定注解驱动,配置扫描器
<!-- sprimgmvc 注解驱动 -->
	<!-- <mvc:annotation-driven /> -->
	<!-- springmvc的扫描器,一旦有扫描器的定义上面的mvc:annotation.. 就不需要了,扫描器已经有哪里注解驱动的功能 -->
	<context:component-scan base-package="cn.edu.hqu.springmvc"></context:component-scan>

	<!--视图解析器 前缀+ viewName +后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- webroot到某一指定的文件夹的路径 -->
		<property name="prefix" value="/WEB-INF/"></property>
		<!-- 视图名称的后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

在cn.hqu.springmvc下  新  建  TestController

package cn.edu.hqu.springmvc;

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

@Controller//用来标注当前类是springmvc的控制层的类
@RequestMapping("/test") //controller的唯一标识或者命名空间
public class TestController  {

	/**
	 * 方法的返回值是ModelAndVIew中的viewName
	 * @return
	 */
	@RequestMapping("/hello.do")//用来访问控制层的方法的注解
	public String hello(){
		return "jsp/index";
	}
}

3. @controller:标识当前类是控制层的一个具体的实现

4. @requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

类上面有@RequestMapping("/test")访问:localhost:8080/springmvc-2/test/hello.do

没有的话:localhost:8080/springmvc-2/hello.do

部署,访问;

注解方式参数

在TestController
	/**
	 * HttpServletRequest可以直接定义在参数的列表
	 * @param request
	 * @return
	 */
	@RequestMapping("/toPerson.do")
	public String toPerson(HttpServletRequest request) {
		String result = request.getParameter("name");
		System.out.println(result);
		return "jsp/index";
	}

重启tomcat访问:http://localhost:8080/springmvc-2/test/toPerson.do?name=jerome

控制台输出:jerome



	/**
	 * 在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据
	 * 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的
	 * @param name
	 * @return
	 */
	@RequestMapping("/toPerson1.do")
	public String toPerson1(String name,Integer age,String address){
		System.out.println(name+" "+age+" "+address);
		return "jsp/index";
	}

地址栏和代码两边的参数要一致;

重启tomcat,访问:

http://localhost:8080/springmvc-2/test/toPerson1.do?name=jerome&age=23&address=china

控制台输出:jerome 23 china


如果有时间类型要 注册属性编辑
	/**
	 * 注册时间类型的属性编辑器
	 * @param binder
	 */
	@InitBinder
	public void initBinder(ServletRequestDataBinder binder){
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
	}
	@RequestMapping("/toPerson1.do")
	public String toPerson1(String name,Integer age,String address,Date birthday){
		System.out.println(name+" "+age+" "+address+" "+birthday);
		return "jsp/index";
	}

重启tomcat,访问

http://localhost:8080/springmvc-2/test/toPerson1.do?name=jerome&age=23&address=china&birthday=2012-12-12

控制台输出:jerome 23 china Wed Dec 12 00:00:00 CST 2012


Springmvc接收实体类:
在cn.edu.hqu.entity 新建一个类Person,将上面的四个参数写进去,get set方法和toString方法;
	/**
	 * 传递的参数名字必须要和实体类的属性set方法后面的字符串匹配的上才能接收到参数
	 * @param person
	 * @return
	 */
	@RequestMapping("/toPerson2.do")
	public String toPerson2(Person person){
		System.out.println(person);
		return "jsp/index";
	}

重启tomcat 执行

http://localhost:8080/springmvc-2/test/toPerson2.do?name=jerome&age=23&address=china&birthday=2012-12-12

控制台输出:

Person [name=jerome, address=china, birthday=Wed Dec 12 00:00:00 CST 2012, age=23]



浏览器参数首字母大写没影响;



如果多个实体类:添加实体类User 属性:name age;get set toString方法;

	/**
	 * 传递的参数名字必须要和实体类的属性set方法后面的字符串匹配的上才能接收到参数
	 * 请求中的参数只要是能和参数列表里面的变量名或者实体里面的set后面的字符串匹配的上就能接受到
	 * @param person
	 * @return
	 */
	@RequestMapping("/toPerson2.do")
	public String toPerson2(Person person, User user){
		System.out.println(person);
		System.out.println(user);
		return "jsp/index";
	}

重启tomcat 执行

http://localhost:8080/springmvc-2/test/toPerson2.do?name=jerome&age=23&address=china&birthday=2012-12-12

控制台输出:

Person [name=jerome, address=china, birthday=Wed Dec 12 00:00:00 CST 2012, age=23]

User [name=jerome, age=23]


接收一个数组;

	/**
	 * 对数组的接收
	 * @param names
	 * @return
	 */
	@RequestMapping("/toPerson3.do")
	public String toPerson3(String[] names){
		for(String result:names){
			System.out.println(result);
		}
		return "jsp/index";
	}

重启tomcat 执行

http://localhost:8080/springmvc-2/test/toPerson3.do?names=jerome&names=jelly

控制台输出:

jerome

jelly



项目源码:http://pan.baidu.com/s/1bntiZzp

springmvc注解形式的开发参数接收的更多相关文章

  1. [转]学习笔记_springmvc注解形式的开发参数接收

    springmvc基于注解的开发 注解第一个例子 1. 创建web项目 2. 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- sprimgmvc 注解驱动 --> &l ...

  2. SpringMVC 传递相同名称的参数的最佳方法

    华为云4核8G,高性能云服务器,免费试用 >>>   SpringMVC 多个对象的相同字段参数传递解决方案,在SpringMVC中,有时需要传递多个对象(除了Model和web元素 ...

  3. 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)

    上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...

  4. 《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)

    上一篇我们学习了简单的参数接收方式,以及对编码的统一处理.今天我们来接收对象参数. 一.接收对象参数 jsp页面: <%@ page language="java" impo ...

  5. 10.SpringMVC注解式开发-处理器方法的参数

    1.逐个参数接收 只要保证请求参数名与该请求处理方法的参数名相同即可 // 请求参数名 与该处理器中的请求方法的参数名相同 ,即可接收前台传递过来的参数 public ModelAndView met ...

  6. 3.2.3 SpringMVC注解式开发

    SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...

  7. SpringMVC请求参数接收总结

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  8. SpringMVC请求参数接收总结(一)

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  9. 2.5万字长文简单总结SpringMVC请求参数接收

    这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...

随机推荐

  1. 将 Net 项目升级 Core项目经验:(二)修复迁移后Net Standard项目中的错误

    修复迁移后Net Standard项目中的错误 接上一章,项目编译结果如下: 解决依赖dll引用 在Net Framework项目的引用如下: 各引用和作用: log4net(1.10.0.0) 用于 ...

  2. Django框架之虚拟环境搭建

    创建虚拟环境篇 今天小编就来讲一下在Ubantu下如何搭建Django环境,希望能帮助那些不会搭建的童鞋^o^ 0.首先要先安装好Python环境,至于安装过程,小编就不讲了,百度一下,你懂得.. 1 ...

  3. js在光标处插入内容

    //场景一 简易的页面可以这样写var range = window.getSelection().getRangeAt(0);range.insertNode(document.createText ...

  4. [ZJOI2009]染色游戏

    Description 一共n × m 个硬币,摆成n × m 的长方形.dongdong 和xixi 玩一个游戏, 每次可以选择一个连通块,并把其中的硬币全部翻转,但是需要满足存在一个 硬币属于这个 ...

  5. ●POJ 1990 MooFest

    题链: http://poj.org/problem?id=1990 题解: 树状数组 把牛们按x坐标从小到大排序,依次考虑每头牛对左边和对右边的贡献. 对左边的贡献:从左向右枚举牛,计算以当前牛的声 ...

  6. 2015 多校联赛 ——HDU5294(最短路,最小切割)

    Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  7. [Noi2016]国王饮水记

    来自FallDream的博客,未经允许,请勿转载,谢谢. 跳蚤国有 n 个城市,伟大的跳蚤国王居住在跳蚤国首都中,即 1 号城市中.跳蚤国最大的问题就是饮水问题,由于首都中居住的跳蚤实在太多,跳蚤国王 ...

  8. Mybatis迷你版--QueryObjectFactory

    今天在看JDBC4.2新规范,然后无意之间就碰到了这个东西QueryObjectFactory, 市面上orm框架有很多,在这里我就不一一列举了.那么今天我来记录一下QueryObjectFactor ...

  9. Scrapy框架

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...

  10. C语言程序设计第三次作业——选择结构(一)

    (一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...