首页 > 代码库 > SpringMVC学习笔记(四)

SpringMVC学习笔记(四)

一.Controller接受网页参数.

   1.使用方法的形参来接受

//使用基本类型和字符串来接受
@RequestMapping(value="http://www.mamicode.com/param2.do")
public String param(People p){
     System.out.printlt(p.getName()+"===="+p.getAge());
     return "param";
}
注意:该方法的形参一定要和网页参数名相同.而且这种方式可以自动转型.
public class Person {
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    private String name;
    private int age;  
}

//使用
对象类型来接受 @RequestMapping(value="http://www.mamicode.com/param2.do") public String param(People p){ System.out.printlt(p.getName()+"===="+p.getAge()); return "param"; }

 

 2.使用request来接受基本类型.

   

@RequestMapping(value="http://www.mamicode.com/param.do")
public String param(HttpServletRequest request,HttpServletResponse response){
     String name=request.getParameter("name");
     String age=request.getParameter("age");
     System.out.printlt(name+"===="+age);
     return "param";
}

 如果接受的类型为时间类型我们可以做如下方式来处理.

//boxing automatically
@RequestMapping("/person1")
public String toPerson(Person p){
    System.out.println(p.getName()+" "+p.getAge());
    return "hello";
}
//1.该方法只能适合本控制层.
@InitBinder
public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); }

 //2.可以定义一个全局时间转化类.

public class DateConvert implements Converter<String, Date> {

    @Override
    public Date convert(String stringDate){
        System.out.println("=======================_______");
        //时间转化类(时间格式)
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return simpleDateFormat.parse(stringDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}

 在SpringMVC配置文件中声明该配置类

<!-- 第三步:注册处理器映射器/处理器适配器 ,添加conversion-service属性-->
   
    <mvc:annotation-driven conversion-service="conversionService"/>
   
    <!-- 第二步: 创建convertion-Service ,并注入dateConvert-->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="dateConvert"/>
            </set>
        </property>
    </bean>
    <!-- 第一步:  创建自定义日期转换规则  class:为时间转化类的全类名-->   
    <bean id="dateConvert" class="com.eduask.ykq.controller.DateConvert"/>

 

二.如何向网页响应数据

   1.可以把数据保存在request对象中

    

//pass the parameters to front-end
@RequestMapping("/show")
public String showPerson(HttpServletRequest request,HttpServletResponse response){
    Person p =new Person();
    
    p.setAge(20);
    p.setName("jayjay");
    request.setAttribute("p",p);
    return "show";
}

 

   2.可以把数据保存在ModelAndView中 但是这种方式的方法的返回类型必须是ModelAndView

//pass the parameters to front-end
@RequestMapping("/show")
public ModelAndView showPerson(){
    Person p =new Person();
    
    p.setAge(20);
    p.setName("jayjay");
    ModelAndView andView=new ModelAndView("show");
    andView.addObject("p",p);
    return andView;
}

 

   3.可以把数据保存在Model中

  

//pass the parameters to front-end
@RequestMapping("/show")
public String showPerson(Model model){
    Person p =new Person();
    
    p.setAge(20);
    p.setName("jayjay");
    model.addAttribute("p",p);
    return "show";
}

 

   4.可以把数据保存在Map中

//pass the parameters to front-end
@RequestMapping("/show")
public String showPerson(Map<String,Object> map){
    Person p =new Person();
    map.put("p", p);
    p.setAge(20);
    p.setName("jayjay");
    return "show";
}

   前台可在Request域中取到"p"

 

SpringMVC学习笔记(四)