创建项目,配置与注解实现时相同,只是将spring-servlet.xml中的视图渲染器去除

package com.firefly.springmvc3.controller;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class WelcomeController {

@RequestMapping("/welcome")

public void welcome(HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException{

    //用servlet跳转

    //resp.getWriter().println("use spring mvc httpservlet api");

    resp.sendRedirect("redirect.jsp");

 

    //req.setAttribute("msg", "spring mvc api");

    //req.getRequestDispatcher("redirect.jsp").forward(req, resp);

}

@RequestMapping("/hello")

public String hello(){

//用springmvc跳转

    return "redirect:redirect.jsp";

    //return "redirect.jsp";

} 

}

注意上面的案例中,分别通过servlet的request和response以及springmvc的方法来进行了跳转,并且分别实现了转发和重定向


数据处理:

向一个controller传递数据:

   请求: http://localhost:8080/SpringMVC3/date?name=luoyang

    接收:

package com.firefly.springmvc3.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class DateController {

@RequestMapping("/date")

public String date(String name){

    System.out.println(name);

    return "redirect.jsp";

}

}

    以上date是controller 处理器的方法,后面接我们想要的参数,当传递的参数与接收方法的参数相同时,就可以接收数据了;

上面的案例中参数相同,下面是参数不相同的案例:

    请求:http://localhost:8080/SpringMVC3/date1?userName=luoyang

    接收:

@RequestMapping(“/date1”)

public String date1(@RequestParam("userName")String name){

    System.out.println(name);

    return "redirect.jsp";

}

上面配置中的userName是提交的域的名称

传递数据为一个对象时:

    请求:http://localhost:8080/SpringMVC3/user?name=liuxuliu&password=123

    接收:

@RequestMapping(“/user”)

public String user(User user){

    System.out.println(user);

    return "redirect.jsp";

}

以上为提交一个对象的情况,当然我们要创建一个User.java的bean,这里就不加代码了;


controller向视图传递数据:

    第一种方法:ModelAndView,这个方法就是HelloWorld项目中的方法,需要一个视图解析器

    第二种方法:通过ModelMap

@RequestMapping(“toJsp”)

public String toJsp(String name,ModelMap model){

    model.addAttribute("name",name);

    System.out.println(name);

    return "redirect.jsp";

}

    这种方法需要将ModelMap作为处理方法的参数

对以上两种方法的对比:

    共同点:当然就是都用来传递参数給视图

    不同点:ModelAndView自己就包含了跳转的视图的信息,但是需要一个解析器来解析;

                   ModelMap相当于就是封装了一个map,它需要程序指定要跳转的目标,但是不需要解析器;