1.2.x
一、 MVC模式
MVC模式是“Model-View-Controller”的缩写,中文翻译为“模型-视图-控制器”。MVC应用程序总是由这三个部分组成。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML、JSP,也有可能为XHTML、XML和Applet等。
控制(Controller)可以理解为接收用户请求, 将调用模型处理请求,并响应用户。
二、 Struts介绍
Struts 是 Apache软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta项目中
的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的 Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是 MVC 经典设计模式中的一个经典产品。
在 Struts 中,已经由一个名为 ActionServlet 的 Servlet 充当 控制器(Controller)的角,根据描述模型、视图、控制器对应关系的 l 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在 MVC 的 模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应 Struts 里的 ActionForm 与 Action 两个需要继承实现超类。在这里,Struts 可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB), JDBC 与 JNDI。在 Struts 的视图(View)端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如 Velocity Templates,XSLT 等。通过应用 Struts 的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(l)中。
Struts结构图如下:
三、 Struts 五大标签(运行在服务器端,属于视图技术)
1. HTML标签
<%@ taglib prefix="html" uri="/tags-html"%>
a) 用于生成基本的HTML元素的标签
1、 <html:html>标签用于生成HTML的<html>元素
2、 <html:base>
3、 <html:link>
4、 <html:rewrite>
b) 用于生成HTML表单的标签
1、 <html:form>
2、 数据输入标签
<html:text>
<html:password>
<html:hidden>
<html:textarea>
<html:radio>
<html:checkbox>
<html:select>
<html:option>
3、 提交按钮标签
<html:submit>
<html:cancel>
<html:reset>
<html:button>
<html:image>
c) 用于显示错误或正常消息的标签
<html:errors>:用于显示错误消息
<html:messages>:用于显示正常消息
2. bean 标签
<%@ taglib prefix="bean" uri="/tags-bean"%>
a) 用于访问HTTP请求信息或JSP隐含对象
1、 <bean:cookie>
2、 <bean:header>
3、 <bean:parameter>
4、 <bean:page>
b) 用于访问Web应用资源
1、 <bean:message>:用于显示ResourceBundle 中的消息。
用来从指定的locale中取回国际化的消息并输出。这个过程可以传递5个以内的参数。Message标签有两种指定message key的方式,一是通过key属性直接指定;二是通过name和property属性间接的指定,其中message key是在message resources文件中定义的。
如:
<bean:message key=”login.page.title”>
2、 <bean:resource>
3、 <bean:struts>
4、 <bean:include>
c) 用于定义或输出JavaBean的Bean标签
1、 <bean:define>
2、 <bean:write>
3、 <bean:size>
bean:write,输出
d) name,在scope范围到变量
<bean:write name="test"/> 等价于 <%=Attribute("test")%>
e) filter
<bean:write name="test" filter="true"/> filter(true,false),默认是true,true按原样输出,false格式化输出。
f) property
<bean:write name="user" property="username"/>
g) format
<bean:write name="date" format="yyyy-MM-dd HH:mm:ss"/>
<bean:write name="number" format="###,###.####"/>
<bean:write name="number" format="###,###.0000"/>
3. logic标签
<%@ taglib prefix="logic" uri="/tags-logic"%>
a) 进行比较运算的Logic标签
<logic:equal>
<logic:notEqual>
<logic:greaterEqual>
<logic:greaterThen>
<logic:lessEqual>
<logic:lessThan>
b) 进行字符串匹配的Logic标签
<logic:match>
<logic:notMatch>
c) 判断指定内容是否存在的Logic标签
<logic:empty>和<logic:notEmpty>
<logic:present>和<logic:notPresent>
<logic:messagesPresent>和<logic:messagesNotPresent>
d) 进行循环遍历的Logic标签
<logic:iterate>
e) 进行请求转发或重定向的Logic标签
<logic:forward>
<logic:redirect>
如:
logic:empty与logic:notEmpty,判断是否为空“”, 数组集合也就是判断个数。
<logic:empty name="attr1"> attr1为空<br> javaservlet和jsp的比较 </logic:empty> <logic:notEmpty name="attr1"> attr1不为空<br> </logic:notEmpty> |
logic:present与logic:notPresent,判断是否存在null。
<logic:present name="attr1"> attr1存在<br> </logic:present> <logic:notPresent name="attr1"> attr1不存在<br> </logic:notPresent> |
logic:iterate,迭代。
<table border="1"> <tr> <td>姓名</td> <td>年龄</td> <td>所属组</td> </tr> <logic:empty name="userlist"> <tr> <td colspan="3">没有符合条件的数据!</td> </tr> </logic:empty> <logic:notEmpty name="userlist"> <logic:iterate id="user" name="userlist"> <tr> <td> <bean:write name="user" property="username"/> </td> <td> <bean:write name="user" property="age"/> </td> <td> <bean:write name="user" property="group.name"/> </td> </tr> </logic:iterate> </logic:notEmpty> </table> |
4. Nested标签,用于表达JavaBean嵌套关系及特定的嵌套级别提供等
5. Tiles标签,需要结合Tiles框架
四、 ActionForm (数据收集)
1、 动态ActionForm
动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准
ActionForm的所有功能
* 在l文件中定义动态ActionForm,如:
<form-beans>
<form-bean name="dynaForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String" />
<form-property name="age" type="java.lang.Integer"/>
<form-property name="user" type="com.shopping.www.vo.User"/>
</form-bean>
</form-beans>
*在Action中使用动态ActionForm
DynaActionForm daf = (DynaActionForm)form;
String username = (("username");
Integer age = (("age");
User user= (("user");
动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值
动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop},
如: ${dynaForm.map.username}
动态ActionForm的验证,通常使用动态验证框架validator实现。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论