struts2 工作原理:
一个请求在Struts 2框架中的处理大概分为三个步骤
第一:客户端提交一个(HttpServletRequest)请求
如在浏览器里面输入 http://localhost:8080/reg.jsp就是提交给一个
(HttpServletRequest)请求
请求被提交到一系列的过滤器里面(Filter),如(ActionContextCleanUp,其他过滤器,
FilterDispather)。注意这是有先后顺序的。
FilterDispather是控制器的核心,就是MVC的Struts
第二 :实现中控制器的核心。
FilterDispatcher 询问ActionMapper是否需要调用某个Action来处理HttpServletRequest请求
,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交给ActionProxy。
ActionProxy通过Configuration Manager(struts.xml)询问配置文件,找到需要调用的Action
类。比如注册 UserReg 类。
第三: ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,
在调用之前,ActionInvocation会根据配置加载Action相关的所有拦截器(Interceptor)
,一旦Action调用完毕,ActionInvocation负责根据struts.xml中的配置找到相应的result视图,返回结
果。
struts 2 的核心控制器是FilterDispatcher,有三个重要的方法:destroy(),doFilter(),init();
-----小技巧----打开记事本 CMD--notep
------reg.jsp-----------------------------------------------------------------------------------------------------------------
<body>
<form action="user.action" method="post">
<input type="text" name="username"/><br/>
<input type="text" name="password"/><br/>
<input type="submit" name="save"/>
</form>
</body>
------success.jsp----------------------------------------------------------------------------------------------------------
<body>
username= ${username};
password= ${password};
</body>
------com.panhe.cn.HelloWorldAction---------------------------------------------------------------------------------
package com.panhe.cn;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWordAction extends ActionSupport{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
System.out.println(username);
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
System.out.println(password);
this.password = password;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
------struts.xml------------------------------------------------------------------------------------------------------------
<?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">
<!--struts2 总共有四类配置文件
struts.properties : 定义框架自身的全局变量
strurs.default.xml: 定义框架自身的使用的action映射以及result定义
struts-plugin.xml : struts插件使用的配置文件,比如当使用strtus和spring结合的时候就需要
在 web.xml 中引用该配置文件。
strtus.xml 定义应用自身使用的action映射以及result定义;当我们一般将应用的各个模块分到不同的配置文件里面 :
struts.properies定义的全局属性也可以在strtus.xml文件中定义
-->
<!-- 四个配置文件的执行顺序
strurs.default.xml struts-plugin.xml strtus.xml struts.properties web.xml
-->
<struts>
<!--必须是.action结尾的才能被Struts2框架管理 -->
<!--动态方法的调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!--设置开发模式 -->
<constant name="struts.devMode" value="false" />
<!--
name 表示模版名称 namespace 表示空间名称,URL后面要自带的 extends
struts是必须继承这个文件,因为里面会有很多定义的拦截器的
-->
<package name="user" namespace="/" extends="struts-default">
<!--name 的名字 class是我要关联的类
method 最默认值execute方法
result 默认值是success试图
-->
<action name="user" class="com.panhe.cn.HelloWordAction"
method="execute">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
------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/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--配置文件 Strtus2.0过滤器-->
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
-----------------------------------------------------------------------------------------------------------------------
分享到:
相关推荐
首先,我们需要理解Struts2.0的核心组件和工作原理。Struts2.0框架由Action、Result、Interceptor等关键部分组成。Action是业务逻辑的载体,它处理来自用户的请求;Result则是展示结果的方式,可以是JSP、FreeMarker...
通过以上步骤,你将能够掌握Struts2的基础配置和SiteMesh的使用,这对于进一步学习Struts2的高级特性,如拦截器、结果类型、动态方法调用等,以及理解MVC模式在实际项目中的应用具有重要意义。不断地实践和探索,你...
通过这个"struts-helloworld"例子,开发者能够了解到Struts的基本工作流程,包括Action的编写、配置文件的设置以及视图的呈现。理解这个基础例子对于进一步学习Struts的高级特性,如拦截器、国际化、数据校验、异常...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...
这个简单的"struts2 helloworld"项目是学习Struts2框架的基础,它涵盖了Struts2的核心概念,包括Action、配置文件、以及视图渲染。随着对Struts2框架的深入学习,你可以了解更多的功能,如拦截器、结果类型、OGNL...
DWR (Direct Web Remoting) 是一个开源的Java库...通过理解DWR的工作原理和配置,以及如何与JavaBean结合,开发者可以构建出响应式的、高效的Web应用。在实际项目中,DWR可以大大提升开发效率,减少前后端的沟通成本。
标题“Buffalo2-HelloWord”可能指的是一个关于使用名为“Buffalo”的工具或框架创建的 HelloWorld 示例项目。从描述中的“NULL”我们无法获取更多信息,但我们可以根据标签“源码”和“工具”来推测这可能是一个...
**hibernate-annotation-helloworld** 是一个...通过这个示例,你可以学到如何创建实体类、设置注解、配置数据库连接以及执行基本的CRUD操作。这将对你的Java开发事业大有裨益,特别是当你需要处理复杂的数据库交互时。
在开始之前,确保已安装 Java 开发工具(JDK)、Apache Maven(构建工具)以及 Eclipse 或 IntelliJ IDEA(IDE)。创建一个新的 Maven 项目,并在 `pom.xml` 文件中添加 SpringMVC 相关依赖,例如: ```xml ...
2. **配置文件**:在Struts2中,配置文件通常是`struts.xml`,它定义了Action类与URL的映射,以及Action执行后的结果转发。例如,`<action name="hello" class="com.example.HelloWorldAction">`定义了一个名为...
对于初学者,"HelloWord"项目是一个很好的起点,因为它是最基础的编程示例,可以帮助我们理解如何在Gef中设置断点、单步执行代码以及查看变量值。以下是一般的步骤: 1. **安装Gef**:在开始之前,确保你已经安装了...
通过这些步骤,学习者不仅可以熟悉Linux内核的工作原理,还能掌握内核编程的基本技能,这对于深入理解和定制Linux系统是非常有帮助的。在实际操作中,遵循这些教程,开发者可以逐步建立起对Linux内核模块开发的自信...
FISCO BCOS JAVA SDK(以HelloWorld合约为例)源代码
7. **supervisor**:工作节点,接收nimbus分配的任务,管理运行在本地的worker进程。 8. **worker**:执行实际Topologies的进程,每个worker可以包含多个Task,每个Task执行Bolt的一部分逻辑。 9. ** Trident**:...
Spring Boot是Spring框架的一个扩展,它旨在简化Spring应用的初始搭建以及开发过程。Spring Boot 2.0版本是一个重要的更新,引入了许多新特性和改进,让开发者能够更加高效地构建基于Spring的应用。在这个...
在这个"Struts2之HelloWord实例"中,我们将深入理解如何使用Struts2创建一个简单的应用程序。 首先,我们需要了解Struts2的核心概念。Struts2框架通过Action类来处理用户请求,Action类是业务逻辑的载体。当用户...
通过这个简单的示例,我们可以初步了解Spring Boot的工作原理及其带来的便利性。这对于初学者来说是一个很好的起点,可以帮助他们更快地掌握Spring Boot的核心概念和技术栈。 以上就是基于给定信息所涉及的知识点,...