`
麦田1990
  • 浏览: 72936 次
文章分类
社区版块
存档分类
最新评论

struts1.X工作流程

 
阅读更多

struts1的工作流程

1. 读取配置(容器启动时一次性加载)

容器读取web.xml,自动加载设置为自动启动的ActionServlet; 读取struts-config.xml配置信息

2.发送请求

客户端发送http请求,容器收到后通过web.xml上的URL通配符(一般是*.do)找到ActionServlet;

3.填充数据

ActionServlet(Action配置path,唯一标识)从ActionConfig对象查找Action类,如果没有找到则转发给JSP或静态页面,如果有找到Action类和对应ActionForm类(Action配置name,FormBeanConfig对象中查找),实例化(Action配置或ActionForm配置type,反射);

ActionForm被实例化并用HTTP请求的数据填充其属性,并将其保存在指定域(Action配置scope)中,ServletContext、session、request;

4.派发请求

ActionServlet将请求和相应FormBean传给Action的excute()方法使用。

5.处理业务

执行相应的业务逻辑,将结果放入请求,返回ActionForward对象;

6.返回响应

ActionServlet根据ActionForward对象在ForwardConfig对象 (name)查找对应的跳转(JSP或者Action);

7.响应客户

ActionServlet将请求(参数和属性)带入下一个JSP或者Action,如果是Action将重复2.发送请求(属性可带);如果是JSP,容器会将JSP生成结果为html,然后响应给客户端;

说明:

如果Action配置里面没有name属性,将不会初始化ActionForm,Action内无法使用
html:form对应到表单上的属性,名称不一致会报错


下面使用struts1模拟一个用户登录


1创建ActionForm

package com.itmyhome.form;

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm {
	private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}
然后在struts-config.xml文件中进行注册:

<form-beans>
		<form-bean name="loginForm" type="com.itmyhome.form.LoginForm" />
	</form-beans>

2创建Action

package com.itmyhome.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.itmyhome.form.LoginForm;

public class LoginAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)throws Exception {
		
		LoginForm loginForm = (LoginForm) form;
		if ("zhangsan".equals(loginForm.getUsername())
				& "123".equals(loginForm.getPassword())) {
			return mapping.findForward("success");
		} else {
			return mapping.findForward("error");
		}
	}
}
Action类也要在struts-config.xml文件中注册

<action path="/login" type="com.itmyhome.action.LoginAction"
			name="loginForm">
			<forward name="success" path="/success.jsp" />
			<forward name="error" path="/error.jsp" />
		</action>

3在struts-config.xml上注册对应的Action配置和ActionForm配置

<?xml version="1.0" encoding="utf-8" ?>

<!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>
	<form-beans>
		<form-bean name="loginForm" type="com.itmyhome.form.LoginForm" />
	</form-beans>
	<action-mappings>
		<!-- 属性name名字接收form-bean中的参数 -->
		<action path="/login" type="com.itmyhome.action.LoginAction" name="loginForm">
			<forward name="success" path="/success.jsp" />
			<forward name="error" path="/error.jsp" />
		</action>
	</action-mappings>
</struts-config>


4 配置web.xml

<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>
	</servlet>
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

初始化参数用来对Servlet的运行时环境进行初始配置。<servlet>的<init-param>子元素用于配置Servlet初始化参数

config以相对路径的方式指明struts应用程序的配置文件的位置,如不设置,则默认为/WEB-INF/struts-config.xml

如果在src下则配置为<param-value>/struts-config.xml</param-value>

5创建jsp页面

login.jsp

<form action="login.do" method="post">
    	USERNAME:<input type="text" name="username" /></br>
   	    PASSWORD: <input type="password" name="password" /></br>
    	<input type="submit" value="LOGIN">
    </form>

success.jsp error.jsp分别写入success login error login 进行测试


分享到:
评论

相关推荐

    Struts1.x-Hibernate,曾删改查

    Struts1.x-Hibernate,曾删改查,

    Struts1.x+Spring+Hibernate开发实例

    这是Struts1.x+Spring+Hibernate开发实例,只要配置一下数据库就可以运行

    Struts2的工作机制分析及实例.doc

    本章讲述Struts2的工作原理 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验...虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同

    用struts1.x 开发的简易计算器

    此示例用Meclipse6.5开发,展示了struts的基本开发流程,利用了struts的数据类型自动转换器,项目发布好,直接访问index.jsp即可.

    Struts-_1.2.x_请求处理流程图

    Struts请求处理流程图,详细的说明了Struts从数据提交到结束的过程

    struts2源代码分析

    读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地...虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。

    Struts2入门教程(全新完整版)

    10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7....

    Java求职面试宝典各大公司常考知识点

    4.1. Struts1.x工作机制? 7 4.2. 为什么要用Struts1.x 8 4.3. Struts1.x的validate框架是如何验证的? 8 4.4. 说下Struts的设计模式 8 4.5. 谈谈你mvc的理解 8 4.6. struts1.2和struts2.0的区别?如何控制两种框架...

    struts框架原理简介

    关于struts1.x主要工作流程的简单介绍,供学习java技术以及sturts框架的同志们交流学习。能力有限,不足之处与其他见解请评论简单提出,以便技术交流,互相学习。

    Java 面试宝典

    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................

    J2EE学习笔记(J2ee初学者必备手册)

    二、Struts的工作流程......................284 三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六...

    Java/JavaEE 学习笔记

    二、Struts的工作流程......................284 三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六...

    实验室预约管理系统(ssh+jsp+mysql5.x)含运行截图

    该系统致力于简化实验室的预约流程,提高实验室的使用效率,并为实验室设备和资源的管理提供便捷的解决方案。系统后端采用SSH框架组合,即Struts2、Spring和Hibernate。前端页面通过JSP(JavaServer Pages)技术实现...

    实验室管理系统(ssh+jsp+mysql5.x)含运行截图

    实验室管理系统(SSH+JSP+MySQL5.x) 是一款专门为教育机构设计的实验室资源管理软件,旨在优化和简化实验室的预约、设备管理、资源调配以及维护跟踪等日常运作流程。该系统针对实验室管理的独特需求,提供了实验室...

    宿舍管理系统(ssh+jsp+mysql5.x)含文档

    此系统致力于提高宿舍管理的透明度与效率,确保学生住宿安全,同时也方便管理人员的工作。宿舍管理系统的主要功能包括:学生入住登记、宿舍自动分配、更换宿舍申报处理、宿舍安全检查、违规记录管理以及相关报告的...

    JAVA学习的参考学习流程

    06 开源框架 Struts 1.x --&gt; AJAX --&gt; ECSide报表组件 --&gt; Hibernate --&gt; Spring --&gt; Struts 2.0 --&gt; AJAX框架(DWR、JSON、JQuery) 07 XML 基础语法 --&gt; 解析(DOM/SAX/JDOM) 08 分布式开发 RMI --&gt; EJB 3.0 --&gt; ...

    进销存信息管理系统毕业设计论文

    2.2.2 Struts1.x框架的体系结构 7 2.3 Hibernate框架 8 2.3.1 ORM技术的概述 8 2.3.2 Hibernate框架的概述 9 2.3.3 Hibernate的体系结构 9 2.4 Spring框架 11 2.4.1 Spring框架的概述 11 2.4.2 Spring框架的核心机制...

Global site tag (gtag.js) - Google Analytics