有关springMvc跳转的特点

来源:互联网 发布:erp系统在哪下载 php 编辑:程序博客网 时间:2024/06/16 22:21

有关springMvc跳转的特点:

 

 

页面的跳转会显示在地址栏,ajax不会

 

请求跳转(要么直接路径请求,要么方法里求动作性(controller在调用一个controller)),或直接请求页面(配置不走方法,要么方法里字符串视图),

不管哪种跳转都会把model带到跳转的目的地

 

动作性跳转:

forward:转发,参数不会出现在地址栏,类似post////////////多用在登陆上,服务器直接转发共享request

 

redirect:重定向,参数会出现在地址栏,服务求让浏览器自己(第二次)再去请求重定向地址所以有两个request,request不共享

 

return "redirect:////"

 

常规页面:

modelView();

return "///"

 

示例:

 

@RequestMapping(value = "/index")

public ModelAndView index(HttpSession session, HttpServletRequest request) throws EsteelException {

return new ModelAndView("/login");//常见页面

}

 

@RequestMapping(value = "/mangerIndex")

public String dwzIndex( ModelMap model,HttpSession session, HttpServletRequest request) throws EsteelException {

return "/dwzIndex";//常见页面

}

 

@RequestMapping(value = "/login")

public String login(OpmUser currUser, ModelMap model, HttpSession session, HttpServletRequest request) throws Exception {

Subject currentUser = SecurityUtils.getSubject(); // 获取当前的Subject

// 验证是否登录成功public static final String FORWARD_URL_PREFIX = "forward:";

String resultPageURL = InternalResourceViewResolver.FORWARD_URL_PREFIX + "/";

if(currentUser.isAuthenticated()){

 

System.out.println("用户[" + currentUser.getPrincipal() + "]登录认证通过");

Session session1 = currentUser.getSession();

OpmUser user =(OpmUser) session1.getAttribute("currentUser");

OpmUserRole u = new OpmUserRole();

u.setUserid(user.getId());

List<OpmUserRole> ur=opmUserRoleService.getOpmUserRole(u);//本系统中是一个用户一个角色

String roleId="";

String leave=user.getLevel1();

if(ur!=null&&ur.size()>0&&ur.get(0)!=null){

roleId=ur.get(0).getRoleid();

}

model.addAttribute("username", currentUser.getPrincipal());

model.addAttribute("roleId", roleId);//当前用户登录角色ID

model.addAttribute("id", roleId);//当前修改维护的角色Id

model.addAttribute("leave",leave);

model.addAttribute("organid",user.getOrganid());

return resultPageURL+"mangerIndex";//动作性跳转

}

 

String username = request.getParameter("username");

String password = request.getParameter("password");

opmUserService.getOpmUsers();

String verifyCode = (String) request.getSession().getAttribute("validateCode"); // 获取HttpSession中的验证码

String submitCode = WebUtils.getCleanParam(request, "verifyCode"); // 获取用户请求表单中输入的验证码

if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){

return resultPageURL+"index";

}

if (!StringUtils.equals(verifyCode.toLowerCase(), submitCode.toLowerCase())) {

request.setAttribute("message_login", "验证码不正确");

return resultPageURL+"index";

}

//password = MD5.encryptMD5(Base64.encode(password));

password = PasswordMD5.createEncryptPSW(password);

/* password = MD5.encryptMD5(Base64.encode("111111")); */

UsernamePasswordToken token = new UsernamePasswordToken(username, password); // 为了验证登录用户而封装的token

token.setRememberMe(true);// 设计记住用户

 

try {

// 在调用了login方法后,SecurityManager会收到AuthenticationToken,并将其发送给已配置的Realm执行必须的认证检查

// 每个Realm都能在必要时对提交的AuthenticationTokens作出反应

// 所以这一步在调用login(token)方法时,它会走到AuthenticationRealm.doGetAuthenticationInfo()方法中,具体验证方式详见此方法

currentUser.login(token);

resultPageURL = "dwzIndex";

} catch (UnknownAccountException uae) {

System.out.println("对用户[" + username + "]进行登录验证..验证未通过,未知账户");

request.setAttribute("message_login", "未知账户");

} catch (IncorrectCredentialsException ice) {

System.out.println("对用户[" + username + "]进行登录验证..验证未通过,错误的凭证");

request.setAttribute("message_login", "密码不正确");

} catch (LockedAccountException lae) {

System.out.println("对用户[" + username + "]进行登录验证..验证未通过,账户已锁定");

request.setAttribute("message_login", "账户已锁定");

} catch (ExcessiveAttemptsException eae) {

System.out.println("对用户[" + username + "]进行登录验证..验证未通过,错误次数过多");

request.setAttribute("message_login", "用户名或密码错误次数过多");

} catch (AuthenticationException ae) {

// 通过处理Shiro的运行时AuthenticationException就可以控制用户登录失败或密码错误时的情景

System.out.println("对用户[" + username + "]进行登录验证..验证未通过,堆栈轨迹如下");

ae.printStackTrace();

request.setAttribute("message_login", "用户名或密码不正确");

}

// 验证是否登录成功

if (currentUser.isAuthenticated()) {

System.out.println("用户[" + username + "]登录认证通过");

Session session1 = currentUser.getSession();

OpmUser user =(OpmUser) session1.getAttribute("currentUser");

OpmUserRole u = new OpmUserRole();

u.setUserid(user.getId());

List<OpmUserRole> ur=opmUserRoleService.getOpmUserRole(u);//本系统中是一个用户一个角色

String roleId="";

String leave=user.getLevel1();

if(ur!=null&&ur.size()>0&&ur.get(0)!=null){

roleId=ur.get(0).getRoleid();

}

model.addAttribute("username", username);

model.addAttribute("roleId", roleId);//当前用户登录角色ID

model.addAttribute("id", roleId);//当前修改维护的角色Id

model.addAttribute("leave",leave);

model.addAttribute("organid",user.getOrganid());

return "dwzIndex";

} else {

token.clear();

}

return resultPageURL;

}

 

 

 

 

 

0 0
原创粉丝点击