本文内容:
1 MVC概念
2 Struts框架
3 Struts主要组件
4 Struts开发步骤
1 MVC概念
理解Model1->Model2->MVC的意义
Model1:以JSP为中心的开发模型.
Model2:以Servlet为中心的开发模型.
MVC:
1)必须基于MVC组件的方式重新思考和设计应用结构。
2)所有的页面和组件必须在MVC框架中实现,所以必须进行附加地开发工作。
3)MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,
最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,例如–Struts。看图:
2 Struts框架
1)框架
框架是可被应用开发者定制的应用骨架。是整个或部分系统的可重用设计,
表现为一组抽象构件及构件实例间交互的方法。
2)Web层框架
(1)基于MVC Model2架构
(2)大粒度组件重用
HTTP请求分派
调用模型的方法
视图的装配和选择
(3)灵活性、扩展性、可插入性
一组可方便使用和灵活扩展的类和接口
(4)国际化支持
(5)简化输入验证
3)流行的Web框架
Struts(*)
Webwork
SpringMVC
Tapestry(*) :
JSF:Myfaces/ADF(*)
Echo
zk
……
4)Struts简介
Struts 是Apache组织的一个开放源码项目。
Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持。
它采用的主要技术是Servlet,JSP,资源文件和custom tag library。
获取它的使用版本和具体信息可以查阅 http://jakarta.apache.org网站。
5)Struts的优缺点
(1)优点
利用Struts提供的taglib可以大大节约开发时间
表现与逻辑分离
维护扩展比较方便
国际化支持与完善的验证框架
统一错误处理方法
大量内置设计模式的使用
单例模式、组合模式、命令模式、委派模式等
便于团队开发
巨大的用户社区
稳定且成熟
大量第三方工具的支持
(2)缺点
不适合小型应用开发,直接使用JSP和Servlet反而方便快捷
基于请求的框架相对与基于组件事件驱动的框架来说设计理念已经相对落后,
其可重用的粒度也相对比较小
3 Struts主要组件
1)ActionServlet:
继承HttpServlet类 总统
和普通的Servlet一样需要在web.xml中配置
< servlet-name > action </ servlet-name >
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
< init-param >
< param-name > config </ param-name >
< param-value > /WEB-INF/struts-config.xml </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > action </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
2)Action:
总统秘书的招聘条件
总统ActionServlet有一本秘书名册(struts-config.xml),记录了
总统的所有秘书的详细信息
开发人员必须继承这个Action类,以迎合总统ActionServlet的招聘要求。
职责:调用业务逻辑方法
将控制权返回给ActionServlet并且提供相关的路由信息
public class LoginAction extends Action {
……
}
(1)继承Action类。
(2)覆盖 execute(…)方法。
(3)返回ActionForward对象(提供决策信息给ActionServlet选择适当的视图响应用户)。
(4)在struts-config.xml中配置
<action-mappings>
<action input=”/index.jsp” :ActionForm验证失败的跳转页面
name=”aForm” :与Action对应的FormBean对象
path=”/myAction” :请求URI(/myAction.do)
scope=”session” :FormBean作用域范围
type=”action.LoginAction” :自定义的Action类
validate=”true” :FormBean是否调用validate(…)方法
>
<forward name=”success” path=”/success.jsp” /> :成功跳转的页面
</action>
// ……
</action-mappings>
注:scope的值可以是request和session,默认是session
3)ActionForm:
封装HTTP请求中的数据
将用户提交的数据自动填充(在相应的action的execute方法被调用之前)到form的属性中
无需手工调用request.getParameter(…)
开发人员必须继承这个ActionForm类
public class LoginForm extends ActionForm {
//……
}
开发步骤:
(1)继承ActionForm类。
(2)每个属性对应提交表单中的一个输入域。
(3)为每个属性提供getter和setter方法。
(4)提供validate(…) and reset()方法(可选)。
(5)在struts-config.xml配置
< form-bean name = " aForm " type = " form.AForm " />
< form-bean name = " bForm " type = " form.BForm " />
</ form-beans >
4 Struts开发步骤
1)下载Struts开发包
2)创建WebApp目录结构
3)将%STRUTS_HOME%/lib/*.jar拷贝到WEB-INF/lib
4)将%STRUTS_HOME%/contrib/struts-el/lib/*.jar拷贝到WEB-INF/lib
5)将%STRUTS_HOME%/lib/*.tld拷贝到WEB-INF(新版本无需这么做)
6)将%STRUTS_HOME%/contrib/struts-el/lib/*.tld 拷贝到WEB-INF(新版本无需这么做)
7) 配置WEB-INF/web.xml文件
< servlet-name > action </ servlet-name >
< servlet-class >
org.apache.struts.action.ActionServlet
</ servlet-class >
< init-param >
< param-name > debug </ param-name >
< param-value > 2 </ param-value >
</ init-param >
< init-param >
< param-name > config </ param-name >
< param-value > /WEB-INF/struts-config.xml </ param-value >
</ init-param >
< load-on-startup > 2 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > action </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
8) 在WEB-INF创建struts-config.xml文件
< ! DOCTYPE struts-config PUBLIC
" -//Apache Software Foundation//DTD Struts Configuration 1.3//EN "
" http://struts.apache.org/dtds/struts-config_1_3.dtd " >
< struts-config >
//......
</ struts-config > <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>