一.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,并使用标签自带的错误消息回显.

  

struts2异常处理及类型转换的更多相关文章

  1. java struts2入门学习---异常处理和类型转换

    一.struts2对异常的处理 1.自定义局部异常: <action> <exception-mapping result="sonException" exce ...

  2. Struts2中的类型转换

    1.     Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...

  3. 16.怎样自学Struts2之Struts2异常处理[视频]

    16.怎样自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pa ...

  4. swift详解之十-------------异常处理、类型转换 ( Any and AnyObject )

    异常处理.类型转换 ( Any and AnyObject ) 1.错误处理 (异常处理) swift 提供第一类错误支持 ,包括在运行时抛出 ,捕获 , 传送和控制可回收错误.在swift中 ,错误 ...

  5. struts2 异常处理3板斧

    板斧1:找不到action的错误 在struts.xml中参考如下配置 <struts> ... <package name="default" namespac ...

  6. struts2学习笔记(3)——struts2的局部类型转换

    今天又学到了一个新的东西,就是struts2的类型转换. 为什么要类型转换? 今天我就要传一个点的坐标给你,保存时用一个自定义的Point类来保存. 因为在表单里面传过去的是字符串,如“12,23”, ...

  7. struts2框架之类型转换(参考第二天学习笔记)

    类型转换 1. 什么是类型转换 刚才学习了封装请求参数,把表单数据封装到Action(模型)的属性中.表单中的数据都是String类型,但Action(模型)的属性不一定什么类型. 将来我们还需要数据 ...

  8. struts2.0自定义类型转换

    在Struts2.0框架中内置了类型转换器,可以很方便的实现在八大数据类型.Date类型之间的自动转换:此外也可以根据自己的需求自定义数据转换类.如下: 首先看一下项目工程中的目录 1.在新建的web ...

  9. Struts2框架之类型转换 --Struts2框架

    Struts2框架实现了大多数常见的用于类型转换的转换器,开发人员不用自己编写类型转换代码,就可以实现数据类型的转换.下面一个Struts2框架类型转换的简单事例, 本例可在使用validate()方 ...

随机推荐

  1. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...

  2. mysql 远程连接失败(linux)

    主要有三个原因:1.mysql授权表里没有远程机器的权限,及需要在授权表mysql.user添加grant all privileges on *.* to 'root'@'远程登陆IP' ident ...

  3. WPF Step By Step -基础知识介绍

    回顾 上一篇我们介绍了WPF基本的知识.并且介绍了WPF与winform传统的cs桌面应用编程模式上的变化,这篇,我们将会对WPF的一些基础的知识做一个简单的介绍,关于这些基础知识更深入的应用则在后续 ...

  4. 【转】BAT及各大互联网公司2014前端笔试面试题:JavaScript篇

    原文转自:http://blog.jobbole.com/78738/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是 ...

  5. MyBatis日期有坑

    使用MyBatis时,可能会遇到日期格式的时间段问题,当数据库的时间为DATE类型时,MyBatis的jdbcType应该使用DATE,否则,有时间会出现莫名的数据找不到的问题,具体原因,可以查看源码 ...

  6. 【题解】【BST】【Leetcode】Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  7. 1password密码文件重装后恢复

    因为重装系统,加上Time machine硬盘损坏. 只能从之前零散Time machine的恢复数据中找到最近的一个备份. 1password是会自己执行备份的,起备份文件在 ~/Library/C ...

  8. 用jquery ,当改变窗口或屏幕大小时调用function,用哪个事件?

    $(window).resize(function(){ //process here}); window的onresize事件. $(window).resize(function () {     ...

  9. ubuntuPC机安装JLink驱动

    摘要: 打开你仿真用的机器人的配置文化,这个应该是local_costmap_params.yaml transform tolerance g改为1     本文介绍了如何在Ubuntu平台配置J- ...

  10. Git错误non-fast-forward

    Git错误non-fast-forward后的冲突解决 [日期:2012-04-21] 来源:Linux社区  作者:chain2012 [字体:大 中 小]   当要push代码到git时,出现提示 ...