发表于: 2017-11-26 23:29:26

1 696


今日完成的事情:

今天首先制作一个展示个人信息详情的页面,但是写好之后,发现没有办法跳转。因为:

 @RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(String phone, String passWord, HttpServletResponse response,
                       Model model,RedirectAttributes attributes) throws Exception {
中间的代码省略掉了
               //重定向之后向home主页传输数据
               //把用户手机号,就是用户的账号放入RedirectAttributes中
               //这种方法,用户的手机号码,在url中显示
//                attributes.addAttribute("phone",phone);
               //为了用户安全,把用户手机号,就是用户的账号放入RedirectAttributes中
               attributes.addFlashAttribute("phone",phone);
               attributes.addFlashAttribute("msg","Welcome");
               return "redirect:/u/home";
           } else {
model.addAttribute("msg", "密码不正确");
               return "error";
           }
} else {
model.addAttribute("msg", "手机号不正确");
           return "error";
       }
}

我的控制器最后是重定向到控制器,由控制器转发页面,所以重定向之后没有办法把数据传输到跳转的那个页面。

由于重定向相当于发送了两次请求。如果不用重定向的话,直接跳转到返回home页面,也可以实现。

但是我的操作逻辑是:

登陆之后是home页面,然后home页面可以点击个人信息,进去个人信息就可以查看和修改个人信息,并且home页面是不登陆就看不了的一个页面,被拦截器拦截。

然后为了实现这一串逻辑,我又重新学习了一个方法,用来实现重定向的同时,可以连带数据一起传输。

1)拼写url:

//这种方法,用户的手机号码,在url中显示
attributes.addAttribute("phone",phone);

效果:

url就把我的手机号拼写到了后面,然后可以在用@pathVariable获得手机号。后来考虑到这种方式,在你浏览home页面的时候会一直显示手机号,不安全,而且私密性不太好。所以弃用。

2)使用如下方法,RedirectAttributes里的值在页面使用刷新后会删除,所以也不会造成重复提交。

//为了用户安全,把用户手机号,就是用户的账号放入RedirectAttributes中
attributes.addFlashAttribute("phone",phone);
attributes.addFlashAttribute("msg","Welcome");

然后:

//主页,不登陆进入不了主页
@RequestMapping(value = "/u/home", method = RequestMethod.GET)
public String home(@ModelAttribute("phone") String phone, @ModelAttribute("msg") String msg) {
return "home";
}
//个人信息主页,此页可以查看和修改个人信息

用@ModelAttribute把存储在flashAttribute中的数据传回来,并且绑定到phone,前台就可以用EL表达式轻松获得数据。

至此,完美解决问题。

然后下午在准备小课堂,并且在做小课堂ppt。

这次小课堂,主要讲一下在任务六里面用到的memcache。

原理性的东西太复杂,自己也理解的不是很好。就讲一下memcache如何使用,以及常用的一些方法。

主要讲解memcache的操作命令,存储命令,查找命令,统计命令。

存储命令里面有,set,add,replace,append,prepend,以及cas。

查找命令里面有:get,gets,delete,incr和decr。

统计命令里面有:stas,stas items,stas slabs,stas size,flushAll。

具体如何使用明天会代码演示部分给大家操作。

明日计划的事情:

明日小课堂。

遇到的问题:

springMVC里面的东西挺多的,自己当时只顾做任务,回头来看一下,自己只是会了一点,还有很多的知识需要自己慢慢去补充。

收获:

重定向可以连带数据一起传递。

任务开始时间:2017/11/23

预计完成时间:2017/12/1

延期:无

禅道:http://task.ptteng.com/zentao/my-task.html



返回列表 返回列表
评论

    分享到