Struts2的Action(二)
Struts2的Action可以是一个POJO(即简单的javaBean),也实现Action接口,或者继承ActionSupport类。
1.Action接口:
public interface Action {
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}
将LoginAction实现Action接口,则execute方法可以改为:
public String execute() {
if(getUserName().equals("kaima") && getPassword().equals("asd")) {
return SUCCESS;
}
else
return ERROR;
}
Action运行所用到的数据都保存在ActionContext中,继续修改我们的LoginAction:
public String execute() {
if(getUserName().equals("kaima") && getPassword().equals("asd")) {
ActionContext.getContext().getSession().put("name", userName);
return SUCCESS;
}
else
return ERROR;
}
上面这句话相当于session.setAttribute("name", userName)。这样,在我们的JSP页面中就能使用name这个值了。
2.ActionSupport类就比较复杂,提供了数据校验功能。
将LoginAction继承ActionSupport类,修改execute并覆盖validate()方法:
public String execute() {
if(getUserName().equals("kaima") && getPassword().equals("asd")) {
return SUCCESS;
}
else
return ERROR;
}
@Override
public void validate() { //validate方法在execute之前执行
if(userName == null || userName.equals(""))
this.addFieldError("username", "用户名不能为空");
if(password == null || password.equals(""))
this.addFieldError("password", "密码不能为空");
}
validate()方法会在execute方法前执行,如果没通过,会将错误信息存放到Action的fieldError中,并将请求转发到input对应的逻辑视图中。在struts.xml中指定input对应的视图:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="myStruct" extends="struts-default">
<action name="login" class="myWeb.LoginAction">
<result name="success">/welcome.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
如果想将错误信息显示出来,需要在login.jsp中加上:
<%@ taglib uri="/struts-tags" prefix="s" %>
并在你想显示错误信息的地方加上:
<s:fielderror></s:fielderror> <form action="login.action" method="post"> <table>......
这里我是在table前加上错误信息的显示,如果用户不输入用户名/密码,就会如下:
Struts2的Action(二)的更多相关文章
- Struts2(五)Action二配置
一.method参数 action package com.pb.web.action; public class HourseAction { public String add(){ System ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Struts2基础学习(二)—Action
一.ActionSupport 为了让用户开发的Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理类应该实现的规范.下面是标准A ...
- Struts2学习(二)运行Action中方法的三种方式
1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写met ...
- struts2的action是多例,servlet是单例
struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的 属性不一样,操作得出的 ...
- Struts2之Action
Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...
- struts2 修改action的后缀
struts2 修改action的后缀 struts2 的默认后缀是 .action 虽然很直观,但是很烦琐.很多人喜欢将请求的后缀改为 .do 在struts2中修改action后缀有两种比较简单的 ...
- struts2中Action到底是什么,怎么理解
struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...
- Struts2之Action与配置文件
一.Struts2配置文件 1.struts.properties 在学习Action之前先学下Struts2的配置文件,与Struts2相关的配置文件有好几个,常用的有Struts.xml,web. ...
随机推荐
- BZOJ1001 [BeiJing2006]狼抓兔子(平面图最小割转最短路)
..和HDU3870类似..注意n=1和m=1的情况. #include<cstdio> #include<cstring> #include<queue> #in ...
- sqlserver中创建链接服务器
链接服务器在跨数据库/跨服务器查询时非常有用(比如分布式数据库系统中),本文将以图文方式详细说明如何利用SQL Server Management Studio在图形界面下创建链接服务器. 1 ...
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest C. CIA Datacenter
C. CIA Datacenter time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- BZOJ2934 : [Poi1999]祭坛问题
对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用at ...
- 【转】推荐UML插件AmaterasUML
基于Green UML在使用过程中的问题(对于大工程,点击生成类图后不响应),自己只能再次寻找其他的插件.在无意中,发现AmaterasUML. 官方网站:http://amateras.source ...
- POJO(PO)与javaBean的比较、以及DTO的说明
一.POJO(Plain Ordinary Java Object)简单的Java对象,其中有一些属性及其getter setter方法的类,没有业务逻辑(重点理解一下"没有业务逻辑&quo ...
- background常用属性
background-image:url('图片位置');//设置背景图片的位置 background-repeat:no-repeat;//图片是否重复显示(不重复) background-posi ...
- URAL 1427. SMS(DP+单调队列)
题目链接 我用的比较传统的办法...单调队列优化了一下,写的有点搓,不管怎样过了...两个单调队列,存两个东西,预处理一个标记数组存... #include <iostream> #inc ...
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
作者:唐老师,华清远见嵌入式学院讲师. 1. HAL的module与stub HAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件 ...
- 20145330《Java程序设计》第五次实验报告
20145330<Java程序设计>第五次实验报告 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴 ...