一.struts2对异常的处理

1.自定义局部异常:

<action>
<exception-mapping result="sonException" exception="java.lang.ArithmeticException"></exception-mapping>
</action>

2.自定义全局异常:

    <!-- 配置全局异常处理 -->
<global-exception-mappings>
<exception-mapping result="sonException" exception="java.lang.ArithmeticException"></exception-mapping>
</global-exception-mappings>

 3.异常执行的优先级

  >>当同时出现全局和局部异常时,局部异常优先,即局部异常优先于全局异常执行,如果全局和局部异常相同,那么将以局部异常为准.

>>当异常出现父子关系时,子异常优先.如java.lang.ArithmeticException是java.lang.Exception的子类.如果同时进行配置的话,那么以java.lang.ArithmeticException为准.

如:

<!-- 配置全局异常处理 -->
<global-exception-mappings>
<exception-mapping result="sonException" exception="java.lang.ArithmeticException"></exception-mapping>
<exception-mapping result="fatherException" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
    <!-- 配置全局结果处理 -->
<global-results>
<result name="success" type="dispatcher">
/WEB-INF/success.jsp
</result>
<result name="sonException" type="dispatcher">
/WEB-INF/sonException.jsp
</result>
<result name="fatherException" type="dispatcher">
/WEB-INF/fatherException.jsp
</result>
</global-results>

二.struts2中的类型转换

1、内置类型转换器

HTTP没有类型的概念,只能将表单的参数,以String或String[]的方式接收.

>>1).struts2提供了内置的类型转换器,它能将string类型和8种基本类型自动转换.

>>2).struts2的内置类型转换器,能将java.util.Date与String类型自动转换,但Date类型的字符串格式必须为yyyy-MM-dd的格式;同时struts2会自动检测日期的合法性,如01-33这种就不能通过.

>>3).内置转换器,不能将String类型转换成任意javaBean类型,这里需要使用自定义转换器.

下面以实例来演示:

Address.java

package type;

/**
* @ClassName: Address
* @Description: 定义一个address model
* @author: amosli
* @email:amosli@infomorrow.com
* @date Jan 26, 2014 1:53:33 AM
*/
public class Address {
private String province;// 省份
private String city;// 城市
private String area;// 区域 public String getProvince() {
return province;
} public void setProvince(String province) {
this.province = province;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getArea() {
return area;
} public void setArea(String area) {
this.area = area;
} }

TypeAction.java

package type;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

/**
* @ClassName: TypeAction
* @Description: 本类主要是讲解类型转换
* @author: amosli
* @email:amosli@infomorrow.com
* @date Jan 26, 2014 1:00:35 AM
*/
public class TypeAction extends ActionSupport{
private static final long serialVersionUID = -2558635842755603468L;
private String username;//姓名
private Integer age;//年龄
private Float salary;//薪水
private Date birthday;//生日
private Address address;//地址 public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public Integer getAge() {
return age;
} public Address getAddress() {
return address;
} public void setAddress(Address address) {
this.address = address;
} public void setAge(Integer age) {
this.age = age;
} public Float getSalary() {
return salary;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public void setSalary(Float salary) {
this.salary = salary;
} public String execute() throws Exception { return SUCCESS;
} }

type_struts.xml

<?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="type" extends="struts-default">
<action name="TypeAction" class="type.TypeAction" method="execute">
<result name="success" type="dispatcher">
/WEB-INF/type_success.jsp
</result>
<result name="input" type="dispatcher">
type.jsp
</result>
</action>
</package>
</struts>

sturts.xml

<?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>
<!--<include file="config/upload.xml"></include> -->
<!-- 加载其他配置文件 -->
<!-- <include file="config/upload-interceptor.xml"></include> -->
<!-- 加载属性文件-国际化 -->
<!-- <constant name="struts.custom.i18n.resources" value="message"></constant> --> <!-- 结果集 -->
<!-- <include file="config/result_struts.xml"></include> --> <!-- 类型转换 -->
<include file="config/type_struts.xml"></include> </struts>

type.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="TypeAction" type="POST">
<s:textfield label="用户名" name="username" />
<s:textfield label="年龄" name="age" />
<s:textfield label="薪水" name="salary" />
<s:textfield label="生日" name="birthday"/>
<s:textfield label="地址" name="address"/>
<s:submit name="submit"/>
</s:form>
</body>
</html>

type_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   恭喜,类型转换成功!
<hr>
用户名:<s:property value="username"/><br>
年龄:<s:property value="age"/><br>
薪水:<s:property value="salary"/><br>
生日:<s:property value="birthday"/><br>
地址:<s:property value="address"/><br>
</body>
</html>

效果截图:

1),不填写地址

2),查看结果,基本类型的数据自动转换成功

 3),填写地址

4),这里配置了result中的input,一时出错页面将转发到type.jsp,并使用标签自带的错误消息回显.

 

  

java struts2入门学习---异常处理和类型转换的更多相关文章

  1. java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器

    实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...

  2. java struts2入门学习---自定义类型转换

    自定义类型转换器的作用就是将struts无法识别的类型转换成自己所需要的. 比如输入:广东-东莞-虎门,对应的输出时能输出:广东省 东莞市 虎门(镇/区) 这里涉及到的知识点即是将String转换为任 ...

  3. java struts2入门学习--OGNL语言基本用法

    一.知识点学习 1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack; 1)requ ...

  4. java struts2入门学习--基于xml文件的声明式验证

    一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...

  5. java struts2入门学习--OGNL语言常用符号和常用标签学习

    一.OGNL常用符号(接上一篇文章): 1.#号 1)<s:property value="#request.username"/> 作用于struts2的域对象,而不 ...

  6. java struts2入门学习---文件下载的二种方式

    一.关于文件下载: 文件下载的核心思想即是将文件从一个地方拷贝到另一个地方. 1.传统方式: 在Action中加入大量servlet api 操作.优点是好理解,缺点是耦合度高. 2.stream方式 ...

  7. java struts2入门学习---拦截器学习

    一.拦截器,拦截器栈 1.拦截器的作用 拦截器本质上和servlet的过滤器是一样的.在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦 ...

  8. java struts2入门学习实例--使用struts2快速实现上传

    一.文件上传快速入门 1).关于上传表单三要素 >>尽量以POST请求方式上传,因为GET支持文件大小是有限制的. >>必须要加上enctype="multipart ...

  9. java struts2入门学习--防止表单重复提交.OGNL语言学习

    一.知识点回顾 防止表单重复提交核心思想: 客户端和服务器端和写一个token,比较两个token的值相同,则非重复提交;不同,则是重复提交. 1.getSession三种方式比较: request. ...

随机推荐

  1. C++ 学习路线和看法

    C++ 学习路线和看法 原文地址:http://shundacao.blog.163.com/blog/static/1340404812010101982751101/     C++大体分为C++ ...

  2. 【Spark】Sparkstreaming-共享变量-缓存RDD-到底是什么情况?

    Sparkstreaming-共享变量-缓存RDD-到底是什么情况? sparkstreaming 多个 rdd_百度搜索 Spark Streaming中空RDD处理及流处理程序优雅的停止 - xu ...

  3. SSE,MSE,RMSE,R-square指标讲解

    SSE(和方差.误差平方和):The sum of squares due to errorMSE(均方差.方差):Mean squared errorRMSE(均方根.标准差):Root mean ...

  4. 大规模SNS中兴趣圈子的自动挖掘

    转自:http://www.infoq.com/cn/articles/zjl-sns-automatic-mining 一.为何要在大规模SNS中挖掘兴趣圈子 随着国外的facebook.twitt ...

  5. 强化Linux安全的10个技能

    1.找出不必要的服务 很明显,服务器上跑的服务,并不是每个都有用的.强烈建议检查并关掉不需要的服务,从而减少风险(多跑一个服务,就可能多几个漏洞). 查询运行在runlevel 3的服务列表: [af ...

  6. linux kernel系列四:嵌入式系统中的文件系统以及MTD

    本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Bloc ...

  7. HttpWebRequest抓取网页数据返回异常:远程服务器返回错误: (503) 服务器不可用

      解决方法:   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webURL);                //声明一个H ...

  8. Java 大型系统高并发大数据的处理方式

    页面静态化 (页面层面的缓存) 缓存 (memcached.redis等,数据缓存.避免多次请求) 集群负载均衡(单机处理能力不足) 分库分表(大量数据的处理.原则分.分.分) 读写分离 队列.MQ. ...

  9. ExtMail telnet 25端口号 不通

    搭建好的Mail服务器在本地端口号25是开的,但是在别的电脑上就连不上. 修改/etc/postfix/main.cf文件,将 inet_interfaces = localhost 注释掉即可.

  10. jchat-windows-master 编译输出日志

    第一个项目成功生成的输出日志 >------ 已启动全部重新生成: 项目: QxOrm, 配置: Debug x64 ------ >Moc'ing IxModel.h... >Mo ...