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 进行测试
分享到:
相关推荐
综上所述,Struts2.x相对于Struts1.x在多个方面进行了改进和优化,包括但不限于Action的实现方式、工作流程、数据绑定、视图技术以及验证机制,这些改进共同构成了Struts2.x相较于Struts1.x的优势,使其成为现代Web...
1. **MVC模式**:MVC是软件设计中的一个经典模式,Struts1.x实现了这一模式,将业务逻辑(Model)、用户界面(View)和控制流程(Controller)分离,提高了代码的可重用性和可维护性。Model处理数据,View负责显示,...
### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 ...通过以上内容的学习,学员将能够掌握 Struts1.x 的核心概念、工作原理及开发流程,进而能够独立开发基于 Struts1.x 的企业级 Web 应用程序。
通过这个简单的Struts1.x登录示例,你可以了解Struts1.x的MVC工作流程、配置文件的编写以及Action和ActionForm的使用。然而,需要注意的是,Struts1.x已经较为过时,现代的Web开发更多地转向了Spring MVC、Play ...
【Struts1.x入门教程】 Struts1.x是Apache Jakarta项目的一个重要组成部分,它是一个用于构建企业级Web应用程序的开源MVC框架。该框架的主要目标是简化JavaServer Pages(JSP)、Servlet和标签库的使用,同时提升...
**Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...
这样,Struts1.x处理用户界面和业务流程,而Hibernate则专注于数据存储,两者结合提供了灵活且高效的开发解决方案。 **常见应用场景:** 这两个框架常用于构建企业级Web应用,如电商平台、CRM系统、内容管理系统等...
Struts1.x、Hibernate 和 MySQL 是构建Web应用程序的三个关键组件,它们在电子商务系统中扮演着重要的角色。这里我们将深入探讨这些技术以及如何在在线购物车系统中整合它们。 **Struts1.x** 是一个开源的Java框架...
Struts1.x是Apache软件基金会旗下Jakarta项目的一个核心组件,它是一款开源的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。这个框架在2000年代初非常流行,因其规范化的开发流程和强大的功能...
Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts1.x中,JDBC(Java Database Connectivity)是常用于与数据库交互的技术,它允许开发者通过Java代码来执行SQL语句,...
Struts 1.x 是Apache软件基金会Jakarta项目的一部分,是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架。它使用Java Servlet和JavaServer Pages技术实现,旨在简化基于Java EE的Web应用程序的开发。 本教程...
Struts1.x是Apache软件基金会开发的一个开源框架,主要用于构建基于Java的企业级Web应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理业务逻辑、视图展示...
这个例子虽然简单,但涵盖了 Struts 1.x 开发的基本流程,包括环境搭建、ActionForm 和 Action 类的编写以及配置文件的设置。接下来,你可以继续探索更多关于 Struts 的高级特性,如拦截器、国际化支持等,以进一步...
Struts1.x是Apache软件基金会的开源项目,主要负责处理HTTP请求,管理业务逻辑和控制流程。它通过ActionForm来封装用户请求的数据,Action类处理这些数据并调用服务层方法,最后通过Result(ActionForward)决定...
Struts1.x标签库是Apache Jakarta Struts框架的一部分,它为开发Java Web应用程序提供了一组丰富的标签,使得开发者能够更方便地处理常见的Web界面任务。这些标签被组织成五个主要的标签库,分别是Bean Tags、...
Struts1.x、Spring和Hibernate是Java Web开发中经典的“SSH”组合,它们分别是MVC框架、依赖注入框架和持久层框架。这个"Struts1.x+Spring+Hibernate开发实例"是一个综合性的学习资料,旨在帮助开发者理解如何将这三...
**Struts 1.x 框架详解** `Struts 1.x` 是 Apache 软件基金会(ASF)下的一个开源项目,是 Java Servlet 和 JavaServer Pages(JSP)平台上的一个MVC(Model-View-Controller)框架,主要用于构建企业级Web应用程序...
《Struts2.0中文帮助手册.chm》将详细介绍Struts2的API、配置和使用技巧,而《Struts1.2.pdf》则可能包含了Struts1.x的框架原理、开发流程以及案例分析。通过学习这两本书,开发者可以深入理解这两个版本的Struts...
虽然在现代开发中,Struts1.x已经逐渐被Spring MVC等更现代的框架取代,但了解和理解其验证框架仍然有助于理解Web开发中的验证逻辑和流程。通过上述内容,你可以对Struts1.x的验证框架有一个基本的认识,并能着手...
Struts1.x的核心是MVC模式,它将业务逻辑(Model)、用户界面(View)和控制流程(Controller)分离,使得开发者可以独立地处理各个部分,提高了代码的可复用性和可维护性。在Struts1.x中,Action类扮演Controller的...