struts2 基本流程
一、配置过程
1.在web.xml中配置过滤器
<filter>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
<url-pattern>/*</url-pattern>
2.导入struts2框架包

3.在src目录下创建struts.xml(必须在src下创建)
文件开头(dtd文件版本跟导入的struts2的基本一致)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
4.在Preference中添加struts-2.3文件,并加入key值,key值为struts.xml文件开头“
-//Apache Software Foundation//DTD Struts Configuration 2.3//EN
”

二、struts2基本流程
1.请求
测试有命名空间的hello world:<br>
<a href="${pageContext.request.contextPath}/base/HelloWorldAction.action">有命名空间</a><br> 测试没有命名空间的hello world:<br>
<a href="${pageContext.request.contextPath }/HelloWorldAction.action">没有命名空间</a><br>
请求对应图

2.通过web.xml文件进行过滤,跳转至struts.xml配置文件中
3.struts.xml配置文件和action的代码为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <!-- 导入dtd文件 -->
<struts>
<!-- package
1.为包,能方便进行action管理
2.属性
name:
代表包的名称
主要用于继承
name的名称是唯一的
namespace:
命名空间
在客户端访问action时使用,也就是说在url中使用
如果没有命名空间
http://localhost:8080/struts2/a.action
http://localhost:8080/struts2/b.action
上面写的url没有模块的概念,但是如果有命名空间,就有模块的概念
如果namespace有值,则在result中,会把命名空间加入到响应的路径中,如果是重定向,那么就会重定向到该命名空间下的action
extends
配置文件中的继承
-->
<package name="helloworld" namespace="/base" extends="struts-default">
<action name="HelloWorldAction" class="com.struts2.action.HelloWorldAction">
<!--
result
struts2会根据result进行转发或者重定向
属性
name
为result名称
属性的值和action中execute方法的返回值一致
如果不写name属性,则会默认为name的值为success
type
代表返回方式
选择重定向还是转发,还可以重定向到action
如果type没有设定,则为默认值。这个默认值可以从struts-default.xml中得出结论
<result-type name="dispatcher"
class="org.apache.struts2.dispatcher.ServletDispatcherResult"
default="true"/>
-->
<result>success.jsp</result>
</action>
</package>
</struts>
package com.struts2.action;
import com.opensymphony.xwork2.Action;
public class HelloWorldAction implements Action {
public String execute() throws Exception {
System.out.println("Hello World");
return SUCCESS;
}
}
会寻找与请求对应的action,并在result中做出相对应的反馈,取得反馈的值后会经过两个struts2中的2个框架类进行转发(内部也是servlet),最后跳转到相应的页面
总流程为:

struts2 基本流程的更多相关文章
- Struts2学习第一天——struts2基本流程与配置
struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...
- Struts2 核心流程
1.Struts2架构图 这是Struts2官方站点提供的Struts 2 的整体结构. 执行流程图 2.Struts2部分类介绍 这部分从Struts2参考文档中翻译就可以了. ActionM ...
- 【跟我一步一步学Struts2】——Struts2工作流程
上一篇博客通过一个简单的小样例对struts2的流程有一个简单的了解,这篇博客继续. 当用户要登陆某一个站点.输入username,password,点击登陆就会触发以下一系列过程 : 1.请求过来之 ...
- Struts2 运行流程
Struts2运行流程 1.在web.xml中使用Struts的核心过滤器拦截所有请求. <filter> <filter-name>struts2</filter-na ...
- springmvc与struts2执行流程比较
之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以 及struts2与spring-mvc的差别. 1.stru ...
- struts2执行流程和架构图
一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:
- 8、Struts2 运行流程分析
1.流程分析: 请求发送给 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 ...
- struts2工作流程
struts2的框架结构图 工作流程 1.客户端请求一个HttpServletRequest的请求,如在浏览器中输入http://localhost: 8080/bookcode/Reg.action ...
- struts2视频学习笔记 09-10(struts2处理流程,指定多个struts配置文件)
课时9 Struts2的处理流程 StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url- ...
随机推荐
- 两段 PHP 代码比较优劣
// 代码一 public function getPCA($level = false) { $results = array(); $where = $level ? " where f ...
- 正则表达式REGEXP
正则表达式:REGular EXPression, REGEXP 元字符: .: 匹配任意单个字符 []: 匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 字符集合:[:digit ...
- 纸壳CMS3.0中的规则引擎,表达式计算
纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接 ...
- ASP.NET基于NPOI导出数据
using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...
- 基于SSH的客户关系管理系统CRM-JavaWeb项目-有源码
开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 项目的编译和运行:1 将数据库导入MysSql里 :打开HeidiSql这个图形化工具,新建一个数据库, 可 ...
- mysql 判断表字段或索引是否存在 - 举一反三
判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...
- Spark Streaming初步使用以及工作原理详解
在大数据的各种框架中,hadoop无疑是大数据的主流,但是随着电商企业的发展,hadoop只适用于一些离线数据的处理,无法应对一些实时数据的处理分析,我们需要一些实时计算框架来分析数据.因此出现了很多 ...
- “全栈2019”Java异常第十六章:Throwable详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”113篇Java基础学习资料及总结
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第九十章:内部类可以向上或向下转型吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...