struts2框架运行流程及案例

     2022-03-20     399

关键词:

Struts2框架

Struts2Struts1WebWork两个经典的MVC框架发展起来,是一个非常优秀的MVC框架。Struts2中的execute()方法不再与servlet API耦合,因而更容易测试。Struts2支持更多的视图技术,提供了基于AOP思想的拦截机制,以及更强大更容易使用的校验功能和ajax支持。

所有的Web项目都是基于请求/响应模式而建立的。在web.xml中配置Struts的核心Filter就能将Web的流程转入到Struts框架内。

Struts2的运行流程图:

技术分享

 

 

1)客户端初始化一个指向Servlet容器(例如Tomcat)的请求 (客户端提交一个HttpServletRequest请求。)

2)请求被提交到一系列的过滤器(Filter)。

如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter FiltersSiteMesh等),最后到FilterDispatcher

FilterDispatcher是控制器的核心,就是MVCStruts 2实现中控制层(Controller)的核心。

3FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个ActionFilterDispatcher则把请求的处理交给ActionProxy

4)  ActionProxy通过Configuration Managerstruts.xml)询问框架的配置文件,找到需要调用的Action类。

5ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

6Action执行完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result

下面是Struts2的一个简单的实例

起始页面为一个登陆页面,登陆成功后跳转至登陆成功页面,否则登录页面提示错误信息。

1、创建项目导入相应的架包】

2、修改web.xml文件,添加过滤器】

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

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- 配置项目运行时跳转的厨师页面 -->

    <welcome-file-list>

     <welcome-file>login.jsp</welcome-file>

    </welcome-file-list>

    <!-- 配置Struts 2核心过滤器 -->

    <filter>

        <filter-name>struts2</filter-name>

         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>   

</web-app>

3、建立Action类】

action类中默认的execute()方法中,对用户名和密码进行验证

    {

return userName;

    }

 

    public void setUserName(String userName)

    {

this.userName = userName;

    }

 

    public String getPassWord()

    {

return passWord;

    }

 

    public void setPassWord(String passWord)

    {

this.passWord = passWord;

    }

 

    @Override

    public String execute() throws Exception

    {

// TODO Auto-generated method stub

// 定义返回值变量

String strResult = INPUT;

// 业务逻辑判断

if (passWord.equals("123") && userName.equals("abc"))

{

    strResult = SUCCESS;

}

else

{

    ActionContext.getContext().getSession().put("tip", "登陆失败");

}

 

return strResult;

    }

}

4、建立前台jsp页面,login.jsploginSuccess.jsp Struts2的标签库】

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>用户登陆页面</title>

</head>

<body>

<center style="background-color: aqua;">

${tip }

<s:form action="login.action" method="post">

<s:textfield name="userName" label="用户名"></s:textfield>

<s:password name="passWord" label="密码"></s:password>

<s:submit value="登陆"></s:submit>

</s:form>

</center>

</body>

</html>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>登陆成功页面</title>

</head>

<body>

<center style="background-color: aqua;">

<span>登陆成功</span>

</center>

</body>

</html>

4、添加struts文件并对其进行配置】

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

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<!-- 设置 struts web解码方式-->

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

 

<package name="myPackage" extends="struts-default">

<!-- 定义登陆的action -->

<action name="login" class="wyl.action.UserAction">

<result>loginSuccess.jsp</result><!-- 默认跳转的页面 -->

<result name="input">login.jsp</result>

</action>

</package>

</struts>

6、修改web.xml把起始页修改为login.jsp

<!-- 配置项目运行时跳转的厨师页面 -->

    <welcome-file-list>

     <welcome-file>login.jsp</welcome-file>

</welcome-file-list>

【最后运行项目】

第一个struts案例及分析

...为框架已经实现了一些功能,这样就可以提高开发效率!Struts2=struts1 + xwork  (struts是基于MVC模式的框架)struts2预先实现的功能:  1、请求数据自动封装  2、文件的上传  3、国际化功能的简化  4、数据效验 ... 查看详情

简单说struts2框架运行流程

(1)提交请求客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求。请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Otherfilter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到。注:核心控制器2.1.3版本... 查看详情

struts2框架学习

一、struts2框架概念    Struts2框架是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去... 查看详情

基础的爬虫框架及运行流程

         爬虫框架的基础和运行流程  基本的框架流程基础爬虫框架主要包括五大模块、分别为爬虫调度器、URL管理器、HTML下载器、HTML解析器、数据存储器。功能分析如下:爬虫调度器主... 查看详情

关于ideamaven工程创建struts2入门配置及案例

1.在maven工程下添加需要导入的jar包节点<dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.24</version>< 查看详情

struts2系统架构及处理流程

一、struts2系统架构· 1.FilterDispatcher是整个Struts2的调度中心,也就是MVC中的C(控制中心),根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还... 查看详情

dubbo架构设计及入门案例(代码片段)

框架介绍1.1.1概述Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力... 查看详情

struts2框架处理流程

struts2框架处理流程流程图如下:-->FilterDispatcher过滤器在2.1.3以后被StrutsPrepareAndExecuteFilter所替代,使得在执行Action之前可以添加过滤器了;-->客户端初始化一个指向servlet容器的request请求,请求经过一系列的过滤器,FilterDisp... 查看详情

struts2框架的大致流程

...FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。Struts2的拦截器链自动对请求应用通用功能,如数据校验和文件上传等功能。 回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。既可以是将数据 查看详情

struts2springhibernate三大框架的执行流程以及原理

转:http://www.cnblogs.com/System-out-println/p/5974113.htmlStruts2框架一、简介Struts2是一个相当强大的JavaWeb开源框架,是一个基于POJO的Action的MVCWeb框架。它基于当年的WebWork和XWork框架,继承其优点,同时做了相当的改进。1、Struts2基于MVC架构... 查看详情

struts2源码阅读_struts2框架流程概述

1.Struts2架构图 当外部的httpservletrequest到来时 ,初始到了servlet容器(所以虽然Servlet和Action是解耦合的,但是Action依旧能够通过httpservletrequest取得请求参数),然后通过Filterchain,Filter主要包括ActionContextCleanUp,它主要清理... 查看详情

struts2第一个入门小案例

Struts2框架预先实现了一些功能   1:请求数据自动封装   2:文件上传的功能   3:对国际化功能的简化   4:数据校验的功能第一:首先需要说明的是Struts就是基于MVC模式的框架!(struts... 查看详情

struts2入门案例

Struts2是常用的web层框架,jar包下载路径开发包目录结构介绍在web工程中引入struts2的开发包如何在web。xml中配置struts2的核心过滤器<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter 查看详情

struts2框架

 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。  2,Struts2框架的流程原理1)请求先到达Filter中央控制器2)然... 查看详情

struts2的执行流程

Struts2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑... 查看详情

Struts2 传递变量案例

】Struts2传递变量案例【英文标题】:Struts2passingvariablescase【发布时间】:2015-03-1118:25:25【问题描述】:我正在使用Datatables服务器端ajax分页,需要将一些变量传递给服务器。我的服务器正在运行Struts2操作来处理这个数据表请求... 查看详情

图文解析struts2框架执行流程

 struts的架构图(1)提交请求客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求。请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Otherfilter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到。注:核... 查看详情

struts2安装及简单应用示例

Struts2(MVC框架)以WebWork为核心,采用拦截器(filter)的机制来处理用户的请求官网下载压缩包解压:  apps文件:Struts2的示例应用  docs文件:struts2的相关文档  lib文件:struts2的核心库以及第三方插件类库 &n... 查看详情