在一般情况下:我们登录系统时,第一次登录当用户名或密码输入错误,在登录页面给出错误原因,当我们再刷新登录页面,应该是首次登录系统的页面(这时就不应该再给出出错提示),这时我们就应该想到错误提示信息到底放在哪个作用域中能满足这样的要求,我们常见的作用域有三个:request,session,application.就当前需求,session和application显然不满足要求,request作用域又仅限于当次请求,如果我们重定向传参,request显然无法把值传到另一个方法中.所以request也不好.但spring给我们提供了一个方案,就是RedirectAttributes 类.使用如下:

我们登录系统时,form表单的method设定为post,form表单代码如下:

<form action="/sh/login" method="post">
  Usersname:<input type="text" name="username" value="${users.username }"><br>
  Password:<input type="text" name="password" value="${users.password }"><br>
       <input type="submit" value="submit">
</form>

我们可以专门写一个登录控制器来处理这个问题,让登录时根据method值的不同访问不同的方法

@Controller
@RequestMapping
public class LoginController {
@Autowired
private UsersService usersService;
@Autowired
private HttpSession session;
@RequestMapping(value="/login",method=RequestMethod.GET)

//当登录页面刷新时就会执行这个方法
public String login(){
  return "login";
}

@RequestMapping(value="/login",method=RequestMethod.POST)

//参数RedirectAttributes attr是spring自动创建的
public String login(Users users,RedirectAttributes attr){

  if(StringUtils.hasLength(users.getUsername())){
    Users u = this.usersService.findByUsername(users.getUsername());

    //有值就跳转到系统的首页
    if(u!=null&&u.getPassword()!=null&&u.getPassword().equals(users.getPassword())){
      session.setAttribute("admin", u);
      return "redirect:/users/index";
    }
  }

  //这里必须使用addFlashAttribute方法,这样在刷新登录页面时,attr中就没有值了
  attr.addFlashAttribute("msg","用户名或密码错误");

//登录数据回显时使用的
  attr.addFlashAttribute("users",users);

  //这时我们重定向或者转发都可以满足要求
  return "redirect:/login";
}
}

spring中作用域的问题的更多相关文章

  1. spring中scope(作用越)理解

    今天总结了一下spring中作用域scope的用法.在spring中作用域通过配置文件形式的用法如下. <bean id="role" class="spring. ...

  2. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  3. spring中scope作用域(转)

    今天研究了一下scope的作用域.默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global sess ...

  4. JavaEE开发之Spring中Bean的作用域、Init和Destroy方法以及Spring-EL表达式

    上篇博客我们聊了<JavaEE开发之Spring中的依赖注入以及AOP>,本篇博客我们就来聊一下Spring框架中的Bean的作用域以及Bean的Init和Destroy方法,然后在聊一下 ...

  5. Spring中Bean的五个作用域

    当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring I ...

  6. Spring中bean作用域属性scope

    关键字: spring中属性scope的prototype是什么意思   默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spri ...

  7. Spring中bean的五个作用域简介(转载)

    Spring上个版本的IoC容器支持两个不同的bean作用域(单例与原型).Spring 2.0改进了这一点,不仅提供了一些依赖于Spring部署环境(比如说,在web环境中的request和sess ...

  8. Spring中bean的作用域与生命周期

    在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean.简单地讲,bean 就是由 IOC 容器初始化.装配及管理的对象,除此之外,bean 就与 ...

  9. Spring 中 ApplicationContext 和 BeanFactory 的区别,以及 Spring bean 作用域

    //从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...

随机推荐

  1. phper必知必会之数组指针(四)

    数组指针 1.介绍几个数组指针的函数 current() - 返回数组中的当前单元 end() - 将数组的内部指针指向最后一个单元 prev() - 将数组的内部指针倒回一位 reset() - 将 ...

  2. 【jmeter】jmeter测试网站QPS

    上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测试目标网站是fnng.cnblogs.co ...

  3. 【appium】根据name定位元素

    目前没有尝试成功,等成功后补充 个人建议可以尝试先用view显示的文本作为name看是否能拿到该控件,按照我个人的经验一般都是会成功的,所以我很怀疑安卓上面控件的name是否就等于text.

  4. 通过textarea标签解决ClipboardJS在iphone复制失败问题

    前段时间做了微信自定义分享的功能,分享出的页面存在邀请码在ios手机上复制失败的问题,然而在PC端和安卓机上是没有问题的.百度了一下,基本给出的解决方案是:ios不单纯支持on,为点击的元素添加空点击 ...

  5. 术语-服务:PaaS

    ylbtech-术语-服务:PaaS PaaS是Platform-as-a-Service的缩写,意思是平台即服务. 把服务器平台作为一种服务提供的商业模式.通过网络进行程序提供的服务称之为SaaS( ...

  6. Find minimum continuous subsequence tags

    Given targetList, a list of strings representing the desired tags, and availableTagList, a list of s ...

  7. [转][Chrome]浏览器粘贴行为

    <html> <head> <meta charset="UTF-8"> <title>test chrome paste imag ...

  8. python appium增加方法

    1.测试过程中发现python client没有拨打电话的方法,因此去添加该方法 1.1查看源码 appium-base-driver/blob/master/lib/protocol/routes. ...

  9. Fragment之介绍(转)

    http://www.cnblogs.com/plokmju/p/3239265.html 前言 开门见山开篇名义,本篇博客将讲解一下Android中Fragment的内容,必要的地方会提供相应的演示 ...

  10. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(二)

    我们接着学习.如果没有学习第一篇,请前往学习. 由于GameplayAbilities插件基本上没有资料(除了前面提供的那篇Dave的博文以外,再无资料,有迹象表明Dave是这个插件的开发者). 这个 ...