1. 程式人生 > >Spring MVC之請求引數和路徑變數

Spring MVC之請求引數和路徑變數

請求引數和路徑引數都可以用於傳送值給伺服器。二者都是URL的一部分。

一、請求引數

  請求引數採用key = value形式,並用“&”分隔。例如下面的URL帶有名為name和pwd的請求引數。
  localhost:9090/showUser?name=spring&pwd=spring
  在傳統的servlet程式設計中,可以使用HttpServletRequest的getParameter方法來獲取請求引數值。
  String name = httpServletRequest.getParameter(“name”);
  Spring MVC 提供了一個更簡單的方法來獲取請求引數:通過註解@RequestParam來註釋方法引數。根據上面的URL,編寫一個對映函式。

@RequestMapping(value="/showUser/")
 public String testRequestParam(@RequestParam String name, @RequestParam String pwd, Map<String, Object> model){
  model.put("name", name);
  model.put("pwd", pwd);
  return "showUser";
 }

執行結果如下:

這裡寫圖片描述

二、路徑引數

 路徑引數類似請求引數,但沒有key部分,只是一個值。例如下面的URL:
 http://localhost:9090/showUser/spring


其中的spring是表示使用者的密碼字串。在Spring MVC中,spring被作為路徑變數用來發送一個值到伺服器。Sping 3以後Spring 3以後支援註解@PathVariable用來接收路徑引數。為了使用路徑變數,首先需要在RequestMapping註解的值屬性中新增一個變數,該變數必須放在花括號之間,例如:
@RequestMapping(value= “/showUser/{pwd}”)
然後在方法簽名中加上@PathVariable註解。具體程式碼如下:

@RequestMapping(value= "/showUser/{pwd}")
 public String testPathVariable
(@PathVariable(name="pwd") String password, Map<String, Object> model){ model.put("pwd", password); return "showUser"; }

執行結果:

這裡寫圖片描述

可以在請求對映中使用多個路徑變數。例如,下面定義了userId和orderId兩個路徑變數。
@RequestMapping(value= “/showUser/{userId}/{orderId}”)。

本文使用同一個jsp檔案,如下

<!DOCTYPE html >
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 <body>
  <div class="login-item">
   <label>使用者名稱:</label>
   <span>${name}</span>
  </div>
  <div class="login-item">
   <label>密碼:</label>
   <span>${pwd}</span>
  </div>
 </body>
 <script src="/static/js/jquery-3.1.1.min.js"></script>
</html>