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类, ...
随机推荐
- js快速判断IE浏览器(兼容IE10与IE11)
在很多时候,我们一般采用navigator.userAgent和正则表达来判断IE浏览器版本,下面介绍用IE浏览器中不同特性来判断IE浏览器 1 判断IE浏览器与非IE 浏览器 IE浏览器与非IE ...
- JavaScript根据文件名判断文件类型
//JavaScript根据文件名判断文件类型 var imgExt = new Array(".png",".jpg",".jpeg",& ...
- spring类型自动转换——@InitBinder和Converter
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- gdb进程调试,多进程调试
1.单进程的调试 常规的通过gdb cmd这种方式开启调试,特别说明的是通过attach的方法附加到一个指定的进程上去进行调试,这种方法适合于调试一个已经运行的进程,具体用法: gdb -p [pi ...
- JSP连接MySQL数据库问题
之前写了一大段,还说了一下具体JDBC连接数据库API的具体包的基本知识,哪知道自己手残不小心按了删除按钮.结果去看自动保存记录时,就只剩下下面这段了.好吧,其实最主要最核心的也就是下面这点了.具体如 ...
- UNITY 之FixedUpdate
这个机制的加入 比 AS3好了很多 AS3的EnterFrame相当于UNITY的Update 但是FLASH做不了也是因为浏览器的限制吧! Here's how the fixed time ste ...
- jmeter(三)Sample之SOAP/XML-RPC Request
项目背景:公司的微信端H5界面新开发了会员注册功能,需要对其进行压力测试 项目目标:需要承受每分钟最少6000的压力 一.建立一个测试计划(test plan) 之前有说过,jmeter打开后会自动生 ...
- linux 安全狗
下载 ;安装; service safedog start 或者 sdstart;sdui
- 最好用的JQuery插件集合以及组合拳
[Tab页签] Jquery-tab [Table] mmGrid
- VMware Workstation中网络连接之桥接、NAT和Host-only
在Windows XP系统中,安装好VMware Workstation虚拟机软件以后,我们可以查看一下"网络连接"窗口: 在窗口中多出了两块网卡: VMware Network ...