关于上面这个红框里的问题,经过实际测试发现,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中用"方法名加参数名和参数个数"来判断来的方便

例子如下:

public String execute() {
System.out.println("----登录的用户信息-----");
System.out.println("用户名:" + userName);
System.out.println("密码:" + password);
if (userName.startsWith("qst") && password.length() >= 6) {
// 返回成功页面
return "success";
} else {
// 抛出异常
throw new RuntimeException("用户登录失败!");
}
} -------------------------------------------------------------------
<action name="login5" class="com.qst.chapter03.action.LoginAction5">
<exception-mapping result="error" exception="java.lang.Exception" />
<result>/ok.jsp</result>
<result name="error">/error.jsp</result>
</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. [嵌入式开发]Linux性能分析——上下文切换

    一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况, ...

  2. [iOS]坑爹的ALAsset(Assets Library Framework)

    Assets Library Framework 可以用来做iOS上的多选器,选照片视频啥的啦就不介绍了. 目前的项目有点类似dropbox,可以选择设备内的照片然后帮你上传文件,使用了Assets ...

  3. [转]MVC过滤器

    本文转自:http://www.cnblogs.com/HopeGi/p/3342083.html APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去 ...

  4. NUOJ 88

    思路1: 找规律,本题若是直接暴力搜索,就是f(n)=2^n-1,然后f(n)%1000000,那么结果会越界:所以考虑用f(n+1)=(2*f(n)+1)%1000000,不过遇到较大数据的时候,会 ...

  5. python高级之面向对象高级

    python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...

  6. (原创)JAVA多线程三锁

    前两章介绍了锁,那么现在我们介绍新的一个类,锁 一,简介 Lock是一个接口,实现它的类有读锁,写锁,和ReentrantLock,我们可以在类上点击ctrl+t来看看有哪些类实现了这个接口 使用方法 ...

  7. 使用JSP开发动态网站基础

    1. 什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 注意:在静态网页中插入flash ,虽然flash是在动的,但是并不是说这个网页就是动态 ...

  8. Linux 进程间通讯详解五

    msgrcv函数 ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg); --功能:是从一个消息队列接 ...

  9. 关于网络配置和zmp以及json

    1. JSON那一块有点小问题,当我们和手机进行通信的时候,virtualswitch写成本机的地址 192.168.1.100即可. 还有就是 jsonstring.c_str() 后面没有 + 1 ...

  10. thrift 一个有意思的特性:Class名称无关性

    最近开发的一个项目,后端采用thrift框架来提供rpc服务(java语言实现),然后前端采用php语言来生成thrift client调用后台RPC服务.由于某些原因,上周我把thrift定义文件中 ...