有句名言,叫做10000小时成为某一个领域的专家。姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧。

Hour 35

Exception Handling

直接添加全局性的异常处理的映射,既然是映射就必然在我们的映射配置文件里面。

  1. <package name="basicstruts2" extends="struts-default">
  2. <global-results>
  3. <result name="securityerror">/securityerror.jsp</result>
  4. <result name="error">/error.jsp</result>
  5. </global-results>
  6. <global-exception-mappings>
  7. <exception-mapping
  8. exception="org.apache.struts.register.exceptions.SecurityBreachException"
  9. result="securityerror" />
  10. <exception-mapping exception="java.lang.Exception"
  11. result="error" />
  12. </global-exception-mappings>
  13. <action name="index">
  14. <result>/index.jsp</result>
  15. </action>
  16.  
  17. <action name="hello"
  18. class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
  19. <result name="success">/HelloWorld.jsp</result>
  20. </action>

如上所述,在配置文件里面加入全局的异常映射。

插入指定action 的异常处理

  1. <action name="actionspecificexception" class="org.apache.struts.register.action.Register"
  2. method="throwSecurityException">
  3. <exception-mapping
  4. exception="org.apache.struts.register.exceptions.SecurityBreachException"
  5. result="login" />
  6. <result>/register.jsp</result>
  7. <result name="login">/login.jsp</result>
  8. </action>

增加日志功能,这里使用的是拦截器

继续输入的验证功能

这里使用Struts2 自带的xml 配置文件验证功能。

一些基本的验证功能已经自带了,这个可以留待过会儿practice.

通配符

如果没有通配符,这个action 文件将会迅速的膨胀到一个令人发指的地步。

所以这里必须的。

  1. <action name="createPerson"
  2. class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction"
  3. method="create">
  4. <result name="input">input.jsp</result>
  5. <result name="success">view.jsp</result>
  6. </action>
  7.  
  8. <action name="editPerson"
  9. class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction"
  10. method="edit">
  11. <result name="input">input.jsp</result>
  12. <result name="success">view.jsp</result>
  13. </action>

基本的CURD 操作这里需要写大概4个映射,每个都这样写要疯了的。

  1. <action name="*Person"
  2. class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction"
  3. method="{1}">
  4. <result name="success">view.jsp</result>
  5. <result name="input">input.jsp</result>
  6. </action>

使用通配符以后,这个世界就妥妥的啦。

What’s The Next ?

感谢官方站点提供的入门:http://struts.apache.org/release/2.1.x/docs/tutorials.html

接下去正式将这些学习的知识点发挥作用的时候了。

继续我们未完成的Weather 页面。

这些知识最基本的教程,让我们明白大概的struts2 组织结构,后续的有annotation 之类的可以更优雅的方式实现相同的功能,让我们先使用我们已经拥的的成果学以致用,而后再来改进。

Java Hour 36 Weathre ( 9 ) struts2 – exception的更多相关文章

  1. struts2 java.lang.StackOverflowError org.apache.struts2.json.JSONWriter

    1. 问题描述: 页面通过异步访问action,    action的方法通过map封装数据,struts的result的type设置为json,后台报错 六月 25, 2016 6:54:33 下午 ...

  2. java核心技术-(总结自杨晓峰-java核心技术36讲)

    1. 谈谈你对java平台的理解 首先是java最显著的两个特性,一次写入处处运行:还有垃圾收集器gc,gc能够对java内存进行管理回收,程序员不需要关心内存的分配和回收问题 然后谈谈jre和jdk ...

  3. java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter /struts2.1.3以前版本和之后版本区别/新版Eclipse找不到Java EE Module Dependencies选项

    严重: Exception starting filter struts2java.lang.ClassNotFoundException: org.apache.struts2.dispatcher ...

  4. Java后台处理框架之struts2学习总结

    Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...

  5. zookeeper_service 出错 java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException

    2016-12-18 08:28:07 ContextLoader:358 ERROR - Context initialization failed java.lang.NoClassDefFoun ...

  6. java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)

    采用SSH框架时出现了 java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage ...

  7. java异常——RuntimeException和User Define Exception

    1.RuntimeException public class RuntimeException { public static void main(String[] args) { // TODO ...

  8. Kafka中错误:Unrecognized VM option ‘UseCompressedOops’ Error: Clould not create the Java Vritual Machine. Error: A fatal exception has occurres . Program will exit.

    错误的描述: 在kafka安装目录下,执行 $ bin/zookeeper-server-start.sh config/zookeeper.properties & Unrecognized ...

  9. 错误:java.lang.NoClassDefFoundError: com/project/common/exception/ServiceException 的解决

    问题: 项目编译通过,启动报错误信息java.lang.NoClassDefFoundError: com/project/common/exception/ServiceException. 解决方 ...

随机推荐

  1. iconv命令详解

    功能]  对于给定文件把它的内容从一种编码转换成另一种编码. [描述]  -f encoding :把字符从encoding编码开始转换. -t encoding :把字符转换到encoding编码. ...

  2. nginx 支持pathinfo的配置文件

    location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; set ...

  3. phpcms 网站迁移服务器

    相信很多人不知道怎么去把PHPCMS V9进行搬家 在本地测试好的phpcms v9网站需要搬到服务器上,可以用以下方法: 1.上传所有的程序文件(如果主机支持压缩包在线解压,那么就打成zip的包,f ...

  4. mysql cluster (mysql 集群)安装配置方案(转)

    一.准备 1.准备服务器 计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL ...

  5. JavaScrip操作Cookie

    //生成cookie function addCookie(sName, sValue, day) { var expireDate = new Date(); expireDate.setDate( ...

  6. motto4

    有时候,你不能太固执,因为这样子对你不利,应该懂得变通才行. 你要知道,语言是表达思想的工具.你不说,别人怎么知道你的思想呢?你又怎么了解他人的思想呢?

  7. 寻虫记:BOM头制造的冤案,无故多出空白行

    最近在做的一个网站发生了一个很诡异的BUG: 使用IE浏览页面时,一切都挺正常: 而使用Firefox浏览时,发现某些页面元素之间的距离比预期的要宽很多,HTML元素本身的hight.padding和 ...

  8. javascript将毫秒转换成hh:mm:ss的形式

    function formatMilliseconds(value) { var second = parseInt(value) / 1000; // second var minute = 0; ...

  9. javascript模板插件amaze.js

    摘要: 最近在开发项目时,异步接口需要前端渲染数据,js拼接太低级,必然要用模板插件.之前用过基于jQuery的和juicer等插件,考虑到以后公司项目上的统一,移动端和pc端上的统一,以及可维护性, ...

  10. WhatsApp值160亿美元,腾讯推大众点评微信支付!

    腾讯前脚刚入股大众点评,FB后脚就将斥资160亿美元收购WhatsApp(40亿美元现金和120亿美元股票). 为什么WhatsApp值160亿美元?这是什么东东呢?WhatsApp这款服务可以帮助用 ...