再说说如何从页面获取参数的方式
1.通过HttpServletRequest request来获取,request.getParameter();
@RequestMapping(value = "/list.do")
public String list(HttpServletRequest request){
String name=request.getParameter("userName");
return "userinfo/user_list";
}
2.
直接定义参数,保证参数和前台标签的name一致即可
java代码
@RequestMapping(value = "/list.do")
public String list(@RequestParam(value = "uName") String userName,
Integer userPassword, String userSex) {
System.out.println(userName + "\t" + userPassword + "\t" + userSex);
return "userinfo/user_list";
}
jsp代码
<form action="user/list2.do" method="post">
姓名:<input type="text" name="userName"/><br/>
<-- 姓名2:<input type="text" name="uName"/><br/>-->
密码:<input type="text" name="userPassword"/><br/>
性别:<input type="text" name="userSex"/><br/>
日期:<input type="text" name="userTime"/>
<input type="submit" name="commit" value="提交"/>
</form>
注意:
1,@RequestParam()这个可以设置从页面传的参数设置默认值。或者设置别名(例如:input标签中name=”userName”时,此方法可以获取到该标签的value值,当name=”uName”时,也可以获取到该标签的value值)
2,直接定义参数方式,参数可以自动转换格式,例如页面时String类型的密码,参数可以为Integer类型,它可以自动转换(这点非常好)
3. 通过对象来获取值
@RequestMapping(value = "/list2.do")
public String list2(User us, Date userTime) {
System.out.println(us.getUserName() + "\t" + us.getUserPassword()
+ "\t" + us.getUserSex());
System.out.println(userTime);
return "userinfo/user_list";
}
@InitBinder
public void initBinder(WebDataBinder binder) { //自动转换成Date类型
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(
dateFormat, false));
}
注意:参数为日期类型时,需要定一下检测日期类型的方法,进行格式转换。
如何从控制器中传值到页面呢?
1.最原始的,通过HttpServletRequset request来传递,request.setAttribute();@RequestMapping(value="/add1.do")
public String add(HttpServletRequest request){
String userNumber = request.getParameter("userNumber");
String passWord = request.getParameter("passWord");
System.out.println("userNumber:"+userNumber+" passWord:"+passWord);
String str = "userNumber:"+userNumber+" passWord:"+passWord;
request.setAttribute("user", str);
return "user_add1";
}
2. 通过ModelAndView来传递到页面
@RequestMapping(value="/add2.do")
public ModelAndView add2(){
ModelAndView mav = new ModelAndView("user_add2");
mav.addObject("userId", 1001);
mav.addObject("userName", "张三");
return mav;
}
3. 通过model来传递(一般开发这个比较用的多)
@RequestMapping(value="/add3.do")
public String add3(Model model){
model.addAttribute("personId", 9527);
model.addAttribute("personName", "唐伯虎");
return "user_add3";
}
4. 通过map来传递
@RequestMapping(value="/add4.do")
public String add4(Integer personId,String userName,Map map){
System.out.println(personId);
System.out.println(userName);
map.put("personId", 9527);
map.put("personName", "唐伯虎");
return "user_add4";
}