Struts2框架运行流程及案例

Struts2框架

Struts2由Struts1和WebWork两个经典的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 Filters、SiteMesh等),最后到FilterDispatcher。

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

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

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

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

(6)Action执行完毕后,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.jsp和loginSuccess.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>

【最后运行项目】

时间: 2024-09-28 18:45:17

Struts2框架运行流程及案例的相关文章

简单说struts2框架运行流程

(1)提交请求客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求.请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Other filter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到.注:核心控制器2.1.3版本之后,struts的filterDispatcher核心控制器变成了StrutsPrepareAndExecuteFilte被核心控制器控制到之后才会访问A

Struts2系统运行流程(2)

在上一篇中已经说过了Struts2的系统的基本原理(http://blog.csdn.net/xlgen157387/article/details/45840719),下边说一下Struts2的运行流程: 举个简单的案例,就是一个helloworld的案例,下边对其进行进行详细的解释. 案例基础内容: 我们在使用Struts2的时候会在web.xml文件中进行配置过滤器:编写一个Action类,这里起个名字叫做HelloWorldAction:在struts.xml中进行配置这个Action.

struts2 框架处理流程

struts2 框架处理流程 流程图如下: -->FilterDispatcher过滤器在2.1.3以后被StrutsPrepareAndExecuteFilter所替代,使得在执行Action之前可以添加过滤器了: -->客户端初始化一个指向servlet容器的request请求,请求经过一系列的过滤器,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action. 1)Struts2框架的大致处理流程: ①     浏览器发出请求,例如请求/log

图文解析Struts2框架执行流程

struts的架构图 (1)提交请求 客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求. 请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Other filter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到. 注:核心控制器2.1.3版本之后,struts的filterDispatcher核心控制器变成了StrutsPrepareAndExecuteFilte,如

struts2框架快速入门小案例

struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: apps: 例子程序 docs:文档 lib:struts2框架所应用的jar以及插件包 src:源代码 core 它是struts2的源代码 xwork-core struts2底层使用了xwork,xwork的源代码 注意:在struts2开发,一般情况下最少导入的jar包,去apps下的struts2-b

走进Struts2(一) — Struts2的运行流程及其工作原理

 Struts2是一套非常优秀的Web应用框架,实现优雅.功能强大.使用简洁.可以说是Struts2是一款非常成熟的MVC架构. 在我们学习Struts2时,最好是先学习它的运行流程.核心概念,从中得到启发,提升自己,而不仅仅是学习怎么怎么使用它. 在网上看到这样一句话: 你千万不要成为一个只会熟练使用框架的程序员,那样,你会疲于奔命,你也许永远只会使用 Hadoop ,而写不出一个 Hadoop ,你只是一个 Hadoop程序员,而不是一个分布式工程师. 你也许永远只会使用 Struts,而忘

Struts2框架执行流程详解

1. Struts2源码导入对于struts2框架它的源代码我们主要使用三部分 struts2核心部分源代码 org.apache.struts2xxsrc\core\src\main\java struts2的xwork核心部分源代码src\xwork-core\src\main\java\com\opensymphony\xwork2 struts2的插件的源代码src\plugins2. 关于struts.xml配置文件中提示问题第一步在eclipse的window下首选面中查找xml c

Struts2的运行流程及其工作原理

1 客户端初始化一个指向Servlet容器的请求 2 这个请求经过一系列的过滤器 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy  5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类  6 Ac

struts2的运行流程

流程: 1:url 提交到tomcat http://localhost/s2/firstAction 2:tomcat 根据工程名 去 webapps 文件夹下找到对应工程 3:找web.xml StrutsPrepareAndExecuteFilter 被执行,内部调用 struts.xml   4:从 struts.xml 找到了 name="firstAction" 的action元素(url中 跟此值匹配)      5:根据class 属性的值 反射 调用 execute