• [转]学习笔记_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)
  • 相关阅读:
    kmp模板
    2017 ACM/ICPC Asia Regional Shenyang Online transaction transaction transaction
    2017 ACM/ICPC Asia Regional Shenyang Online 12 card card card
    KMP
    最长不下降子序列
    codeforces round 433 D. Jury Meeting
    codeforces round 433 C. Planning 贪心
    hdu 5792 线段树+离散化+思维
    hdu 5792 树状数组+离散化+思维
    hdu 5791 思维dp
  • 原文地址:https://www.cnblogs.com/jianyungsun/p/6666000.html
Copyright © 2020-2023  润新知