1.在maven工程下添加需要导入的jar包节点

<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.24</version>
</dependency>
</dependencies>

2.web-inf文件下配置web.xml节点

  <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>/*</url-pattern>
</filter-mapping>

3.构建index.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<s:fielderror value="error"></s:fielderror>
<s:actionerror/>
<s:property value="ret"/>
<s:debug/>
<form action="testAction" method="post">
用户名:<input name="uname"/><br/>
密码:<input name="upwd"/><br/>
<input type="submit"/>
</form>
</body>
</html>

4.创建TestAction

方法一:实现Action接口

public String execute() throws Exception {
System.out.println("action");
if (this.getUname().equals("")) {
addFieldError("error", "用户名为空值");
addActionError("actionerror");
return "ret1";
}else if (this.getUpwd().equals("")){
addFieldError("error", "密码为空值");
return "ret1";
}
return "ret1";
}

方法二:继承ActionSupport类

public void validate() {
System.out.println("actionsuppo");
if (this.getUname().equals("")) {
addFieldError("error", "用户名为空值");
addActionError("actionerror");
}else if (this.getUpwd().equals("")){
addFieldError("error", "密码为空值");
}
}

5.配置struts.xml文件

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
<action name="testAction" class="action.TestAction">
<result name="input">index.jsp</result>
</action>
</package>

6.测试页面

但用户名为空时

但密码为空时

最新文章

  1. 如何设置phpMyAdmin自动登录和取消自动登录
  2. 转: Eclipse自动提示功能
  3. 利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作
  4. Java中函数的重载
  5. Epic - Tic Tac Toe
  6. No Entertainment!
  7. 【Android 界面效果28】Android应用中五种常用的menu
  8. C#调用java程序
  9. include,include_once,require,require_once的区别
  10. Util
  11. [ An Ac a Day ^_^ ] hdu 2830 矩阵交换II
  12. JAVA在win10上的安装环境配置
  13. YYHS-NOIP2017SummerTraining0914-问题 A: 组合数问题
  14. 智能家居esp8266对接机智云
  15. bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
  16. js将当前时间格式化为年-月-日 时:分:秒
  17. Apache ActiveMQ实战(2)-集群
  18. jquery监听video标签视频播放暂停状态
  19. 零基础学Python--------第7章 面向对象程序设计
  20. 接口interface、实现接口implements

热门文章

  1. Hibernate的ID主键生成策略
  2. 解决duilib水平布局(HorizontalLayout)中控件位置计算错误的问题
  3. Windows批处理(cmd/bat)常用命令
  4. 散列:散列函数与散列表(hash table)
  5. innodb_data_file_path参数误修改解决方法
  6. apt-get install安装软件时出现依赖错误解决方式
  7. NSOperationQueue小结
  8. js进阶 9 js操作表单知识点总结
  9. 关于在方法里面使用泛型public static &lt;T&gt; T
  10. javascript数据结构与算法 零(前记+前言)