springmvc -- springMVC笔记3--controller到jsp的故事
创建项目,配置与注解实现时相同,只是将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,它需要程序指定要跳转的目标,但是不需要解析器;
