`
y806839048
  • 浏览: 1108060 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

有关springMvc跳转的特点

阅读更多

有关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
分享到:
评论

相关推荐

    SpringMVC 4.0

    **SpringMVC 4.0 知识点详解** ...总的来说,SpringMVC 4.0是一个强大的Web应用开发框架,其注解驱动、模块化设计、易测试性等特点,使得开发人员能够更加专注于业务逻辑,从而提高开发效率和应用质量。

    SpringMVC controller

    SpringMVC以其轻量级、高效、灵活、易于测试等特点,被广泛应用于现代Java Web开发中,成为了Java开发社区中不可或缺的框架之一。 对于SpringMVC与其它MVC框架的对比,例如Struts、WebWork(WebWork2)等,每种框架...

    SpringMVC 学习总结

    2. **引入依赖**:如果使用 Maven,需要在 `pom.xml` 文件中引入 SpringMVC 的依赖和其他相关依赖。 ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-webmvc &lt;version&gt;5.3.20 &lt;groupId&gt;javax....

    Spring mvc结果跳转方法详解

    Spring MVC 结果跳转方法详解 Spring MVC 结果跳转方法是指在 Spring MVC 框架中,如何将请求结果跳转到指定的页面或执行特定...每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的方法来实现结果跳转。

    微信V3支付demo, 基于spring MVC

    - **前端跳转或扫码**:将预支付订单信息传递给前端,前端根据不同的应用场景(H5、APP、扫码支付)引导用户完成支付。 - **支付结果通知**:微信服务器在用户支付成功后,会主动向商户服务器发送支付结果通知,...

    基于spring+springmvc+hibernate的在线招标项目(免费提供源码)

    通过Spring框架实现了模块化的业务逻辑和依赖注入,Spring MVC负责处理用户请求和页面跳转,而Hibernate作为ORM框架则实现了数据持久化和访问。项目的亮点包括用户友好的界面设计、实时消息通知系统和安全可靠的数据...

    详解springMVC—三种控制器controller

    Spring MVC提供了三种类型的控制器,每种控制器都有其特点和应用场景。本文将对这三种控制器进行详细的介绍和分析。 1. 无需 Controller 代码的控制器 这种控制器不需要编写任何 Controller 代码,只需要在配置...

    Java家政服务网站设计+jsp基于Spring+SpringMVC+MyBatis框架.zip

    首页、家政资讯、家政服务、我的、跳转到后台等功能。系统中管理员主要是为了安全有效地存储和管理各类信息,还可以对系统进行管理与更新维护等操作,并且对后台有相应的操作权限。 要想实现家政服务网站的各项功能...

    Spring MVC配置文档及原理介绍

    - `springmvc-servlet.xml`:包含所有注解配置相关的设置。 **2. 类与包结构** 与XML配置的项目类似,但主要依赖注解来完成配置工作。 **3. 测试** 通过HTTP请求触发控制器方法,完成数据的存储,并重定向到指定...

    springmvc4+hibernate4+velocity1.7jar包

    下面将详细介绍这三个框架以及它们整合使用的相关知识点。 **Spring MVC** Spring MVC是Spring框架的一部分,它提供了一个用于构建Web应用程序的轻量级、灵活的MVC实现。Spring MVC通过DispatcherServlet处理HTTP...

    转发与重定向的区别

    在Web开发中,转发(Forward)和重定向(Redirect)是两种常见的页面跳转方式。这两种方法虽然都能实现页面的跳转,但其内部工作原理、对客户端的影响以及应用场景都有所不同。本文将详细介绍转发与重定向之间的区别...

    spring mvc 和 mybatis整合的实例

    它的主要特点是将SQL语句写在XML配置文件或者Mapper接口的方法注解中,这样可以保持SQL与Java代码的分离,提高了可读性和可维护性。MyBatis通过SqlSessionFactory创建SqlSession对象,然后通过SqlSession执行SQL并...

    基于ssm的货物进销管理系统.zip

    2. **Java**:作为后端开发的主要语言,Java以其跨平台、面向对象的特点,广泛应用于大型企业级应用。 3. **SpringBoot**:虽然标题中提到的是传统的SSM(Spring、SpringMVC、MyBatis)组合,但SpringBoot是现代Java...

    详解spring mvc 请求转发和重定向

    请求转发的特点包括: 1. 请求转发是服务器端的行为,浏览器并不知道这个过程,它只看到最初的请求和最终的响应。 2. 请求转发过程中,原始的HttpServletRequest和HttpServletResponse对象被共享,所以请求参数和...

    最新基于SSM框架ssm网络视频播放器.zip

    - 视频播放:用户能够在线观看视频内容,可能包括视频搜索、播放、暂停、跳转等基本功能。 - 视频管理:后台管理员可以对视频进行上传、编辑和管理,确保视频内容的组织和更新。 - 用户交互:可能包含用户注册、登录...

    weixin021JAVA微信点餐小程序设计+ssm(源码+部署说明+演示视频+源码介绍+lw).rar

    SpringMVC:一个基于Servlet的MVC框架,负责处理请求、响应和页面跳转,简化了Web层的开发。 MyBatis:一个持久层框架,支持自定义SQL、存储过程和高级映射,简化了数据库操作。 功能概述: 用户管理:包括用户...

    基于Java SSM MySQL实现城市旅游景点信息交流平台【优质毕业设计、课程设计项目】.zip

    在本项目中,SpringMVC处理用户交互,如页面跳转、数据提交等。 3. **MyBatis**: MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及...

Global site tag (gtag.js) - Google Analytics