码迷,mamicode.com
首页 > 编程语言 > 详细

spring mvc开发:基于注解

时间:2015-11-14 21:57:54      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

将上面的项目拷贝一份,拷贝web项目的时候注意该一个地方:

技术分享

4.1注解第一个例子

  1. 创建web项目
  2. 在springmvc的配置文件中指定注解驱动,配置扫描器
<!-- mvc的注解驱动 -->
    <mvc:annotation-driven />
    <!-- 一旦有扫描器的定义mvc:annotation-driven不需要,扫描器已经有了注解驱动的功能 -->
    <context:component-scan base-package="cn.itcast.springmvc" />

    <!--视图解析器: 前缀+ viewName +后缀 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- webroot到某一指定的文件夹的路径 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!-- 视图名称的后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

  3.@controller:标识当前类是控制层的一个具体的实现

  4.@requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

@Controller//用来标注当前类是springmvc的控制层的类
public class TestController {
    
    /**
     * @return方法的返回值是ModelAndView中的ViewName
     */
    @RequestMapping("/hello.do")//用来访问控制层的方法注解
    public String hello(){
        System.out.println("TestController.hello()");
        return "jsp1/index";
    }

}

http://localhost:8080/springmvc-2/hello.do

@requestMapping放在类上面:

@Controller//用来标注当前类是springmvc的控制层的类
@RequestMapping("/test")//controller唯一标识或者是命名空间
public class TestController {
    
    /**
     * @return方法的返回值是ModelAndView中的ViewName
     */
    @RequestMapping("/hello.do")//用来访问控制层的方法注解
    public String hello(){
        System.out.println("TestController.hello()");
        return "jsp1/index";
    }

}

http://localhost:8080/springmvc-2/test/hello.do

4.2注解方式参数

接收参数:

  1. HttpServletRequest可以直接定义在参数的列表,可以使用
/**
     * desc:HttpServletRequest可以直接定义在参数的列表,可以使用
     */
    @RequestMapping("/toPerson.do")
    public String toPerson(HttpServletRequest request){
        String result = request.getParameter("name");
        System.out.println(result);
        return "jsp1/index";
    }

http://localhost:8080/springmvc-2/test/toPerson.do?name=lisi

  2.在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据, 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的

/**
     * desc:在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据,
     * 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的
     */
    @RequestMapping("/toPerson1.do")
    public String toPerson1(String name, Integer age, String address,Date birthday){
        System.out.println(name + " ,"+ age + ","+ address +" "+birthday);
        return "jsp1/index";
    }
    /**
     * desc:注册时间类型的属性编辑器
     * http请求的参数都是字符串的形式,需要属性编辑器将其转换成integer等,像上面的name,age,address
     */
    @InitBinder
    public void initBinder(ServletRequestDataBinder binder){
        binder.registerCustomEditor(Date.class,
                new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
    }

http://localhost:8080/springmvc-2/test/toPerson1.do?name=lisi&age=30&address=xinjiang&birthday=2012-12-21

/**
     * desc:传递的参数的名字必须要与实体类的属性set方法后面的字符串匹配的上才能接收到参数,首字符的大小写不区分
     * 请求中传的参数只要是能和参数列表里面的变量名或者实体里面的set后面的字符串匹配的上就能接收到(两个实体有可能接收同一参数)
     */
    @RequestMapping("/toPerson2.do")
    public String toPerson2(Person person){
        System.out.println(person);
        return "jsp1/index";
    }
public class Person {
    
    private String name;
    
    private Integer age;
    
    private String address;
    
    private Date birthday;

   //setter和getter略,但是是必要的

  /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", address=" + address + ", birthday=" + birthday + "]"; } }

http://localhost:8080/springmvc-2/test/toPerson2.do?name=lisi&age=30&address=xinjiang&birthday=2012-12-21

通过反射利用set方法注入属性值,生成实例

 

/**
     * desc:对数组的接收
     */
    @RequestMapping("/toPerson3.do")
    public String toPerson3(String[] name){
        for(String result : name){
            System.out.println(result);
        }
        return "jsp1/index";
    }

http://localhost:8080/springmvc-2/test/toPerson3.do?name=lisi&name=zhangsan

 

spring mvc开发:基于注解

标签:

原文地址:http://www.cnblogs.com/winner-0715/p/4965042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!