zoukankan      html  css  js  c++  java
  • spring mvc controller接收请求值及controller之间跳转及传值

    spring接收请求参数:

     

    1,使用HttpServletRequest获取

    Java代码  收藏代码
    1. @RequestMapping("/login.do")  
    2. public String login(HttpServletRequest request){  
    3.     String name = request.getParameter("name")  
    4.     String pass = request.getParameter("pass")  
    5. }  

     2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样

    Java代码  收藏代码
    1. @RequestMapping("/login")  
    2. public String login(HttpServletRequest request,  
    3.                                 String name,  
    4.  @RequestParam("pass")String password) // 表单属性是pass,用变量password接收  
    5. {  
    6.    log.info(name);  
    7.    log.info(password)  
    8. }  

     

    3,自动注入Bean属性

      

    Java代码  收藏代码
    1. <form action="login">  
    2. 用户名:<input name="name"/>  
    3. 密码:<input name="pass"/>  
    4. <input type="submit" value="登陆">  
    5. </form>  
    6.   
    7. //封装的User类  
    8. public class User{  
    9.   private String name;  
    10.   private String pass;  
    11. }  

     

    Java代码  收藏代码
    1. @RequestMapping("/login")  
    2. public String login(User user)  
    3. {  
    4.    log.info(user.getName());  
    5.    log.info(user.getPass());  
    6. }  

     

    向页面传值:

    当Controller组件处理后,向jsp页面传值,

    1,使用HttpServletRequest 和 Session  然后setAttribute(),就和Servlet中一样

    2,使用ModelAndView对象

    3,使用ModelMap对象

    4,使用@ModelAttribute注解

     

    Model数据会利用HttpServletRequest的Attribute传值到success.jsp中

    Java代码  收藏代码
    1. @RequestMapping("/login")  
    2. public ModelAndView  login(String name,String pass){  
    3.     User user = userService.login(name,pwd);  
    4.     Map<String,Object> data = new HashMap<String,Object>();  
    5.     data.put("user",user);  
    6.     return new ModelAndView("success",data);  
    7. }  

     

    使用ModelMap参数对象示例:

    ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中

    Java代码  收藏代码
    1. @RequestMapping("/login.do")  
    2. public String login(String name,String pass ,ModelMap model){  
    3.     User user  = userService.login(name,pwd);  
    4.     model.addAttribute("user",user);  
    5.     model.put("name",name);  
    6.     return "success";  
    7. }  

     

     使用@ModelAttribute示例

    在Controller方法的参数部分或Bean属性方法上使用

    @ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中

    ModelMap对象的 addAttribute,put两个方法有什么区别就是 addAttribute是不允许添加空值的key,put是允许的

    Java代码  收藏代码
    1. @RequestMapping("/login.do")  
    2. public String login(@ModelAttribute("user") User user){  
    3.     //TODO  
    4.    return "success";  
    5. }  
    6.   
    7. @ModelAttribute("name")  
    8. public String getName(){  
    9.     return name;  
    10. }  

     

    Session存储:

    可以利用HttpServletReequest的getSession()方法

    Java代码  收藏代码
    1. @RequestMapping("/login.do")  
    2. public String login(String name,String pwd  
    3.                             ModelMap model,HttpServletRequest request){  
    4.      User user = serService.login(name,pwd);  
    5.      HttpSession session = request.getSession();  
    6.      session.setAttribute("user",user);  
    7.      model.addAttribute("user",user);  
    8.      return "success";  
    9. }  

     

    Spring MVC contorller跳转到另一个controller并传值

    示例均从createOrderForOld跳转到createOrder

          1: forward 请求转发

    @RequestMapping(value ="/createOrderForOld")

    public String createOrder(HttpServletRequest request,ModelMapmodel) {

    return"forward:/createOrder";

    }  

     @RequestMapping(value ="/createOrder")

        public String createOrder(String oderId,String orderName,ModelMap model) {

        return"index;

        }

         forward跳转,是请求转发,参数自动跳转,所以当http://localhost:8080/my-app/createOrderForOld?orderId=123 该链接请求createOrderForOld接口后 请求转发到createOrder接口时,参数自动带过来了,createOrder中oderId自动赋值为“123”,参数名称需一致,否则无法传参赋值。



        2: redirect 重定向

        @RequestMapping(value ="/createOrderForOld")

        public String createOrder(HttpServletRequest request,ModelMap model) {

        model.put("orderName","newOld");

        return"redirect:/createOrder?orderId=123";

        }    

        @RequestMapping(value ="/createOrder")

        public String createOrder(String oderId,String orderName,ModelMap model) {

        return"index";

        }

        当请求http://localhost:8080/my-app/createOrderForOld     链接请求createOrderForOld接口后 请求重定向到createOrder接口时,通过model.put方法 ,createOrder中oderName自动赋值为“newOld”,通过参数拼接orderId自动赋值为“123”。

        故redirect跳转到另一个controller是通过model还是拼接url均可。参数名称需一致,否则无法传参赋值。 

    RedirectAttributes和ModelMap或Model不推荐一起使用,因为在redirect传值时,同时存在,只有RedirectAttributes中参数值被传递,ModelMap或Model中变量不会传递。

  • 相关阅读:
    《DSP using MATLAB》 示例 Example 9.12
    《DSP using MATLAB》示例 Example 9.11
    《DSP using MATLAB》示例 Example 9.10
    《DSP using MATLAB》示例Example 9.9
    《DSP using MATLAB》示例 Example 9.8
    《DSP using MATLAB》示例Example 9.7
    《DSP using MATLAB》示例 Example 9.6
    《DSP using MATLAB》示例Example 9.5
    《DSP using MATLAB》示例 Example 9.4
    (转载)【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/jpfss/p/9542162.html
Copyright © 2011-2022 走看看