有关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;
}
- 有关springMvc跳转的特点
- SpringMVC的页面跳转
- SpringMvc的服务器端跳转和客户端跳转
- springmvc的一个跳转特性
- springmvc跳转页面的方法
- SQLServer2005—有关开发的10个最重要的特点
- springmvc 跳转
- 谈一下有关外观的食品包装设计特点
- 有关二维数组面试---根据二维数组的特点
- 有关spring springMVC mybatics的配置
- springmvc的 action之间跳转解决方法
- SpringMVC 的redirect 和forward 跳转
- SpringMVC中ModelAndView跳转错误的问题
- springmvc中controller之间的跳转
- SpringMVC 跳转结果的方式.练习笔记
- springmvc中方法之间的跳转。
- SpringMVC 跳转到不同的jsp目录
- Springmvc几种页面跳转的方式
- deeplearning4j之GloVe实现实现
- 基于SIFT特征的全景图像拼接
- 异常处理综合理解
- git-创建空白分支
- linux下安装zookeeper服务
- 有关springMvc跳转的特点
- equal hashcode compareTo使用时机
- struts2-Action-1-示例
- 关于mybatis传空值的处理
- JS笔记一
- Java 中 Comparable 和 Comparator 比较
- 日志配置ogback slf4j
- git版本切换问题
- cookie和session2