《Java从入门到放弃》入门篇:springMVC数据传递 (二)
上一篇讲完了springMVC中数据传递中的接收数据,今天继续完成数据的向后传递。
数据传递的核心对象ModelAndView,注意其包名,不要引用错了!
正确的:org.springframework.web.servlet.ModelAndView
错误的:org.springframework.web.portlet.ModelAndView
我们继续完成前面的登录功能:
如果登录成功则跳转到index.jsp,并显示“欢迎你:xxxx(用户的昵称)”。
如果登录失败则回到login.jsp,并显示提示信息“猪脑子,账号和密码都输不对!”。
具体实现步骤如下:
1.1)修改User类,添加昵称属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class User { private String loginid; private String loginpwd; private String nickname; //用户昵称 public String getLoginid() { return loginid; } public void setLoginid(String loginid) { this .loginid = loginid; } public String getLoginpwd() { return loginpwd; } public void setLoginpwd(String loginpwd) { this .loginpwd = loginpwd; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this .nickname = nickname; } } |
1.2)修改MyController类,添加login4方法(注意当前方法的返回值和之前方法的区别)。
1
2
3
4
5
6
|
@RequestMapping ( "/login4" ) public ModelAndView login4( @ModelAttribute ( "user" ) User use){ ModelAndView mav = new ModelAndView( "index.jsp" ); //默认目标视图index.jsp return mav; } |
1.3)在login4方法内判断账号(admin)和密码(666),正确就跳转到index.jsp,错误则回到login.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@RequestMapping ( "/login4" ) public ModelAndView login4( @ModelAttribute ( "user" ) User use){ ModelAndView mav = new ModelAndView( "index.jsp" ); if (use.getLoginid().equals( "admin" ) && use.getLoginpwd().equals( "666" )){ use.setNickname( "我是黄河你是海流" ); mav.addObject( "user" , use); //添加需要传递到下一个视图的数据 } else { mav.addObject( "msg" , "猪脑子,账号和密码都输不对!" ); mav.setViewName( "login.jsp" ); //修改视图 } return mav; } |
1.4)修改loing.jsp和index.jsp页面,在页面上加入信息的显示。
login.jsp页面
1
2
3
4
5
6
7
8
|
< body > < form action = "login2.form" method = "post" > 账号:< input name = "loginid" type = "text" />< br /> 密码:< input name = "loginpwd" type = "password" />< br /> < input type = "submit" value = "登录" /> </ form > < div style = "color:red;" >${msg }</ div > </ body > |
index.jsp页面
1
2
3
|
< body > 欢迎你:${user.nickname }< br /> </ body > |
1.5)运行并查看结果(数据是否正确从Controller类传递到JSP页面)
===================================================
注意:ModelAndView相关于使用request传递数据,如果有多个页面需要使用用户信息,那么还是需要把user对象保存到session 。
===================================================
在springMVC中使用request,response,session对象也非常方便,
将login4的代码修改如下(当前功能只使用session):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@RequestMapping ( "/login4" ) public ModelAndView login4( @ModelAttribute ( "user" ) User use, HttpServletRequest request, HttpServletResponse response, HttpSession session){ ModelAndView mav = new ModelAndView( "index.jsp" ); if (use.getLoginid().equals( "admin" ) && use.getLoginpwd().equals( "666" )){ use.setNickname( "我是黄河你是海流" ); //mav.addObject("user", use); //添加需要传递到下一个视图的数据 session.setAttribute( "user" , use); } else { mav.addObject( "msg" , "猪脑子,账号和密码都输不对!" ); mav.setViewName( "login.jsp" ); //修改视图 } return mav; } |