Struts
http://blog.csdn.net/EasyYoung/archive/2009/06/27/4302593.aspx
01. Struts是MVC框架,用于表示层; Hibernate用于持久层; Spring用于管理;
02. Struts的配置:
* 拷贝struts lib下的所有jar到WEB-INF/lib下;
* 修改web.xml文件,配置ActionServlet;
* 提供struts-config.xml文件;
03. ActionForm中的属性必须和表单输入域的名称一致;
(Action, ActionForm, ActionForward, ActionMapping, struts-config.xml)
04. Struts的配置:
<struts-config>
<form-beans>
<form-bean name="loginForm" type="wen.hui.struts.LoginActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/login"
type="wen.hui.struts.LoginAction"
name="loginForm"
scope="request"
>
<forward name="success" path="login_success.jsp"></forward>
<forward name="error" path="login_error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
<!-- path必须以"/"开头 -->
<!-- scope默认是session -->
05. 在启动时,会事先把struts-config.xml中的数据读取到多个Map中;
06. struts标签的配置和使用
配置:
* 在struts-config.xml文件中加入
<message-resources parameter="MessageResources" />
* 拷贝MessageResources.properties到src下
使用:
* 采用taglib指令引入
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%>
* 常用标签:
<bean:write>
<logic:empty> 和 <logic:notEmpty>
<logic:present> 和 <logic:notPresent>
<logic:iterator>
07. <logic:empty/notEmpty/present/notPresent> :
即使不存在,判断为空也成立;attr1为空, attr1不存在
null就是为空且不存在;
08. 关于struts中的scope属性, 是先在哪个范围搜索呢????????
09. EL表达式只跟容器有关,必须是规范2.4以上的. 使用方法为:${ scope变量 }
如果为制定scope,则从page-->application往上找;
EL的内置对象有:pageScope, requestScope,sessionScope, applicationScope等等....
EL表达式输出, 会自动解析html代码;
10. jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下,(如果只使用El表达式,不用拷贝这两个);
注意: jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本以上的容器中才能使用.
jstl的<c:out>默认不解析html代码,要属性escapeXml=false才可以;
11. jstl设置时,默认都是page的范围
12. 条件分支控制: c:if相当于if
<c:choose> <c:when>..</c:when> <c:otherwise>..</c:otherwise> </c:choose>:相当于if..else..
且<c:choose>只能有一个,<c:when>可以多个, <c:otherwise>也只能有一个,且有顺序要求;
注: 当有多个<c:when>时,相当于: if...else if...
13. jstl_core核心库中,主要有标签:
c:out/c:set/c:remove/c:if/c:choose/c:when/c:otherwise
c:forEach/c:forTokens/c:catch/c:import/c:url/c:param/c:redirect
注: 参照项目struts_jstl
14. jstl_fmt标签: <fmt:formatDate>, <fmt:formatNumber>
注: num(pattern="##,##,###.##): 123,456.79-->取作用的是最后一个,即###
格式化数字时,"0"的位置一定有值,不足也会补零;
15. 自定义函数库:
* 定义类和方法,(方法必须是public static的)
* 编写自定义tld文件,并将次文件放到WEB-INF或WEB-INF的子目录中,(可以参照fn.tld来写)
* 在jsp页面中要引入自定义函数库.
16. 动态ActionForm:
* 动态ActionForm是为了避免标准ActionForm膨胀而设计的.
动态ActionForm的配置:
*<struts-config>
<form-beans>
<form-bean name="dynaactionform"
type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="age" type="java.lang.Integer"></form-property>
</form-bean>
</form-beans>
<action-mappings>
<action path="/dyna"
type="wen.hui.struts.DynaAFAction"
name="dynaactionform"
scope="request"
>
<forward name="success" path="/dynaaf.jsp"></forward>
</action>
</action-mappings>
</struts-config>