您的位置:首页 > 编程语言 > Java开发

Struts 学习之01(启航)

2006-12-22 01:15 411 查看
前段时间个人开始学习struts,从今天起把一些个人的学习经历记录下来
Struts 是一种基于SUN的J2EE技术的一种框架,主要技术还是servlet和JSP技术来
实现的。通过模型+视图+控制(MVC)设计模式来设计出一种框架结构来统一目前个
人自行使用的框架结构,使程序员,特别是新手可以很好的运用MVC来开发系统。
struts更多的应用于视图,而把控制层交给Spring,而模型层用Hibernate做持久层。
与后台的数据库相分离。
框架有点像我们现实生活中的钢架构,比如说现在的厂房构建的时候都是用钢架构
去构建,先用钢铁架设出一个厂房的整体结构,然后我们再加上如玻璃钢这些东西
很快就能构建出一个厂房,而如果说按照原有的设计方式,就是建筑上来说,我们
要用一砖一瓦,水泥呀石灰呀 一点点做上去的话,很慢的,所以说架构的出现以及
框架的出现,无非就是方便我们开发,给我们主体部分相对来说已经固定死的早期
程序员给我们提供的一种优秀的程序来组成,然后剩余的部分由我们自己来设计,而
struts就是其中的一种
其官方站点:http://struts.apache.org/ 目前最新版本:struts2.0
首先看看MVC,下图
<servlet>
<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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
上面说明servlet的访问路径为 ***.do,只要是.do的程序它就导向action对象,而通过servlet对象可知这个action对象,它产生一个org.apache.struts.action.ActionServlet这样一个类对象,而这个对象产生后它所读取的配置文件是通过参数config指定也即为/WEB-INF/struts-config.xml,那么它就根据该文件中的描述来运行,现在我们再看看struts-config.xml文件!

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings />
<message-resources parameter="fengyan.struts.ApplicationResources" />
</struts-config>
<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中给我们产生了哪些东东

<struts-config>
<data-sources />
<form-beans >
<form-bean name="userForm" type="fengyan.struts.form.UserForm" />

</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="userForm"
input="/user.jsp"
name="userForm"
path="/user"
scope="request"
type="fengyan.struts.action.UserAction" />

</action-mappings>
<message-resources parameter="fengyan.struts.ApplicationResources" />
</struts-config>
说明:产生了一个userForm对象,它的类类型为fengyan.struts.form.UserForm,这个对象在action-mappings中会被调用,一般有请求路径为 /user的时候,将/user.jsp表单中的数据读取出来,读出来后写入到userForm属性中,而这个userForm就是刚刚定义的一个form-bean 那么userForm在接收到这些数据的时候就可以填充自己的属性了,这时我们来看看UserForm.java

package fengyan.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

<action-mappings >
<action
attribute="userForm"
input="/user.jsp"
name="userForm"
path="/user"
type="fengyan.struts.action.UserAction">
<forward
name="show"
path="/show.jsp"
redirect="true" />
</action>

</action-mappings>
step7: 现在回头写UserAction.java中的execute方法如下:

public ActionForward execute(ActionMapping mapping, ActionForm form,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'show.jsp' starting page</title>
</head>
<body>
<jsp:useBean id="userForm" class="fengyan.struts.form.UserForm" scope="session"/>

your userName is:<B><jsp:getProperty name="userForm" property="userName"/></B><BR>
here is tour password:<B><jsp:getProperty name="userForm" property="userPwd"/></B>
</body>
</html>
总算写完了,最后看下运行效果。





总结:整个模型运行流程为; 客户端的HTTP请求--> .do(控制器ActionServlet)-->struts-config.xml
然后将input中的数据填充给actionform,然后提交给action处理,根据需要action会和后台的
actionBean交互,(本例中是UserAction.java)最后action提交给jsp视图进行输出!

示例下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: