springmvc接收參數?
1.接收簡單參數,在Controller的方法后面添加相應的參數列表,Controller的參數列表要和view層傳的參數名一致。
2.接收對象參數,在Controller的方法后面添加相應的實體類,實體類的屬性名要和view層傳的參數名一致。
Controller類
package com.zhiyou100.kfs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.zhiyou100.kfs.bean.User;
@Controller
@RequestMapping("/login")
public class LoginController {
@RequestMapping("/login.do")
public ModelAndView login(String username,String password) {//要和view層傳的參數名一致
ModelAndView mv=new ModelAndView("login");
if("張三".equals(username)&&"admin".equals(password)) {
mv.addObject("name", "歡迎"+username+"!");
}else {
mv.addObject("name", "出錯了!");
}
return mv;
}
@RequestMapping("/login1.do")
public ModelAndView login1(User user) {//實體類的屬性名對應要和view層傳的參數名一致
ModelAndView mv=new ModelAndView("login");
if("張三".equals(user.getUsername())&&"admin".equals(user.getPassword())) {
mv.addObject("name", "歡迎"+user.getUsername()+"!");
}else {
mv.addObject("name", "出錯了!");
}
return mv;
}
}
和jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
${name }
<a href="/SpringMVC/login/login.do?username=張三&&password=admin">跳轉到login.do</a>
<a href="/SpringMVC/login/login1.do?username=張三&&password=admin">跳轉到login1.do</a>
</body>
</html>
3.接收日期時間參數
a) 只能接受一個日期時間使用@initBinder在Controller:當接收的日期時間參數時會先經過該方法進行處理,但網頁傳的日期時間格式要和bider格式一樣。
需要在接收日期時間參數的Controller里增加:
@InitBinder
public void initBinder(ServletRequestDataBinder binder){
//只要網頁中傳來的數據格式為yyyy-MM-dd 就會轉化為Date類型,
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
b) 能接受多個日期時間參數,在實體類對應屬性上使用@DateTimeFormart(pattern=”yyyy-MM-dd”)
4.接收對象中的對象的屬性值(包裝類:此處不是int等基本類型的包裝類,而是對象里有個對象),例如User類里有個person對象(Person類有age屬性,getter和setter)
a) 在頁面傳參數時name要是對象中的對象名點屬性名(person.age)
personAge:<input type="text" name="person.age"/>
b) 在controller層正常用user對象接就能接到了。