[struts2] 继承ActionSupport类

在Struts2中,Action可以不实现任何特殊的接口或者继承特殊的类,仅仅是一个POJO(Plain Old Java Object,简单的Java对象)就可以;也可以实现Xwork2中的Action接口;但是由于Xwork的Action接口非常简单,为程序员提供的帮助有限,因此,在实际开发中,会更多的使用继承ActionSupport类来实现Action的方式,如下所示:`

要验证数据,就要在Action类中覆盖实现validate方法,在validate方法内部,对请求传递过来的数据进行校验,如果不满足要求,那么添加例外信息到父类用于存放例外的集合中。代码如下:

package com.hnpi.action;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport {  private String account;  private String password;  private String submitFlag;  public String execute() throws Exception {  this.businessExecute();  return "toWelcome";  }  public void validate(){  if(account==null || account.trim().length()==0){  this.addFieldError("account", "账号不可以为空");  }  if(password==null || password.trim().length()==0){  this.addFieldError("password", "密码不可以为空");  }if(password!=null && !"".equals(password.trim()) && password.trim().length()<8){  this.addFieldError("password", "密码长度至少为8位");  }  }  /** * 示例方法,表示可以执行业务逻辑处理的方法, */  public void businessExecute(){  System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);  }public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSubmitFlag() {return submitFlag;}public void setSubmitFlag(String submitFlag) {this.submitFlag = submitFlag;}  }

这时,我们的validate方法是没有返回值的,我们需要在struts.xml中的Action配置里面,添加一个名称为input的result配置,就是说,如果validate方法中,有数据没有通过验证,那么会自动跳转回到该action中名称为input的result所配置的页面,代码如下:

<struts>  <constant name="struts.devMode" value="true" />        <!-- 设置了程序的运行模式 --><constant name="struts.locale" value="zh_CN"/>         <!-- 设置程序运行所使用的locale --><constant name="struts.i18n.encoding" value="utf-8"/>  <!-- 设置程序运行时用的编码方式 --><!-- 正确设置后面两个参数,就可以解决Struts2的中文问题了。 --><package name="helloworld"  extends="struts-default">  <action name="helloworldAction" class="com.hnpi.action.HelloWorldAction">  <result name="toWelcome">/welcome.jsp</result> <result name="input">/login.jsp</result>   </action>  </package>  </struts>

然后就是jsp界面,如果输入有误,就在前台页面进行提示,如果正确,就进入令一个页面,登陆成功页面可以根据要求进行书写,登陆代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; utf-8">
<title>Insert title here</title>
<style type="text/css">ul,li {list-style-type:none;margin:0px;float:left;
}
</style>
</head>
<body>  <form action="helloworldAction.action" method="post"> <input type="hidden" name="submitFlag" value="login"/>  <div> <font color=red><s:fielderror fieldName="account"/></font><br/>账号:<input type="text" name="account"></div><div><font color=red><s:fielderror fieldName="password"/></font><br/>密码:<input type="password" name="password"></div><input type="submit" value="提交">
</form>  </body>
</html>

另外,注意要配置web.xml文件,并在web-inf下的lib文件中导入我们下载好的jar包;

效果图如图所示:

Struts2 中继承ActionSupport类相关推荐

  1. Struts2实现Preparable接口和【struts2】继承ActionSupport类

    Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...

  2. Struts2学习日记(二)简单的Struts2登陆实现(Action继承ActionSupport类)

    功能实现:实现登陆功能,输入用户名和密码,如果用户名不为hello或者密码不为world,便返回登陆页并提示错误,否则显示登陆结果. 1.打开MyEclipse,创建一个webProject项目. 2 ...

  3. Struts2中的action类

    Struts2中的action类 action类在Struts2中承担了Model(模型)的角色,主要用于处理业务逻辑并存放HTTP请求处理过程中各个变量的值. 在Struts2里面,Action充当 ...

  4. Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮

    继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...

  5. java 继承 意义_Java中继承,类的高级概念的知识点

    1.继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2.继承的优点 A.代码的可重用性 B.子类可以扩展父 ...

  6. Java中继承thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

  7. Struts2中XXX.Action类中方法的访问(三种方式)

    第一种:使用action标签的method属性(常规方法) Action类: package cn.tedu.web;import org.springframework.context.annota ...

  8. python中arcsec_在Python类中继承Cython类

    我有两个用cython编写的类,我想在python中的一个类中使用它们.在 位置.pyximport numpy as np cimport numpy as np cimport cython cp ...

  9. 多线程中继承Thread 类和实现Runnable 接口的区别

    网上看了很多多线程里继承Thread 类和实现Runnable 接口的区别,大同小异,说下我的观点吧 区别一 创建线程的方式不同: 实现Runnable接口是代理模式,交给Thread()类去star ...

  10. SLua 中继承 C# 类接口 Slua.Class 的一个 Bug。

    由于目前要把大量的代码移植到 lua 中(真是够虐心的),面向对象肯定少不了,项目的代码都是这么设计的,于是就测试 Slua.Class 接口来扩展 C# 的类,发现有点问题,给作者提交了一个 Iss ...

最新文章

  1. 从 Servlet 入手带你看架构和框架设计的套路
  2. CodeForces - 632E Thief in a Shop 完全背包
  3. form + iframe 获取表单提交后返回的数据
  4. python 比较文件不同,在python中逐行比较两个不同的文件
  5. index.php文件分析,OpenCart index.php分析
  6. python仿真电力系统自动化技术_基于MSAA的自动化封装和设计—python版(转)
  7. hadoop组件中的hive安装
  8. 书籍的新增及上下架功能
  9. Ubuntu14.04安装文泉驿字体
  10. 计算机专业研究生和本科生工资差距,本科生和研究生的工资差距,到底有多大?...
  11. Linux用SSH密匙登录
  12. 奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其
  13. 小新吃上黑苹果13.1
  14. 为什么别人进步你退步,你应该如何提升自己
  15. 【微信开发第一章】SpringBoot实现微信公众号创建菜单,同步菜单功能
  16. 不愿意和别人打交道_一个人不愿意和同事打交道,大多是这3个原因,你了解吗...
  17. java告警_错误日志告警实战
  18. 单源最短路径-Dijkstra算法
  19. cpu低端计算机配置清单,i3 4160/GTX750Ti剑灵/英雄联盟中低端组装机配置清单
  20. EasyCVR对接华为IVS订阅摄像机和用户变更请求接口介绍

热门文章

  1. 《JAVA并发编程实践JavaConcurrencyinPractice-中文-高清-带书签-完整版(Doug Lea)》
  2. Java Swing MySQL图书管理系统
  3. MySQL书籍和资料
  4. Windows批处理(.bat)常用命令教程
  5. 《Java8实战》读书笔记
  6. 央妈:银联,想说爱你不容易
  7. 使用DevExpress的PdfViewer实现PDF打开、预览、另存为、打印(附源码下载)
  8. 中国最经典广告语大全
  9. 如何学习HyperMesh
  10. 【SOEM主站】一、SOEM主站环境搭建及连接板子测试