关于上面这个红框里的问题,经过实际测试发现,struts2增加一个命名空间后,jsp页面里所引用的资源的路径,也需要增加一个"../",

于是,跟SpringMVC没啥区别了啊....,从访问过程来看,jsp页面所引用的图片,js什么的,都是再次请求的,请求时默认当前路径删除最后一个,加上这个资源的url,于是在增加一个命名空间后,就会出现引用的资源需要加一个../的问题.

当然,会遇到如下错误:

使用Struts2感叹号方式的动态方法调用,struts.xml配置都正常,但是使用http://localhost:8080/XXX/user!list.action访问时,提示:
There is no Action mapped for namespace [/] and action name [user!list] associated with context path [XXX]
原因在于:struts2中默认不允许使用DMI
此时需要修改struts.xml,添加:<constant name="struts.enable.DynamicMethodInvocation" value="true" /> ,设置这个常量值为true,就可以使用动态方法调用了。

事实上,这种方法是不推荐的(主要这个方式是出现好几次漏洞了好像),有另外两种动态方法调用的方法:
1.指定method属性
2.通配符方式(官网推荐使用)

这个method方法可以代替前面的动态调用,不过麻烦些,实施方法如下:

1.在一个XxxAction中写了很多个方法,

2.在Struts2.xml中配置很多个action,name为action名+方法名,method为"方法名",class都是上面这个XxxAction.

弄了这么一大堆,感觉不如springMVC中用"方法名加参数名和参数个数"来判断来的方便

例子如下:

  1. public String execute() {
  2. System.out.println("----登录的用户信息-----");
  3. System.out.println("用户名:" + userName);
  4. System.out.println("密码:" + password);
  5. if (userName.startsWith("qst") && password.length() >= 6) {
  6. // 返回成功页面
  7. return "success";
  8. } else {
  9. // 抛出异常
  10. throw new RuntimeException("用户登录失败!");
  11. }
  12. }
  13.  
  14. -------------------------------------------------------------------
  15. <action name="login5" class="com.qst.chapter03.action.LoginAction5">
  16. <exception-mapping result="error" exception="java.lang.Exception" />
  17. <result>/ok.jsp</result>
  18. <result name="error">/error.jsp</result>
  19. </action>

springMVC中异常处理我没系统学习,不知道是不是也像struts这么方便.

其他技巧

其实这个BaseAction基类就相当于springMVC中的servletDispatcher(名字可能拼错了)中的一个现有的功能

这个功能springMVC中也有了.

session的确应该封装到一个对象里面去.

3Struts2进阶----青软S2SH(笔记)的更多相关文章

  1. 9Spring进阶----青软S2SH(笔记)

  2. 6Hibernate进阶----青软S2SH(笔记)

    关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch= ...

  3. 5Hibernate入门----青软S2SH(笔记)

    这里有个问题,就是这本书第五章的示例代码中的hibernate的jar包有问题,各种找不到类,把lib下的包后换成第六章里的包就好了. 换成5.1的就好了,而且如果只是简单使用hibernate的话, ...

  4. 1JavaEE应用简介----青软S2SH(笔记)

    这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...

  5. GIFT-EMS礼记----青软S2SH(笔记)

    这个S2SH的项目,是这本书的一个贯穿项目,所以这里要记录一下, 看这个项目有两个目的: 1.借助这个项目,学习一下S2SH的综合配置及使用 2.借助这个项目练习一下如何做需求分析和项目架构设计. P ...

  6. 10Spring高级----青软S2SH(笔记)

  7. 8Spring初步----青软S2SH(笔记)

    例子: bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  8. 7Hibernate高级----青软S2SH(笔记)

  9. 5Hibernate配置及使用方法----青软S2SH(笔记)

    关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类, ...

随机推荐

  1. 如何区分/dev/input/event

    方法是把每一个/dev/input/event打开.通过ioctl函数来读取设备name,每一个设备name是固定的,可以根据name区分event.我这是查找触摸事件为例:代码如下: static ...

  2. 深入java集合系列文章

    搞懂java的相关集合实现原理,对技术上有很大的提高,网上有一系列文章对java中的集合做了深入的分析, 先转载记录下 深入Java集合学习系列 Java 集合系列目录(Category) HashM ...

  3. 云计算的三种服务模式:SaaS/PaaS/IaaS

    转载http://blog.chinaunix.net/uid-22414998-id-3141499.html 定义 云计算主要分为三种服务模式,而且这个三层的分法重要是从用户体验的角度出发的: S ...

  4. nginx $document_uri 防止死循环

    $document_uri 表示访问的url 现在我的需求是,访问 www.xxx.com 请求到 www.xxx.com/bbs/ 在nginx配置文件中加入 if ($document_uri ! ...

  5. zookeeper原理

    Zookeeper与paxos算法:http://www.riaos.com/ria/11299 Paxos算法1:http://blog.csdn.net/chen77716/article/det ...

  6. SPOJ GSS3 Can you answer these queries III[线段树]

    SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...

  7. 洛谷P1220关路灯[区间DP]

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  8. 第14章 集合框架(1)-List集合的各种类

    1.概述 1.1.Java集合框架的由来 1.2.什么是集合框架? 1.3.为什么需要集合框架 1.4.常用的框架接口规范 2.Vector类 2.1.存储原理 2.2.构造方法 2.3.常用方法 3 ...

  9. RAID级别

    raid磁盘阵列,我们一般使用RAID 5,挂载单独硬盘测试读写速度,一般使用RAID0.

  10. 如何动态在文档中加入<script></script>写入大段js

    <script language="javascript"> var script = document.createElement("script" ...