一、springmvc 注解形式开发

1、创建类代码如下:

package com.learn.springmvc;

import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.Data;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;

import com.learn.springmvc.model.Person;

//该注解用来标注当前类是 springmvc 控制层类
@Controller
//controller 的唯一标识或命名空间
@RequestMapping("/test")
public class TestController{

    //用来访问控制层方法的注解
    @RequestMapping("/hello.do")
    public String getString(){
        System.out.print("hwl");
        return "jsp1/index";
    }
    
}

 

@Controller 注解用来标注当前类是 springmvc 控制层类

@RequestMapping("/test") 括号中的内容表示 controller 的唯一标识或命名空间

2、xml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">                            
        <!-- mvc 的注解驱动 -->
        <mvc:annotation-driven/>
        <!-- 一旦有扫描器的定义,mvc:annotation-driven 就不需要,扫描器已经有了注解的功能 -->
        <context:component-scan base-package="com.learn.springmvc"></context:component-scan>
        <!-- 前缀+ 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>
</beans>

<mvc:annotation-driven/> 表示加载 mvc 的注解驱动

<context:component-scan base-package="com.learn.springmvc"></context:component-scan>

<context:component-scan> 表示注解扫描器,一旦有扫描器的定义,mvc:annotation-driven 就不需要,扫描器已经有了注解的功能,以上代码表示扫描 com.learn.springmvc 包下的所有类,扫描是否有注解

二、参数传递

1、传递字符串

(1)、HttpServletRequest 可以直接定义在参数列表中,并可以使用,代码如下:

/**
     * httpservletrequest 可以直接定义在参数列表中,并可以使用
     * @param request
     * @return
     */
    @requestmapping("/name.do")
    public string getname(httpservletrequest request){
        string str = request.getparameter("name");
        system.out.print(str);
        return "jsp1/index";
    }

访问的时候在URL地址后输入 name参数

(2)、在列表上直接定义要接收的参数名,只要参数与传递进来的参数一致即可

 

/**
     * 在列表上直接定义要接收的参数名,只要参数与传递进来的参数一致即可
     * @param name
     * @return
     */
    @RequestMapping("/name1.do")
    public String getName1(String name){
        System.out.print(name);
        return "jsp1/index";

访问的时候在URL地址后输入 name参数

2、实体类

(1)、定义实体类,代码如下:

package com.learn.springmvc.model;

import java.util.Date;

public class Person {

    private String name;
    private Integer age;
    private Date brithday;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Date getBrithday() {
        return brithday;
    }
    public void setBrithday(Date brithday) {
        this.brithday = brithday;
    }
    
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", brithday="
                + brithday + "]";
    }
    
}

 

(2)、传递的参数名必须要和实体类中属性的 set 方法后面组成部分(字符串)一致,这样才能接受得到参数

/**
     * 传递的参数名必须要和实体类中属性的 set 方法后面组成部分(字符串)一致,这样才能接受得到参数
     * 请求中传的参数只要能和参数列表中的参数名或者是实体类中set方法后面的字符串一致就能够就收到
     * @param person
     * @return
     */
    @RequestMapping("/person.do")
    public String getPerson(Person person){
        System.out.print(person);
        return "jsp1/index";
    }

 

(3)、注册时间类型的属性编辑器

/**
     * 注册时间类型的属性编辑器
     * @param binder
     */
    @InitBinder
    public void initBinder(ServletRequestDataBinder binder){
        binder.registerCustomEditor(Data.class, new CustomDateEditor(new SimpleDateFormat("yyyy-mm-dd"), true));
    }

 

3、获取数组,代码如下:

/**
     * 接收数组
     * @param arr
     * @return
     */
    @RequestMapping("/arr.do")
    public String getArr(String[] arr){
        for(String str : arr){
            System.out.print(str);
        }
        return "jsp1/index";
    }
posted on 2014-06-23 06:06  hwlsniper  阅读(325)  评论(0)    收藏  举报