今天做开始做一个数据库之间相互导入数据的功能模块,故写此篇文章加以强化记忆:)
如果你需要在模块(Module)中使用多于一个的数据源,你可以在配置文件的<data-source>元素里包含一个key属性。
<data-source>
<data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
…属性配置略, 同上…
</data-source>
<data-source key="B" type="org.apache.commons.dbcp.BasicDataSource">
…属性配置略, 同上…
如果你需要在模块(Module)中使用多于一个的数据源,你可以在配置文件的<data-source>元素里包含一个key属性。
<data-source>
<data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
…属性配置略, 同上…
</data-source>
<data-source key="B" type="org.apache.commons.dbcp.BasicDataSource">
…属性配置略, 同上…
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
今天图省事,直接在JSP页面写了点代码。结果就遇到了这样的错误,代码如下:
由于代码很简单,所以起初我考虑的是环境变量的问题,是不是少jar。但经排查。Struts标签初始化的变量与代码实现过程并不同步。经如下修改后,运行正常:
复制内容到剪贴板 程序代码
<logic:iterate id="pt" indexId="ind" name="LIST" length="1">
<%
pt=pt.toString();
int pos =pt.lastIndexOf("."); //到这部的时候开始报错
pt=pt.substring(0,pos);
out.println("["+pt+"]");
%>
<%
pt=pt.toString();
int pos =pt.lastIndexOf("."); //到这部的时候开始报错
pt=pt.substring(0,pos);
out.println("["+pt+"]");
%>
由于代码很简单,所以起初我考虑的是环境变量的问题,是不是少jar。但经排查。Struts标签初始化的变量与代码实现过程并不同步。经如下修改后,运行正常:
没有使用struts的话这句代码是这样的:
<input name="Button" type="button" class="btn_grey" value="注册" onClick="window.location.href='register.jsp'">
使用struts标签以后只能这样:
<html:button property="button" value="注册" />加上class="btn_grey"以后就会报错
应该是:
tagLib's attribute --> HTML attribute
styleClass --> class
style --> style
styleId --> id
<input name="Button" type="button" class="btn_grey" value="注册" onClick="window.location.href='register.jsp'">
使用struts标签以后只能这样:
<html:button property="button" value="注册" />加上class="btn_grey"以后就会报错
应该是:
tagLib's attribute --> HTML attribute
styleClass --> class
style --> style
styleId --> id