spring mvc中登录用户信息的传递

原理:

1 使用session来传递用户信息

2 set方,通过Model.setAttribute写入

另外加入@SessionAttribute (FIXME)

3 get方,通过Session.getAttribute获得

根据《spring mvc 学习指南》(林仪明等翻译,第50页)。每个请求处理方法可以有多个不同类型的参数,如果需要HttpSession对象,就可以添加HttpSession作为参数。


代码例子

set的例子

/**
 * 登录Controller
 */
@Controller
@SessionAttributes("username")
public class LoginController extends BaseController {
     public static boolean isValidate=false;
	/**
	 * 管理登录
	 */
	/**
	 * 登录成功,进入管理首页
	 */
	@RequiresUser
	@RequestMapping(value = "")
	public String index(HttpServletRequest request, final HttpServletResponse response,Model model) {

		User user = UserUtils.getUser();
		// 未登录,则跳转到登录页
		if (user.getId() == null) {
			return "redirect:" + "/login";
		}

		//传出用户名
		model.addAttribute("username", user.getName());
		
		return "modules/sys/sysIndex";
	}


在一个页面get的例子


	
	@RequiresPermissions("sys:user:edit")
	@RequestMapping(value = "save")
	public String save(Work work,
			HttpServletRequest request, Model model,
			RedirectAttributes redirectAttributes, HttpSession session) {
        
		//用户名是在登录时设置的,参考LoginController.java:index()
		String username = (String)session.getAttribute("username");
		if(username.isEmpty())
		{
		}

		if (!beanValidator(model, work)) {
			return form(work, model);
		}


		// 保存用户信息
		//systemService.saveUser(user);
		// 清除当前用户缓存
		//if (user.getLoginName().equals(UserUtils.getUser().getLoginName())) {
		//	UserUtils.getCacheMap().clear();
		//}
		addMessage(redirectAttributes, MessageUtils.getInstance()
				.getMessage("save.work", "保存任务")+" '"+  work.getWorkName() +"' "+ MessageUtils.getInstance().getMessage("success", "成功"));
		return "redirect:" + "/work/mywork/?repage";
	}



你可能感兴趣的:(spring mvc中登录用户信息的传递)