`

Struts2.0------HelloWord以及工作原理

阅读更多

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之helloword

    首先,我们需要理解Struts2.0的核心组件和工作原理。Struts2.0框架由Action、Result、Interceptor等关键部分组成。Action是业务逻辑的载体,它处理来自用户的请求;Result则是展示结果的方式,可以是JSP、FreeMarker...

    struts2学习--helloword

    通过以上步骤,你将能够掌握Struts2的基础配置和SiteMesh的使用,这对于进一步学习Struts2的高级特性,如拦截器、结果类型、动态方法调用等,以及理解MVC模式在实际项目中的应用具有重要意义。不断地实践和探索,你...

    struts-helloword

    通过这个"struts-helloworld"例子,开发者能够了解到Struts的基本工作流程,包括Action的编写、配置文件的设置以及视图的呈现。理解这个基础例子对于进一步学习Struts的高级特性,如拦截器、国际化、数据校验、异常...

    Struts2: HelloWord

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...

    struts2 helloword工程

    这个简单的"struts2 helloworld"项目是学习Struts2框架的基础,它涵盖了Struts2的核心概念,包括Action、配置文件、以及视图渲染。随着对Struts2框架的深入学习,你可以了解更多的功能,如拦截器、结果类型、OGNL...

    dwr入门 -- 02 -- HelloWord解释&&使用javabean

    DWR (Direct Web Remoting) 是一个开源的Java库...通过理解DWR的工作原理和配置,以及如何与JavaBean结合,开发者可以构建出响应式的、高效的Web应用。在实际项目中,DWR可以大大提升开发效率,减少前后端的沟通成本。

    Buffalo2-HelloWord

    标题“Buffalo2-HelloWord”可能指的是一个关于使用名为“Buffalo”的工具或框架创建的 HelloWorld 示例项目。从描述中的“NULL”我们无法获取更多信息,但我们可以根据标签“源码”和“工具”来推测这可能是一个...

    hibernate-annotation-helloword

    **hibernate-annotation-helloworld** 是一个...通过这个示例,你可以学到如何创建实体类、设置注解、配置数据库连接以及执行基本的CRUD操作。这将对你的Java开发事业大有裨益,特别是当你需要处理复杂的数据库交互时。

    Springmvc-helloword简单例子

    在开始之前,确保已安装 Java 开发工具(JDK)、Apache Maven(构建工具)以及 Eclipse 或 IntelliJ IDEA(IDE)。创建一个新的 Maven 项目,并在 `pom.xml` 文件中添加 SpringMVC 相关依赖,例如: ```xml ...

    STRUTS2HELLOWORD

    2. **配置文件**:在Struts2中,配置文件通常是`struts.xml`,它定义了Action类与URL的映射,以及Action执行后的结果转发。例如,`&lt;action name="hello" class="com.example.HelloWorldAction"&gt;`定义了一个名为...

    Gef入门程序-Helloword

    对于初学者,"HelloWord"项目是一个很好的起点,因为它是最基础的编程示例,可以帮助我们理解如何在Gef中设置断点、单步执行代码以及查看变量值。以下是一般的步骤: 1. **安装Gef**:在开始之前,确保你已经安装了...

    Ubuntu--helloword.zip_Ubuntu!

    通过这些步骤,学习者不仅可以熟悉Linux内核的工作原理,还能掌握内核编程的基本技能,这对于深入理解和定制Linux系统是非常有帮助的。在实际操作中,遵循这些教程,开发者可以逐步建立起对Linux内核模块开发的自信...

    fisco-app-helloword.zip

    FISCO BCOS JAVA SDK(以HelloWorld合约为例)源代码

    storm1.2.1-helloword

    7. **supervisor**:工作节点,接收nimbus分配的任务,管理运行在本地的worker进程。 8. **worker**:执行实际Topologies的进程,每个worker可以包含多个Task,每个Task执行Bolt的一部分逻辑。 9. ** Trident**:...

    springboot2.0helloword

    Spring Boot是Spring框架的一个扩展,它旨在简化Spring应用的初始搭建以及开发过程。Spring Boot 2.0版本是一个重要的更新,引入了许多新特性和改进,让开发者能够更加高效地构建基于Spring的应用。在这个...

    Struts2之helloword实例

    在这个"Struts2之HelloWord实例"中,我们将深入理解如何使用Struts2创建一个简单的应用程序。 首先,我们需要了解Struts2的核心概念。Struts2框架通过Action类来处理用户请求,Action类是业务逻辑的载体。当用户...

    SpringBoot-HelloWord

    通过这个简单的示例,我们可以初步了解Spring Boot的工作原理及其带来的便利性。这对于初学者来说是一个很好的起点,可以帮助他们更快地掌握Spring Boot的核心概念和技术栈。 以上就是基于给定信息所涉及的知识点,...

Global site tag (gtag.js) - Google Analytics