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. [测试题]gentree

    Description 给你一个有向连通图G,每点有个权值Di(0<Di),要求生成一棵树根为1号节点的有根树T.对于树中边E,E的代价为所有从根出发的且包含E的路径的终点权值的和.现求生成树T ...

  2. 紧急疏散evacuate

    1689: [HNOI2007]紧急疏散evacuate 题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是".",那么表示这是一块空地 ...

  3. [CEOI2008]order

    Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数,求最大利润 Solu ...

  4. 【Uva 10269 马里奥与公主的归途】

    ·马里奥n次解救了公主,现在需要从魔王的宫殿返回. ·英文题,述大意:      给定一个点数不超过100的无向图,其中的点分为两类:乡村和城堡. 输入A个乡村,B个城堡(乡村编号1~A,城堡编号A+ ...

  5. hdu5601 BestCoder Round #67 (div.2)

    N*M bulbs  Accepts: 94  Submissions: 717  Time Limit: 10000/5000 MS (Java/Others)  Memory Limit: 655 ...

  6. linux心得

    cd .. 返回上一级文件夹cd /xxx/xxxx/xx 进入文件夹cd Desktop 进入桌面sudo vim /etc/vim/vimrc 进入vim配置器:w xxx 保存为名为xxx的文件 ...

  7. Python3 中 random模块

    Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() #用于生成一个0到1的 随机浮点数:0<= n < 1.0 im ...

  8. 关于java线程中stop interrupt daemon wait notify

    一.关于终止线程stop与interrupt 一般来说,线程执行结束后就变成消亡状态,乍看之下我们并不需要人为进行干预(人为停止线程),不过凡事都有例外吧,在服务器或者其他应用场景下,线程为了提供服务 ...

  9. mysql 使用问题?

    linux中安装了mysql客户端和服务器端,为什么无法使用,总是报错呢 解决办法:使用dpkg -r mysql命令删除掉mysql-client和mysql-server了,还是不行,而且查看软件 ...

  10. Spring使用webjar

    注意事项 这玩意很简单,但是我们第一次搞就是搞不成功,为什么呢?因为我们都用的是idea或者eclipse编译.webjar只能在maven上才能打包,所以在使用时,记得maven-clean和mav ...