欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有关springMvc跳转的特点 博客分类: springmvc springMvc 

程序员文章站 2024-03-16 14:59:28
...

有关springMvc跳转的特点:

 

 

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

 

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

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

 

动作性跳转:

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

有关springMvc跳转的特点
            
    
    博客分类: springmvc springMvc 

 

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

有关springMvc跳转的特点
            
    
    博客分类: springmvc springMvc 

 

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;

}

 

 

 

 

 

相关标签: springMvc