<c:forEach items="${types}" var="type" varStatus="staturs">
<c:if test="${statursindex%3==0}"><tr></c:if>
<TD>
${typename}
</TD>
<c:if test="${statursindex3==2}"></tr></c:if>
</c:forEach>
</table>
上面这,效果是可以实现,但是在页面上会报没有开始<tr>标签,其实最好是用css来排版。Spring:业务逻辑框架,和struts,hibernate组成mvc的三大框架,也就是大家所说的ssh框架
框架的出现让开发变得更加方便,快捷,以及可扩展性
学这个三大框架之前就会对应的学jsp,servlet和javabean
struts 1和2的区别:
struts1和struts2的区别其实并不是太大,两者的区别:
Action 类:
◆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被调用时>1、struts2用的是ognl,它与jstl取值有点不同。
2、ognl与jstl判断属性是否为空均是通过test来判断。
3、jstl判断语法:<c:if test="${list==null}"> </c:if>。
4、struts2的ognl从request中取值不能直接$(),必须用#request如下:
<s:if test="#requestlist==null"> </s:if>。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)