zoukankan      html  css  js  c++  java
  • [转]学习笔记_springmvc注解形式的开发参数接收

    springmvc基于注解的开发

    注解第一个例子

    1. 创建web项目 
    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/to Person2 .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://www.tuicool.com/articles/rE3YJn)
  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/jianyungsun/p/6666000.html
Copyright © 2011-2022 走看看