关键词:
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>
【最后运行项目】
第一个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... 查看详情