1. 程式人生 > >SpringMVC傳值、轉發、重定向例子

SpringMVC傳值、轉發、重定向例子

modelmap mapping 成功 實體 this 測試 set import 方法參數

  1. 練習接收頁面參數值
    1. 使用request
    2. 使用@RequestParam註解
    3. 使用實體對象
  2. 練習向頁面傳出數據
    1. 使用HttpServletRequest和session
    2. 使用ModelAndView對象 (內部為利用HttpServletRequest的Attribute傳遞數據到頁面)
    3. 使用ModelMap對象 (內部為利用HttpServletRequest的Attribute傳遞數據到頁面)
    4. 使用@ModelAttribute註解 (內部為利用HttpServletRequest的Attribute傳遞數據到頁面)
  3. 練習使用session
    1. 在Controller方法參數上直接聲明HttpSession即可使用
  4. 練習重定向
    1. 使用RedirectView
    2. 使用redirect:
技術分享圖片
package web;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; import
entity.User; //非註解方式 //public class HelloController implements Controller { // // // public ModelAndView handleRequest(HttpServletRequest request, // HttpServletResponse response) throws Exception { // System.out.println("Hello, Controller."); // return new ModelAndView("jsp/hello"); // } // //} @Controller @RequestMapping("/demo") public class HelloController{ private Integer age=22; @RequestMapping("hello.do") public ModelAndView hello(HttpServletRequest request, HttpServletResponse response) throws Exception{ return new ModelAndView("jsp/hello"); } /** * 測試request接收參數*/ @RequestMapping("test1.do") public ModelAndView test1(HttpServletRequest req){ String userName = req.getParameter("userName"); String password = req.getParameter("password"); System.out.println(userName); System.out.println(password); return new ModelAndView("jsp/hello"); }

    /**
    * 測試sping會自動將表單參數註入到方法參數
    * 最好每個形參前都添加@requestparameter
    * 通過反射只能得到方法參數類型不能等到方法參數名稱 沒有加註解能成功獲得為編譯器自動添加
    */

    @RequestMapping("test2.do")
    public ModelAndView test2(String userName,
            @RequestParam("password") String pwd){
        System.out.println(userName+","+pwd);
        return new ModelAndView("jsp/hello");
    }
    
    /**
     * 測試對象接收參數
     */
    @RequestMapping("test3.do")
    public ModelAndView test3(User user){
        System.out.println(user);
        return new ModelAndView("jsp/hello");
    }
    
    /**
     * 使用ModelAndView傳出參數 內部 HttpServletRequest的Attribute傳遞到jsp頁面
   * ModelAndView(String viewName,Map data)data是處理結果
*/ @RequestMapping("test4.do") public ModelAndView test4(User user){ Map<String, Object> data = new HashMap<String, Object>(); data.put("user", user); return new ModelAndView("jsp/hello",data); } /** * 使用ModelMap傳出參數 內部HttpServletRequest的Attribute傳遞到jsp頁面 */ @RequestMapping("test5.do") public ModelAndView test5(User user,ModelMap modelMap){ modelMap.put("user", user); return new ModelAndView("jsp/hello"); } /** * 使用ModelAttribute 內部HttpServletRequest的Attribute傳遞到jsp頁面 * 在Contoller的參數部分或者bean屬性方法上使用 */ @RequestMapping("test6.do") public ModelAndView test6(@ModelAttribute("user")User user){ return new ModelAndView("jsp/hello"); } @ModelAttribute("age") public Integer getAge(){ return age; } /** * session存儲 可以使用HttpServletRequest的getSession方法訪問 */ @RequestMapping("test7.do") public ModelAndView test7(HttpServletRequest req){ HttpSession session = req.getSession(); session.setAttribute("salary", 6000.0); return new ModelAndView("jsp/hello"); } //返回String 轉發 @RequestMapping("/test8.do") public String test8(User user, ModelMap model) { model.addAttribute("user", user); return "jsp/hello"; } /** * 錯誤頁面 */ @RequestMapping("test9.do") public String test9(){ return "error/error"; } /** *使用RedirectView重定向 */ @RequestMapping("test10") public ModelAndView test10(User user){ if(user.getUserName().equals("123")){ return new ModelAndView("jsp/hello");//test10.do 轉發 }else{ return new ModelAndView(new RedirectView("test9.do"));//test9.do?age=22 重定向 } } /** * 使用redirect重定向 */ @RequestMapping("test11") public String test11(User user){ if(user.getUserName().equals("123")){ return "jsp/hello"; }else{ return "redirect:test9.do"; } } }
技術分享圖片

user實體

技術分享圖片
package com.tarena.entity;
import java.io.Serializable;
public class User implements Serializable {
    private Integer id;
    private String userName;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
技術分享圖片

SpringMVC傳值、轉發、重定向例子