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. mysql列约束

    列属性(约束)1: 是否允许为空(not null)  --not null不允许为空create table t_1(    a tinyint(3) zerofill not null,    b ...

  2. Scriplet的三种代码

    Jsp中注释分为显示注释和隐式注释, 显示注释 -- 可以通过查看源代码看到 <!-- 第一种注释 -->  隐式注释 --  源代码中看不到 <%--jsp注释---%> & ...

  3. 持久化 XSS:ServiceWorkers 利用

    来源:http://www.mottoin.com/95058.html 来源:https://www.owasp.org/images/3/35/2017-04-20-JSONPXSS.pdf Se ...

  4. TensorFlow学习笔记(UTF-8 问题解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte)

    我使用VS2013  Python3.5  TensorFlow 1.3  的开发环境 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff ...

  5. [WC2006]水管局长数据加强版

    Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一 ...

  6. codeforces 815C Karen and Supermarket

    On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a ...

  7. codeforces 523D tatistics of Recompressing Videos

    一个称为DH(DogHouse)的狗的社交网络有k台专用服务器来重新上传可爱的猫的上传视频.每个视频上传后,应该在一个(任何)服务器上重新压缩,之后才可以保存在社交网络中. 我们知道每个服务器需要一秒 ...

  8. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)

    前四题比较水,E我看出是欧拉函数傻逼题,但我傻逼不会,百度了下开始学,最后在加时的时候A掉了 AC:ABCDE Rank:182 Rating:2193+34->2227 终于橙了,不知道能待几 ...

  9. Python的IO编程

    原文传送门:请点击 原文传送门:请点击

  10. ds4700更换控制器导致磁盘无法识别-处理方法

    更换DS4700控制器的悲与喜 机型:DS4700     原微码:06.23.xx 更换部件:控制器 (使用的控制器微码07.60.52.00) 误操作过程: 1,关掉存储换控制器 --(兄弟们千万 ...