一. 登录页面中放置如下代码:

<h4>员工登录</h4>
<div style="color:red">
<s:actionerror/>
</div>

如果登录出现异常,就会将你设置的异常信息反馈出来.

二. 这个<s:actionerror/>标签需要jsp的标签库支持,代码如下:

<%@ taglib uri="/struts-tags" prefix="s" %>

三. struts-tags标签库使用struts的filter进行过滤,需要在web.xml中过滤.jsp文件

代码如下:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

最后actionerror需要在验证登录的时候,接收抛出的异常

如果抛出的是UnknownAccountException,

就添加一个actionerror,代码如下:

this.addActionError("用户名错误!");

如果抛出的是IncorrectCredentialsException,

就添加一个actionerror,代码如下:

this.addActionError("密码错误!");

相关代码使用shiro框架进行验证,代码如下:

    @Action("userAction_login")
public String login() throws Exception {
String realCheckcode = (String) ServletActionContext.getRequest().getSession().getAttribute("key");
if(StringUtils.isNotBlank(realCheckcode)){
if(realCheckcode.equals(checkcode)){
//在shiro框架基础开始认证
//获取subject对象 认证状态:未认证
Subject subject = SecurityUtils.getSubject();
if(subject.isAuthenticated()){
return "index";
}else{
//认证令牌(用户在登陆页面中输入)
AuthenticationToken token = new UsernamePasswordToken(model.getUsername(), Md5Util.encode(model.getPassword()));
//认证-登陆
try {
subject.login(token);
//跳转首页
//从subject中获取主角对象
User user = (User) subject.getPrincipal();
ServletActionContext.getRequest().getSession().setAttribute("loginUser", user);
return "index";
} catch (Exception e) {
if(e instanceof UnknownAccountException){
//账户错误
this.addActionError("用户名错误!"); //在登陆页面中获取错误信息。 通过strut2标签获取 <s:actionerror> 问题
}
if(e instanceof IncorrectCredentialsException){
//密码错误
this.addActionError("密码错误!"); //在登陆页面中获取错误信息。 通过strut2标签获取 <s:actionerror> 问题
}
e.printStackTrace();
}
}
}
}
return "login";
}


使用actionerror做失败登录验证的更多相关文章

  1. SpringSecurity系列之自定义登录验证成功与失败的结果处理

    一.需要自定义登录结果的场景 在我之前的文章中,做过登录验证流程的源码解析.其中比较重要的就是 当我们登录成功的时候,是由AuthenticationSuccessHandler进行登录结果处理,默认 ...

  2. MVC前台页面做登录验证

    最近接触了一个电商平台的前台页面,需要做一个登录验证,具体情况是:当用户想要看自己的订单.积分等等信息,就需要用户登录之后才能查询,那么在MVC项目中我们应该怎么做这个前台的验证呢? 1.我在Cont ...

  3. ThinkPHP实例—实现登录验证

    ThinkPHP 验证 本篇我们将运用商城实例讲解一下如何运用ThinkPHP做一个登录验证 我们的框架目录结构如下图所示: 其中 app  文件夹就是我们的应用文件夹  它的目录结构如下所示 其中 ...

  4. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  5. Django 登录验证-自动重定向到登录页

    Web项目有些场景需要做用户登录验证,以便访问不同页面. 方法一:login_required装饰器 适用于函数视图. from django.contrib.auth.decorators impo ...

  6. 洗礼灵魂,修炼python(81)--全栈项目实战篇(9)—— 购物商城登录验证系统

    都在线购物过吧?那么你应该体验过,当没有登录账户时,点开购物车,个人中心,收藏物品等的操作时,都会直接跳转到登录账户的界面,然后如果登录一次后就不用再登录,直到用户登出. 是的,本次项目就是做一个登录 ...

  7. Android 实现http通信(servlet做服务器端) HttpClient、HttpURLConnection实现登录验证

    一,写好服务器端 在eclipse或其它javaee开发工具中新建一个web项目(我这里的项目名是:Android),建一个servlet(我这里的servlet名是:LoginServlet),模拟 ...

  8. ASP.NET MVC 登录验证

     好久没写随笔了,这段时间没 什么事情,领导 一直没安排任务,索性 一直在研究代码,说实在的,这个登录都 搞得我云里雾里的,所以这次我可能也讲得不是 特别清楚,但是 我尽力把我知道的讲出来,顺便也对自 ...

  9. Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

随机推荐

  1. [LeetCode]29. Divide Two Integers两数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  2. Visual Paradigm for UML 10.0 SP1 企业中文下载地址、安装及激活详解教程

    https://blog.csdn.net/u013354805/article/details/46531833

  3. web应用开发周期

    web应用开发周期 1. 前期准备 2. 编码 3. 上线 4. 数据分析 5. 持续交付 6. 遗留系统 7. 回顾与新架构 重构的一般性因素 1. 系统难以维护 2. 系统技术栈难以符合业务需求 ...

  4. 安装redis服务端

    1. redis服务端和客户端的安装 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget http://download.redis.io/rel ...

  5. MySQL 修改数据表中的字段的字符编码

    1.查询 MySQL 的版本: SELECT VERSION(); 2.查询 MySQL 当前使用的字符集: SHOW VARIABLES LIKE '%character%'; 3.查询指定数据库的 ...

  6. Form表单元素

    Form表单元素 action method input: name value type: text password button radio checkbox file submit reset ...

  7. css3 转换 过渡 及动画

    转换transform: 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸.您可以使用 2D 或 3D 转换来转换您的元素 2D转换属性: transform 向元素应用 2D 或 ...

  8. MySQL查询笔试综合题练习

    题目要求: 在某个数据库下建表: create table stu( -> name char(3) not null default '', -> subject varchar(10) ...

  9. Avro-RPC client in Flume

    Avro used in Flume Define the interface of RpcClient public interface RpcClient { public int getBatc ...

  10. ideal环境maven自动下载项目依赖配置

    开篇序言 最近在使用ideal软件对springboot进行开发研究,中间遇到的环境和创建springboot遇到的问题真是玲琅满目,但是遇到问题就要克服这是万年不变的真理. 该文档会后续不断的补充, ...