返回顶部
首页 > 资讯 > 精选 >Java中Struts2处理流程是怎样的
  • 174
分享到

Java中Struts2处理流程是怎样的

2023-06-17 13:06:05 174人浏览 八月长安
摘要

本篇内容介绍了“Java中Struts2处理流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!看看Struts-2的处理流程:1)

本篇内容介绍了“Java中Struts2处理流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

看看Struts-2的处理流程:

1) Browser产生一个请求并提交框架来处理:根据配置决定使用哪些拦截器、action类和结果等。

2) 请求经过一系列拦截器:根据请求的级别不同拦截器做不同的处理。这和Struts-1的RequestProcessor类很相似。

3) 调用Action: 产生一个新的action实例,调用业务逻辑方法。

4) 调用产生结果:匹配result class并调用产生实例。

5) 请求再次经过一系列拦截器返回:过程也可配置减少拦截器数量

6) 请求返回用户:从control返回servlet,生成html

这里很明显的一点是不存在FORMBean的作用域封装,直接可以从Action中取得数据。 这里有一个Strut-2配置的WEB.xml文件:

<filter>     <filter-name>   controller   </filter-name>            <filter-class>   org.apache.struts.action2.dispatcher.FilterDispatcher    </filter-class>     </filter>     <filter-mapping>             <filter-name>   cotroller   </filter-name>             <url-pattern>   /*   </url-pattern>     </filter-mapping>

注意到以往的servlet变成了filter,ActionServlet变成了FilterDispatcher,*.do变成了/*。filter配置定义了名称(供关联)和filter的类。filter mapping让URI匹配成功的的请求调用该filter。默认情况下,扩展名为 ".action "。这个是在default.properties文件里的 "struts.action.extension "属性定义的。

default.properties是属性定义文件,通过在项目classpath路径中包含一个名为“struts.properties”的文件来设置不同的属性值。而Struts-2的默认配置文件名为struts.xml。由于1和2的action扩展名分别为.do和.action,所以很方便能共存。我们再来看一个Struts-2的action代码:

public class MyAction {  public String execute() throws Exception {  //do the work    return "success ";  }  }

很明显的区别是不用再继承任何类和接口,返回的只是一个String,无参数。实际上在Struts-2中任何返回String的无参数方法都可以通过配置来调用action。所有的参数从哪里来获得呢?答案就是Inversion of Control技术(控制反转)。笔者尽量以最通俗的方式来解释,我们先试图让这个Action获得reuqest对象,这样可以提取页面提交的任何参数。那么我们把request设为一个成员变量,然后需要一个对它的set方法。由于大部分的action都需要这么做,我们把这个set方法作为接口来实现。

public interface ServletRequestAware {  public void setServletRequest(httpservletRequest request);  }  public class MyAction implements ServletRequestAware {  private HttpServletRequest request;  public void setServletRequest(HttpServletRequest request) {  this.request = request;  }  public String execute() throws Exception {  // do the work directly using the request  return Action.SUCCESS;  }  }

那么谁来调用这个set方法呢?也就是说谁来控制这个action的行为,以往我们都是自己在适当的地方写上一句action.setServletRequest(&hellip;),也就是控制权在程序员这边。然而控制反转的思想是在哪里调用交给正在运行的容器来决定,只要利用Java反射机制来获得Method对象然后调用它的invoke方法传入参数就能做到,这样控制权就从程序员这边转移到了容器那边。程序员可以减轻很多繁琐的工作更多的关注业务逻辑。Request可以这样注入到action中,其他任何对象也都可以。为了保证action的成员变量线程安全,Struts-2的action不是单例的,每一个新的请求都会产生一个新的action实例。

那么有人会问,到底谁来做这个对象的注入工作呢?答案就是拦截器。拦截器又是什么东西?笔者再来尽量通俗的解释拦截器的概念。大家要理解拦截器的话,首先一定要理解GoF23种设计模式中的Proxy模式。

A对象要调用f(),它希望代理给B来做,那么B就要获得A对象的引用,然后在B的f()中通过A对象引用调用A对象的f()方法,最终达到A的f()被调用的目的。有没有人会觉得这样很麻烦,为什么明明只要A.f()就可以完成的一定要封装到B的f()方法中去?有哪些好处呢?

1) 这里我们只有一个A,当我们有很多个A的时候,只需要监视B一个对象的f()方法就可以从全局上控制所有被调用的f()方法。

2) 另外,既然代理人B能获得A对象的引用,那么B可以决定在真正调A对象的f()方法之前可以做哪些前置工作,调完返回前可有做哪些后置工作。

讲到这里,大家看出来一点拦截器的概念了么?它拦截下一调f()方法的请求,然后统一的做处理(处理每个的方式还可以不同,解析A对象就可以辨别),处理完毕再放行。这样像不像对流动的河水横切了一刀,对所有想通过的水分子进行搜身,然后再放行?这也就是aop(Aspect of Programming面向切面编程)的思想。

Anyway,Struts-2只是利用了AOP和ioc技术来减轻action和框架的耦合关系,力图到***程度重用action的目的。在这样的技术促动下,Struts-2的action成了一个简单被框架使用的POJO(Plain Old Java Object)罢了。实事上AOP和IoC的思想已经遍布新出来的每一个框架上,他们并不是多么新的技术,利用的也都是jdk早已可以最到的事情,它们代表的是更加面向接口编程,提高重用,增加扩展性的一种思想。

“Java中Struts2处理流程是怎样的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java中Struts2处理流程是怎样的

本文链接: https://lsjlt.com/news/289414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中Struts2处理流程是怎样的
    本篇内容介绍了“Java中Struts2处理流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!看看Struts-2的处理流程:1) ...
    99+
    2023-06-17
  • struts2框架的处理流程是什么
    Struts2框架的处理流程如下:1. 客户端发送请求到服务器。2. 服务器接收到请求后,根据web.xml中的配置找到Struts...
    99+
    2023-09-25
    struts2
  • ApacheBeam中的数据处理流程是怎样的
    Apache Beam 是一个分布式数据处理框架,它可以处理批处理和流处理任务。数据处理流程通常包括以下步骤: 创建一个 Pip...
    99+
    2024-03-06
    ApacheBeam
  • Nginx请求处理流程是怎样的
    这篇文章主要介绍“Nginx请求处理流程是怎样的”,在日常操作中,相信很多人在Nginx请求处理流程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx请求处理流程是怎样的”的疑惑有所帮助!接下来...
    99+
    2023-06-04
  • 从Linux5.9看Icmp的处理流程是怎样的
    本篇文章给大家分享的是有关从Linux5.9看Icmp的处理流程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。发送icmp包的流程下面以udp为例看看什么时候会发送de...
    99+
    2023-06-15
  • SpringBoot的异常处理流程是什么样的?
    目录一、默认异常处理机制二、异常处理流程三、默认的异常处理机制四、自定义异常处理一、默认异常处理机制 默认情况下,SpringBoot 提供 /error 请求,来处理所有异常的。 ...
    99+
    2024-04-02
  • Java 图解Spring启动时的后置处理器工作流程是怎样的
    探究Spring的后置处理器 本次我们主要探究invokeBeanFactoryPostProcessors();后面的代码下次再做解析; 入口代码refresh() Annot...
    99+
    2024-04-02
  • Struts2中的异常处理机制是什么
    这期内容当中小编将会给大家带来有关Struts2中的异常处理机制是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。声明式异常捕捉Struts2的异常处理机制是通过在struts.xml文件中配置<...
    99+
    2023-05-31
    struts2 st 异常处
  • java程序linux发布流程是怎么样的
    这期内容当中小编将会给大家带来有关java程序linux发布流程是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java程序发布到linux其实非常简单,但第一次发布,走了不少弯路,故在此记录一下...
    99+
    2023-06-06
  • Shuffle流程是怎样的
    本篇内容介绍了“Shuffle流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在MapReduce框架中,shuffle是连接Ma...
    99+
    2023-06-04
  • 怎样处理Java程序中的内存漏洞
    本篇文章为大家展示了怎样处理Java程序中的内存漏洞,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 Java 程序中也有内存漏洞?当然有。与流行的观念相反,在 Java 编程中,内存管理仍然是需要考...
    99+
    2023-06-03
  • HDFS中读写流程是怎么样的
    这篇文章给大家分享的是有关HDFS中读写流程是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。文件读流程也包含该列表各block的分布在Datanode地址的列表当然读操作对于Client端是透明的,感觉就...
    99+
    2023-06-02
  • Java实现学生信息管理系统的流程是怎样的
    这篇文章给大家介绍Java实现学生信息管理系统的流程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、项目简述功能包括: 用户的登录注册,学生信息管理,教师信息管理,班级信 息管理,采用mvcx项目架构,覆盖增...
    99+
    2023-06-25
  • Java阻塞的处理方式是怎样的
    这篇文章主要介绍了Java阻塞的处理方式是怎样的的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java阻塞的处理方式是怎样的文章都会有所收获,下面我们一起来看看吧。在Java1.4以前,Java的网络编程是只有...
    99+
    2023-06-17
  • Linux内核处理中断的过程是怎样的
    Linux内核处理中断的过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。中断是现代 CPU 工作方式中重要的部分。例如:当你每次在键盘上按下一个按键后,CPU 会...
    99+
    2023-06-28
  • 大数据流处理中Flume、Kafka和NiFi的对比是怎样的
    今天就跟大家聊聊有关大数据流处理中Flume、Kafka和NiFi的对比是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们将简要介绍三种Apache处理工具:Flume、Ka...
    99+
    2023-06-02
  • J2EE中的struts2表单细节处理
    /struts-tags中自带了很多标签比如一个简单的登录表单,其中自带了很多的样式,实际上如果你不需要用到struts的实际功能的时候不建议使用   <s:form action="user_save"> <s...
    99+
    2023-05-31
    j2ee struts2 表单
  • Java 实战中精品养老院管理系统的实现流程是怎样的
    这期内容当中小编将会给大家带来有关Java 实战中精品养老院管理系统的实现流程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、项目简述本系统功能包括:通知公告,老人管理,护工管理,问答管理等等功...
    99+
    2023-06-25
  • 基于struts2开发的试题库管理系统是怎样的
    这篇文章将为大家详细讲解有关基于struts2开发的试题库管理系统是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、研究的现状、意义(包括选题背景、意义、国内外研究现状等)1.1 国...
    99+
    2023-06-02
  • MySQL中SQL执行流程是怎么样的
    这篇文章主要介绍MySQL中SQL执行流程是怎么样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MYSQL体系结构先看一张架构图,如下:模块详解Connector:用来支持各种语言...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作