Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
在Struts中,已经由一个名为ActionServlet的Servlet充当 控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的struts-config.xml的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在MVC的 模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应Struts里的ActionForm与Action两个需要继承实现超类。在这里,Struts可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB), JDBC与JNDI。在Struts的视图(View)端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如Velocity Templates,XSLT等。通过应用Struts的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。
PS:这是Struts1.x的介绍,个人认为先学好Struts1.x,再学2.x,也并没有什么大问题。
开发资料:Struts1.3和config配置详解
Struts作为一种规范,在一定程度上约束程序员的自由,但是正是因为其规范作用,使其在各公司、各行业中成为标准,这样就减少了公司间合作时、程序员交流时的冲突,使开发效率大幅度提高,有利于程序的维护和扩展。
PS:Struts1.x的缺陷也是很明显的,比如action的单态,这在并发情况下就不是很好,Servlet和JSP耦合很强。不过通过Struts2.x可以解决其中的一些问题。
1.1、在IDE中(我用的是MyEclipse 10)建立Java Web项目
1.2、导入Struts Jar包(我用的是Struts1.3)
1.3、编写jsp,编写actionForm(继承ActionForm),编写action(继承Action)
1.4、配置struts-config.xml文件,写好actionForm和action的对应关系
1.5、配置web.xml文件,写好ActionServlet的配置参数
1.6、测试
2.1、在IDE中(我用的是MyEclipse 10)建立Java Web项目
2.2、鼠标右击项目名,找到MyEclipse下的Add Struts Capabilites...,配置好strut-config路径、Struts版本、ActionServlet单例对象的名字以及它对应的访问地址(一般来说都是*.do)、包名。
2.3、在struts-config.xml的源代码界面配置好actionForm和action的对应关系。
2.4、测试
3.1、在IDE中(我用的是MyEclipse 10)建立Java Web项目
3.2、鼠标右击项目名,找到MyEclipse下的Add Struts Capabilites...,配置好strut-config路径、Struts版本、ActionServlet单例对象的名字以及它对应的访问地址(一般来说都是*.do)、包名。
3.3、在struts-config.xml的设计界面图形化配置(具体操作可以搜索)。
3.4、测试
源代码:Struts三种开发方法案例
1、struts1.x框架可以通过三种方式,手工、半手工半工具、全工具。
2、actionForm中的setXxx方法必须对应jsp表单提交过来xxx。
3、struts-config.xml文件中<action>的scope属性指的是actionForm的生命周期范围,默认是session,可以设置成request。
4、action都是单态的,包括ActionServer,这对网站并发有影响。
5、解决form到action的乱码问题,可用过滤器设置request,response,contentType的编码解决。
6、struts-config.xml默认是放在WEB-INF目录下的,其实也可以放在其他地方,只需要在web.xml中配置ActionServer时,加入如下初始参数。
<init-param>
<param-name>config</param-name>
<param-value>/目录名/文件名</param-value>
</init-param>
7、struts-config.xml这样的Struts配置文件是可以在web.xml中配置多个的,多个配置文件用”,”隔开就行了。
<init-param>
<param-name>config</param-name>
<param-value>/目录名/文件名1,/目录名/文件名2,/目录名/文件名3</param-value>
</init-param>