Struts框架执行流程

2024-08-26 16:38
文章标签 流程 框架 执行 struts

本文主要是介绍Struts框架执行流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  上篇博客Struts2,Hibernate,Spring 环境配置,介绍了三个框架各自的初始化配置,那么单独的Struts框架是如何运行的,通过一个例子分析一下整个流程。

在已经配置好环境的基础上。


一.创建工程

1.创建action,直接执行方法返回页面

package com.dynamic.oa.test;
import com.opensymphony.xwork2.ActionSupport;
public class ActionTest extends ActionSupport {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;}
//返回input页面public String input() throws Exception{return "input";}//返回success页面public String success() throws Exception{return "success";}}


2.根据Struts-2.0.dtd中的内容配置,并结合业务配置Struts.xml

从Struts的核心开发包中,src\core\src\main\resources目录下找到dtd文件,该文件介绍了整个Struts.xml的配置格式。

	<package name="default" namespace="/" extends="struts-default"><action name="actionTest_*" class="com.dynamic.oa.test.ActionTest" method="{1}"><result name="input">WEB-INF/jsp/input.jsp</result><result name="success">WEB-INF/jsp/success.jsp</result></action></package>


3.在WEB-INF,创建jsp文件夹,并创建2个jsp页面

  将jsp页面放到WEB-INF下,这样客户端直接请求jsp页面是访问不到的。必须通过action请求来访问。

input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<body><form action="actionTest_success.action">username:<input name="username" type="text"> <br>password:<input name="password" type="text"> <br><input type="submit" value="submit"></form>
</body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><body>username:${requestScope.username}<br>
password:${requestScope.password}</body>
</html>

二.执行流程




三.分析:

  1.当客户端发出请求后,所有的请求都会通过web.xml,通过StrutsPrepareAndExecuteFilter过滤器被Struts管辖。该过滤器处理Struts调度过程的准备和执行阶段.prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。


  2.找到对应的action,上面的代码使用了通配符映射的方式

    在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。
  当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action: 

		<action name="actionTest_*" class="com.dynamic.oa.test.ActionTest" method="{1}"><result name="input">WEB-INF/jsp/input.jsp</result><result name="success">WEB-INF/jsp/success.jsp</result></action>
    如上,<action name=”actionTest_*”>定义一系列请求URL是actionTest_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为actionTest_input.action时,将调用到ActionTest类的input方法;用户请求URL为actionTest_success.action时,将调用到ActionTest类的success方法。


 3.在ActionTest中执行方法后,返回字符串,该字符串配置Struts.xml文件中<action>元素下的<result>元素的name属性的值,并转到对应的jsp页面。


四.总结

  通过一个简单的例子,从流程上分析了Struts框架的基本执行过程,有了这个了解,再分析源码的执行流程。




这篇关于Struts框架执行流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1109105

相关文章

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

MySQL中SQL的执行顺序详解

《MySQL中SQL的执行顺序详解》:本文主要介绍MySQL中SQL的执行顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql中SQL的执行顺序SQL执行顺序MySQL的执行顺序SELECT语句定义SELECT语句执行顺序总结MySQL中SQL的执行顺序

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1