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. Spring--bean的作用范围

    在Spring中,bean的作用范围分以下几种: singleton:spring ioc容器中仅有一个bean实例,bean以单例的方式存在 prototype:每次从容器中调用bean时,都返回一 ...

  2. [COGS 2524]__完全平方数

    Description 一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(Pefect Sqaure),也称平方数.小A认为所有的平方数都是很perfect的~ 于是他给了小B一个任务 ...

  3. [bzoj1488][HNOI2009]图的同构——Polya定理

    题目大意 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b ...

  4. C++Primer学习——const

    Const int size = 512; 在编译的时候,编译器会把用到该变量的地方全部替换成对应的值. const&可以绑定字面值,所以当用常量引用绑定一个常量时,是否可以看成那个值在编译阶 ...

  5. 51nod 1770 数数字

    1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题  收藏  关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...

  6. 2015 多校联赛 ——HDU5289(二分+ST)

    Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  7. [bzoj1041][HAOI2008]圆上的整点

    我能想得出怎么做才奇怪好吗 题解:http://blog.csdn.net/csyzcyj/article/details/10044629 #include<iostream> #inc ...

  8. ORACLE 启动过程

    1 STARTUP NOMOUNT 1.读取环境变量下dbs目录下的参数文件(spfile/pfile) 查找参数文件的顺序如上面列表的,读取优先级: spfilechongshi.ora > ...

  9. xml 和数组的相互转化

    数组转化为xml: function arrtoxml($arr,$dom=0,$item=0){ if (!$dom){ $dom = new DOMDocument("1.0" ...

  10. (概念)多个CPU和多核CPU以及超线程(Hyper-Threading)

    引言 在这篇文章中我会主要介绍CPU相关的一些重要概念和技术.如果你想更好地了解操作系统,那就从本文开始吧. 中央处理器(Central processing unit) 在我们了解其它概念之前,我们 ...