3Struts2进阶----青软S2SH(笔记)












关于上面这个红框里的问题,经过实际测试发现,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(笔记)的更多相关文章
- 9Spring进阶----青软S2SH(笔记)
- 6Hibernate进阶----青软S2SH(笔记)
关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch= ...
- 5Hibernate入门----青软S2SH(笔记)
这里有个问题,就是这本书第五章的示例代码中的hibernate的jar包有问题,各种找不到类,把lib下的包后换成第六章里的包就好了. 换成5.1的就好了,而且如果只是简单使用hibernate的话, ...
- 1JavaEE应用简介----青软S2SH(笔记)
这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...
- GIFT-EMS礼记----青软S2SH(笔记)
这个S2SH的项目,是这本书的一个贯穿项目,所以这里要记录一下, 看这个项目有两个目的: 1.借助这个项目,学习一下S2SH的综合配置及使用 2.借助这个项目练习一下如何做需求分析和项目架构设计. P ...
- 10Spring高级----青软S2SH(笔记)
- 8Spring初步----青软S2SH(笔记)
例子: bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- 7Hibernate高级----青软S2SH(笔记)
- 5Hibernate配置及使用方法----青软S2SH(笔记)
关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类, ...
随机推荐
- Ubuntu14-04 MySQL-5.6.21通用二进制安装
#卸载mysql /etc/init.d/mysqld stop &> /dev/null killall mysqld &> /dev/null sudo rm -rf ...
- Windows10的革命之路-全新UWP开发平台
众所周知,最近几年,微软一直在操作系统上进行统一化的尝试.第一次尝试的产品——Windows 8/8.1操作系统完全谈不上成功.请看下图: 我个人认为,这并不意味着操作系统统一化的策略是错误的,只能算 ...
- 针对github权限导致hexo部署失败的解决方案
hexo deplay出错,没有反应 今天想在自己的另一个博客地址(链接地址)上更新一下博客,没想到hexo deplay没有反应,以下是解决过程:(更新于 2016-12-24 11:17:43) ...
- 【2016-11-7】【坚持学习】【Day22】【工作流引擎设计--执行用户】
最近在做一个工作流引擎,架构师已经设计好了,但是我发现他设计 每一步的用户集合的设计,有一定的不足,或者是不方便,不同的组织架构影响着他的用户数据源配置方式. 于是我想花点时间去看看人家优秀是工作流引 ...
- 【2016-10-31】【坚持学习】【Day16】【MongoDB】【入门】
下载,安装: http://www.mongodb.org/downloads 命令行下运行 MongoDB 服务器 为了从命令提示符下运行MongoDB服务器,你必须从MongoDB目录的bin目录 ...
- 重构与模式(Refactoring to Patterns)-读书笔记
第一章 ☛过度设计:是指代码的灵活性和复杂性超出所需. 第二章 ☛重构是一种保持行为的转换. 第三章 ☛每一个模式都是由三部分组成的规则,他表达的是某一环境,一个问题以及解决问题的方案之间的关系. ☛ ...
- BZOJ 3531: [Sdoi2014]旅行 [树链剖分]
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1685 Solved: 751[Submit][Status] ...
- C/C++编程语言学习资料尽收眼底 电子书+视频教程
Visual C++(VC/MFC)学习电子书及开发工具下载请看这里 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技 ...
- dwarf格式解析
debug_line中包含的是地址和源文件行之间的关系 我今天想搞清楚的是文件的C代码和汇编代码之间的关系: 对这块之前一直是迷迷糊糊的,发现这个问题已经严重影响到bug的定位了. 之前感觉C和汇编不 ...
- Qt——浅谈样式表
优秀的程序,不仅要有严密逻辑,而且应该有美观的外表.从软件界面,便可看出你是否用心在做,是否是一个有思想的人. Qt样式表的术语和语法规则和HTML CSS有很多相似之处. 样式规则 Qt中样式规则由 ...