Struts 学习之01(启航)
前段时间个人开始学习struts,从今天起把一些个人的学习经历记录下来
Struts 是一种基于SUN的J2EE技术的一种框架,主要技术还是servlet和JSP技术来
实现的。通过模型+视图+控制(MVC)设计模式来设计出一种框架结构来统一目前个
人自行使用的框架结构,使程序员,特别是新手可以很好的运用MVC来开发系统。
struts更多的应用于视图,而把控制层交给Spring,而模型层用Hibernate做持久层。
与后台的数据库相分离。
框架有点像我们现实生活中的钢架构,比如说现在的厂房构建的时候都是用钢架构
去构建,先用钢铁架设出一个厂房的整体结构,然后我们再加上如玻璃钢这些东西
很快就能构建出一个厂房,而如果说按照原有的设计方式,就是建筑上来说,我们
要用一砖一瓦,水泥呀石灰呀 一点点做上去的话,很慢的,所以说架构的出现以及
框架的出现,无非就是方便我们开发,给我们主体部分相对来说已经固定死的早期
程序员给我们提供的一种优秀的程序来组成,然后剩余的部分由我们自己来设计,而
struts就是其中的一种
其官方站点:http://struts.apache.org/ 目前最新版本:struts2.0
首先看看MVC,下图
上图是大部份B/S结构程序扬采用的一种模型,也将MVC的基本工作原理描述清楚!
下面是模型 1:
而新手一般都是将jsp写的有点像 asp,就是将大量的代码写在jsp中,我目前就是如此,虽然使用JAVABEAN
可以减少一部分 代码,但页面中依然还会存在少量JAVA代码,也因此才决定来开始学习Strits,那么现在来看看Struts的工作原理
针对上图的一些说明如下:
1.Servlet是Struts框架最重要的组件,它通过org.apache.struts,action.ActionServlet来实现。
2.struts-config.xml是配置文件,它负责将请求转发给适当的Action对象,如果该对象不存
在,ActionServlet会先创建这个对象
3.Action类负责调用模型的方法,更新模型的状态,并帮助控制器应用程序的流程
下面我来开始我的第一个Struts程序,我所使用的工具是:
JDK1.5+ Eclipse 3.2.1 +MyEclipse5.1.0GA+Struts1.2+Tomcat 5.5.20
Step1:新建项目 File -->New-->Project 选择 MyEclipse -->WebProject 输入项目名MyFirstStruts
Step2: 为项目添加Struts 选中项目名 右键-->MyEclipse-->Add Struts Capabilities 选择Struts1.2
将com.yourcompany.struts改为自己的fengyan.struts
加载完后我们可以在WebRoot/WEB-INF下面看到一些标签文件,我们先看看web.xml
我们可以看到servlet对象和servlet部署 的配置信息 如下
上面说明servlet的访问路径为 ***.do,只要是.do的程序它就导向action对象,而通过servlet对象可知这个action对象,它产生一个org.apache.struts.action.ActionServlet这样一个类对象,而这个对象产生后它所读取的配置文件是通过参数config指定也即为/WEB-INF/struts-config.xml,那么它就根据该文件中的描述来运行,现在我们再看看struts-config.xml文件!
<data-sources/>配置数据源,<form-beans/>表明表单bean的产生,<global-exception/>用于全局异常的处理
<g;obal-forwards/>主要是全局跳转,<action-mapping/>是action映射的,它和formbean是最重要的,最后一个一般是国际化处理·它读取的就是一个属性文件~
好了,在明白这上面这些后,开始创建strurts了,为了方便,我使用可视化的开发,
step4: 打开struts-config.xml 切换到view; 右键-->New-->Form,Action and JSP.这样做的目的是同时生成
Form,action 以及JSP~在Use case 中输入User 在From properties Add 添加二个属性 userPwd
和 userName;切换到JSP 勾选create jsp form 在地址栏中 去掉/form就可以让它生成在我们的根
目录下了!确定后,看下struts-config.xml中给我们产生了哪些东东
说明:产生了一个userForm对象,它的类类型为fengyan.struts.form.UserForm,这个对象在action-mappings中会被调用,一般有请求路径为 /user的时候,将/user.jsp表单中的数据读取出来,读出来后写入到userForm属性中,而这个userForm就是刚刚定义的一个form-bean 那么userForm在接收到这些数据的时候就可以填充自己的属性了,这时我们来看看UserForm.java
这里面有二个我们刚刚定义的属性userName和userPwd,另外还有2个方法validate和reset,看名字就知道,validate方法是用来验证数据有效性的,而reset就是初始化,有点像我们表单中reset按扭的作用啦~
//让userName初始化为fengyan
userName = "fengyan";
}
启动tomcat 运行 效果如下:
step5: 我们现在再加点,在该页面输入内容然后在另外一个页面来接收!产生一点我们为了传递,将
struts-config.xml中 scope值改为session!
step6: 打开UserAction.java 可以看到里面有一个execute方法可以通过mapping来指定转向,当然,要转
向到的页面也要在action-mapping 中注册,修改后的struts-config.xml如下:
step7: 现在回头写UserAction.java中的execute方法如下:
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
return mapping.findForward("show");
//该show 就是上面在action-mapping中注册的键值值,指向show.jsp
}
step8: 最后当然就是在show.jsp中将其读取出来。代码如下
总算写完了,最后看下运行效果。
总结:整个模型运行流程为; 客户端的HTTP请求--> .do(控制器ActionServlet)-->struts-config.xml
然后将input中的数据填充给actionform,然后提交给action处理,根据需要action会和后台的
actionBean交互,(本例中是UserAction.java)最后action提交给jsp视图进行输出!
示例下载