SpringMVC學習2——SpringMVC與jsp的參數傳遞和返回值響應

SpringMVC學習2——SpringMVC與jsp的參數傳遞和返回值響應

解決提交亂碼的問題:

在web.xml中加入過濾器:

<!-- 解決post亂碼問題 -->
	 <filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<!-- 設置編碼參是UTF8 -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

參數傳遞

獲取get請求中的參數

@RequestMapping("/addUser1")
public String addUser1(String username,String password) {
  System.out.println("username is:"+username);
  System.out.println("password is:"+password);
  return "demo/index";
}

// 可以用@RequestParam("password")來進行參數名的轉換
public String addUser1(String username, @RequestParam("password") String psw) {...}

// 設定參數必傳和默認值
public String addUser1(String username, @RequestParam(value="password",required=true, defaultValue="123") String psw) {...}

通過HttpServletRequest接收

 @RequestMapping("/addUser2")
    public String addUser2(HttpServletRequest request) {
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        System.out.println("username is:"+username);
        System.out.println("password is:"+password);
        return "demo/index";
}

注意:post方式和get方式都可以, 但不能接收json, post方式的時候編碼方式需設置爲:x-www-form-urlencoded轉換爲鍵值對

通過一個bean來接收


@RequestMapping("/doLogin")
    public User doLogin(User u) {
        logger.info("name: " + u.getName());
        logger.info("pswd: " + u.getPswd());
        User user = new User();
        user.setName(u.getName());
        user.setPswd(u.getPswd());

        return user;
    }
    
注意: post方式和get方式都可以,同時,也可以接受json數據

使用Map接收json

@RequestMapping("/doLogin")
    public @ResponseBody User doLogin(@RequestBody Map<String, String> u) {

        logger.info("name: " + u.get("name"));
        logger.info("pswd: " + u.get("pswd"));

        User user = new User();
        user.setName(u.get("name"));
        user.setPswd(u.get("pswd"));

        return user;
    }

返回值響應

返回值響應有三種:

1、返回ModelAndView 2、返回void 但是用request和response進行額外處理 3、返回string

這裏主要看下2、3

返回void 但是用request和response進行額外處理

	@RequestMapping("queryVoid")
	public void queryVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {

		// request響應用戶請求
		// request.setAttribute("msg", "這個是request響應的消息");
		// request.getRequestDispatcher("/WEB-INF/jsp/msg.jsp").forward(request,
		// response);

		// response響應用戶請求
		// response.sendRedirect("itemList.action");
		// 設置響應的字符編碼
		// response.setContentType("text/html;charset=utf-8");

	}

注意:request 做跳轉可以帶入參數,response做跳轉無法帶入參數

返回string

	@RequestMapping("item/{id}")
	public String itemQuery(@PathVariable("id") Integer ids,Model model) {
		...
		return "forward:itemList:action";
	}

通過前綴forward,redirect 進行尋址,相當於requst的請求轉發和response請求重定向。也可以直接寫頁面id

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章