现在很多企业都在用struts2,但是对于一些老的系统,我们还是要用struts1的,伤不起呀,请大家不要看不起学习struts1的,没办法,我们也是工作所需呀,再说现在还有几个不会struts2的,建议工作不需用到struts1的就直接跳过吧,找到一些大家不错的struts1系列文章供大家查阅:
http://www.blogjava.net/nokiaguy/category/37253.html
本文转载地址:http://blog.csdn.net/rxpcj1/article/details/5450223
1.开发struts应用程序的步骤
1.新建项目
2.引入jar包
3.准备视图文件
*创建jsp文件
*定义action的路径为 login.do(约定用*.do的形式,其它形式也可以)
*注意表单元素的名称(用户名:username ,密码:psw)
4.定义封装表单信息的formbean
*该FormBean 必须继承ActionForm,这是struts框架规定
*用于封装login.jsp页面表单数据(username,psw)
*该formbean的属性必须和页面中的form表单的属性名字相同
5.定义LoginAction
*该LoginAction必须继承Action
*穗宝Actin中的execute方法
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return null;
}
该方法有四个参数,
*第一个参数 ActionMapping
*第二个参数 ActionForm 页面表单的数据封装到ActionForm(LoginForm中)对象
*第三个参数 HttpServletRequest
*第四个参数 HttpServletResponse
6.定义配置文件web.xml
* <!--
配置struts的中央控制器ActionServlet,在目前的struts版本中,只能配置一个ActionServlet
只要客户端的请求格式为*.do,就会执行ActionServlet
-->
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- 当服务器启动的时候 ,加载Servlet,执行Servlet的init方法,数值越小,启动越早 -->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<!-- 执行所有的后缀名是*.do的请滶 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
7.定义struts的配置文件struts-config.xml,该文件是struts的核心配置文件
<action-mappings>
<!--
action="${pageContext.request.contextPath}/login.do"
path 表示客户端的请求路径,它代表代表代表action的唯一标识,path的值是请滶路径去悼.do
例如:login.do 去悼.do login在加上/ /login
name 属性指定FormBean的名字
scope formbean作用域
type 指定继承action的类所在的全路径
-->
<action path="/login" name="loginForm" scope="request"
type="cn.itcast.struts.action.LoginAction">
</action>
</action-mappings>
<!-- 配置formbean -->
<form-beans>
<!--
name formbean 的唯一标识
type formbean 所在的完整的类路径
-->
<form-bean name="loginForm" type="cn.itcast.struts.form.LoginForm"></form-bean>
</form-beans>
8 加载配置文件
修改步骤6
问题:
1.为什么ActionForm的属性名称必须和页面表单的name属性相同?LoginForm为什么要继承ActionForm
2.自动赋值的代码低层是怎么实现的?
3.struts中LoginAction为什么要继承Action
4.execute方法是谁调用的,该方法的参数是怎么传递过来的?
struts 运行流程
前提条件:当服务器启动时,调用ActionServlet init()方法进行初始化操作,在该方法中,加载struts-config.xml文件,
读取配置文件到内存中
1.在login.jsp页面,提交路径方式是login.do,此时提交给struts的中央控制器ActionServlet
2.ActionServlet 先解析路径为/login 在struts-config配置文件查找<action>标签中path="/login"根本配置文件
,找到了Action标签
3.在action标签中 根据name属性,ActionServlet在formbean中找到相应的<form-bean>标签,根据标签的
type属性,创建formbean实例,封装页面的信息到formbean中
4.在action标签中,ActionServlet根据type属性实例化Action对象LoginAction对象,自动调用Action的
execute方法,把request对象,response对象,在第三步中生成的formbean对象,都作为execute方法的参数
传递给该方法。