Struts2处理结果类型

1、SUCCESS:表示Action正确的执行完成,返回相应的视图,success是name属性的默认值;

2、ERROR:表示Action执行失败,返回到错误处理视图;

3、NONE:表示Action正确的执行完成,但是不返回任何视图;

4、LOGIN:Action因为用户没有登录的原因没有正确执行,将返回登录视图,要求用户进行登录验证;

5、INPUT:Action执行,需要从前端页面获取参数,input就是代表这个参数输入的界面,一般应用中会对这些参数进行验证,如果验证没有通过,将自动返回该视图。

项目实例:

1、项目结构

2、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ray</groupId><artifactId>struts2Test</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>struts2Test Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.16</version></dependency></dependencies><build><finalName>struts2Test</finalName></build></project>

3、web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0" metadata-complete="true"><display-name>Archetype Created Web Application</display-name><!-- 过滤所有请求交给Struts2处理 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class><!--action后缀(方法二)--><!--<init-param>--><!--<param-name>struts.action.extension</param-name>--><!--<param-value>ray</param-value>--><!--</init-param>--></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

4、UserAction.java

package com.ray.action;import com.opensymphony.xwork2.ActionSupport;/*** Created by Ray on 2018/3/26 0026.**/
public class UserAction extends ActionSupport {private String username;private int age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String save(){return SUCCESS;}@Overridepublic void validate() {if(username == null || "".equals(username)){this.addFieldError("username","用户名不能为空");}}
}

5、eighth-struts.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><package name="default" extends="struts-default" namespace="/"><action name="user" class="com.ray.action.UserAction" method="save"><result>/loginSuccess.jsp</result><result name="input">/user.jsp</result></action></package><constant name="struts.custom.i18n.resources" value="messageResource"/>
</struts>

6、struts.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><!-- action后缀(方法一) --><!--<constant name="struts.action.extension" value="ra"/>--><package name="default" namespace="/" extends="struts-default"><!-- 默认action --><default-action-ref name="404"/><action name="404"><result>/404.jsp</result></action><action name="helloWorld" class="com.ray.action.HelloWorldAction"><result name="success">/success.jsp</result></action></package><include file="second-struts.xml"/><include file="third-struts.xml"/><include file="fourth-struts.xml"/><include file="seventh-struts.xml"/><include file="eighth-struts.xml"/>
</struts>

7、messageResource.properties

# 方式一:统一指定类型转换失败的错误提示信息 {0}表示输入框的name值
#xwork.default.invalid.fieldvalue={0} failure
# 方式二:单独指定某个输入框类型转换失败的提示信息,中文需转换为对应的ASCII码,否则页面会乱码
invalid.fieldvalue.age = \u5e74\u9f84\u8f93\u5165\u683c\u5f0f\u6709\u8bef

8、user.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><base href="<%=basePath%>"><title>用户信息</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><s:form action="user" method="POST"><s:textfield label="姓名:" name="username"/><s:fielderror fieldName="username"/><br><s:textfield label="年龄:" name="age"/><s:fielderror fieldName="age"/><br><s:submit label="提交"/></s:form>
</body>
</html>

9、loginSuccess.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><base href="<%=basePath%>"><title成功页面</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>保存成功!
</body>
</html>

10、页面效果

ok!

转载于:https://www.cnblogs.com/Remenber-Ray/p/8858041.html

第八篇——Struts2的处理结果类型相关推荐

  1. python str 换行_一步一步学Python3(小学生也适用) 第八篇: 字符串(str)类型(上)...

    前面两篇,我们学习了整型(int)和浮点型(float),这一篇我们将学习Python的字符串(str)类型. 一.Python字符串(str)类型 Python的字符串(str)就是若干个字符的集合 ...

  2. 八篇 NeurIPS 2019 最新图神经网络相关论文

    最近,人工智能和机器学习领域的国际顶级会议 NeurIPS 2019 接收论文公布,共有 1428 篇论文被接收.为了带大家抢先领略高质量论文,本文整理了八篇 NeurIPS 2019 最新 GNN ...

  3. CCNA-第八篇-OSPF-上

    CCNA-第八篇-OSPF OSPF,最常用的路由协议,他来了他来了 OSPF呢怎么说呢 是一个比较重要而且比较基础的点,出到去外面要是说不会OSPF,那还算啥网络工程师 但是呢,他也不是那么的完全重 ...

  4. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  5. JVM进阶(八)——Stop The World(停顿类型STW)

    JVM进阶(八)--Stop The World(停顿类型STW)   小伙伴还记得上一篇中我们留下的一个问题吗?什么是停顿类型!经过前几章的学习,我们知道垃圾回收首先是要经过标记的.对象被标记后就会 ...

  6. 【SQL开发实战技巧】系列(十八):数据仓库中时间类型操作(进阶)INTERVAL、EXTRACT以及如何确定一年是否为闰年及周的计算

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  7. 保安日记:前端学习第八篇之HTML5

    前端学习第八篇 HTML5新特性 HTML5的新增特性主要是增加了一些新的标签.新的表单以及表单属性等.这些新特性都有兼容性问题,基本上是IE9+以上版本的浏览器才支持 新增语义化标签: < h ...

  8. 【哈工大SCIR】八篇长文被ACL 2020录用

    ACL 2020, The 58th Annual Meeting of the Association for Computational Linguistics 原定于2020年7月5日至10日在 ...

  9. Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器

    好吧,我真心全然搞不懂.我如今仅仅只是是写了3个类而已.怎么就已经到第八篇了?我感觉我说话已经够简单明了毫不唠叨了,真是奇怪.(小若:我噗.噗噗.) 好吧,既然如今主角已经能出现而且进行操作了.那,也 ...

最新文章

  1. c语言115写成16进制,C语言指针问题
  2. 通过Spark listener实现Direct模式读取Kafaka数据
  3. python中类的嵌套_python类的嵌套
  4. 《Arduino开发实战指南:LabVIEW卷》——3.2 LabVIEW的数据流编程方法
  5. linux 系统lv扩展_linux 扩展lv
  6. mysql三学习sql声明学习
  7. python --- 使用socket创建tcp服务
  8. Java-数组 三种初始化及内存分析
  9. Spring Cloud Config服务端配置细节(二)之加密解密
  10. html桌面插件,纯JS和CSS3炫酷桌面便签贴纸特效插件
  11. 博士申请 | 澳门大学张一博教授课题组招收计算机视觉方向全奖博士生
  12. [文章] 小本本记下来--CC
  13. 手机阅读行业分析(beta)
  14. 写在迷茫痛苦之后的三十岁
  15. python黑客库长安十二时辰 更新_爬取3万+评论,告诉你究竟是哪些人不喜欢《长安十二时辰》?...
  16. nova3安装android10系统,华为nova3 刷机教程 华为nova3 强刷升级教程
  17. 大小球实用技巧:程序实现“惊天反转”你想要的这里都有!
  18. 1366 mysql_mysql出现ERROR 1366 (HY000):的解决办法
  19. 联发科和麒麟哪个比较好
  20. Java后端生成二维码(QrCode)

热门文章

  1. 英特尔在中国投资55亿美元非易失性存储项目投产
  2. 命令行编译xcodebuild
  3. 二叉树(中序遍历)非递归
  4. 修改httpd默认端口号
  5. 老男孩学习之亲身经历心得
  6. Hibernate commit() 和flush() 的区别
  7. 黑马程序员-异常介绍与处理
  8. C++类模板特化全总结
  9. unity2019,打包APK时的gradle错误问题
  10. UNITY 手动定制inspector