`

struts2 自学笔记(2)

阅读更多

Struts2 的结构

还是先看一个图:

这是 struts2 的结构图,我们可以看到, HttpServletRequest 请求到达后首先经过 ActionMapper ,然后经过 FilterDispatcher ,如果还有其他的 Filter ,一次经过,最后到达一个叫 ActionProxy 的地方,这个时候通过 ConfigurationManager 读取配置文件 struts.xml, 然后到达 ActionInvocation ,开始经过一个个的 Interceptor ,最后达到 Action 进行处理后返回结果。

 

初次咋看过程还挺复杂的,其实学习到一定程度之后感觉其实挺简单的,毕竟底层的很多细节我们不必关心,我们关心的只是请求达到我我们要接到请求进行处理,然后返回结果。

Struts2 详解

入门实例:

知道这些后,我们就可以开始来编写第一个 struts2 了。

开发 struts2 应用程序的步骤:

1, 建立工程,导入 struts2 的包

2, 编写 JSP 页面

3, 编写 Action

4, 编写 struts.xml 配置文件

5, 编写 web.xml 文件

下面是一个入门实例(实例一):

注:本教程所有实例原码都已上传到 CSDN ,需要的朋友可以去下载:

原码下载地址:

1, 建立工程,导入包:

导入 struts2 需要的包:复制到项目的 WebRoot/WEB_INF/lib 目录下

 

 

2, 编写 JSP 页面。

index.jsp

< body >

  < form action = "userAction" >

   用户名: < input type = "text" name = "username" />

      < input type = "submit" value = " 提交 " />

   </ form >

  </ body >

result.jsp:

< body >

    你的用户名: ${requestScope.username}

</ body >

3, 编写 Action UserAction

package com.gufengxiachen.struts2_1.action;

 

import com.opensymphony.xwork2.ActionSupport;

 

public class UserAction extends ActionSupport{

   private String username ;

  

   public String getUsername() {

      return username ;

   }

 

   public void setUsername(String username) {

      this . username = username;

   }

 

   @Override

   public String execute() throws Exception {

     

      return “success” ;

   }

 

}

4,  编写 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" >

 

< struts >

   < package name = "struts2_1" extends = "struts-default" >

      < action name = "userAction" class = "com.gufengxiachen.struts2_1.action.UserAction" >

        < result name = "success" > /result.jsp </ result >       

      </ action >

   </ package >

</ struts >

5, 编写 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" >

  < welcome-file-list >

    < welcome-file > index.jsp </ welcome-file >

  </ welcome-file-list >

 

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

 

至此,第一个 struts2 项目已完成,可以部署运行了,当然这个项目非常简单,是一个入门级的项目,但任何大的项目都是从它身上扩展的,所以说弄清楚它的原理是非常重要的。

下面我们来分析这个项目的运行过程。

首先,用户在 index.jsp 页面填写用户名后提交表单,表单提交到什么地方呢?看到 <form action=”userAction”> ,就知道表单提交到 userAction.action

.action 可以省略, struts2 默认会加上后缀 .action 。在哪找到这个 Action

呢?它回去 web.xml 文件中找相关的配置,结果发现有个过滤器 StrutsPrepareAndExecuteFilter( 这个过滤器是 struts2 的过滤器,必须加上,不然就不是一个 struts2 项目,它的作用就是将请求交给 struts2 处理 ) ,然后经过一系列的处理(这里处理的内容很多,后面会详细介绍)最后在 struts.xml 文件中找到了 Action 的配置,接着将请求交给 UserAction 来处理,我们可以看到 UserAction 继承了 ActionSupport 类,实现了 execute 方法,该方法必须返回一个字符串,在这个方法中我们出来的很简单,就单单返回了一个字符串 ”success” ,还应该注意到这个 Action 有个属性 username ,并提供了 get/set 方法,我们好像根本没有看到从页面取参数的方法,哪它是如何取到参数的呢,正是这个 username 属性和它的 get/set 方法的用处,这里有一点要注意, setXXX 方法后的 XXX 必须和参数名相同除了第一个字母大写。这样才能取到参数。 execute 方法是 Action 的处理方法,当我们返回一个 success 字符串时,它就会去 struts.xml 文件相应的 Action 配置中寻找 name success result 标签,找到后返回它所指示的页面,本例中即 result.jsp 。在 result.jsp 中我们只是通过 EL 表达式取到返回的值。

上面即是这个实例的大致( struts2 内部还有很多处理)处理过程,是不是感觉也不是很难呢?

我们来总结一下 struts2 的大致处理过程:

页面 form 表单数据提交到一个 action struts2 的过滤( org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter )拦截请求,查找 struts.xml 文件里的 action 元素, action 元素的 name 属性值和 form 表单提交的 action 对应,则实例化 action 元素的 class 属性值对应的类,并且将 form 表单提交的值通过 setXxx ()方法设置到 class 类属性。

之后调用 action 类的 execute 方法,该方法必须返回一个字符串!根据返回的字符串在 action 元素的子元素 result name 属性 name 对应的值,如果匹配,则返回 result 元素值所指定的页面。


通常 每个 action 类都要 com.opensynphony.xwork2.ActionSupport

 

0
2
分享到:
评论

相关推荐

    struts2自学笔记

    Struts2自学笔记 Struts2是Java Web开发中的一款广泛应用的MVC框架,它基于Model-View-Controller设计模式,旨在简化企业级应用的开发流程。本自学笔记将深入探讨Struts2的核心概念、主要功能及其实现原理。 1. **...

    Struts2自学笔记——Struts2的文件上传

    这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`&lt;input type="file" /&gt;`元素让用户选择本地文件。当用户提交表单时,浏览器会...

    Struts2超详细学习笔记分享(献给自学新人)

    本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...

    自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar

    自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253

    struts自学笔记

    在本文中,我们将深入探讨Struts2的主要特点、与Struts1的对比,以及如何创建一个简单的Struts2 HelloWorld应用。 首先,让我们看看Struts2与Struts1之间的关键区别: 1. **Action实例管理**: - 在Struts1中,...

    Struts1新手入门笔记(全)

    在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar

    本资源“自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar”提供了黎活明老师在传智博客上讲解的第一个Struts2应用的开发示例,帮助初学者理解并实践Struts2的核心概念和使用方法。...

    j2ee自学笔记--- 一些心得

    总结来说,这个J2EE自学笔记不仅涉及了核心框架Struts的使用,还涵盖了与J2EE相关的PHP语言、开发工具MyEclipse以及基础环境JDK的使用。通过提供的七个小项目,你可以深入理解JSP在Web应用中的作用,并通过实践来...

    传智播客2016版hibernate+struts2+Spring框架资料课件+笔记

    《传智播客2016版hibernate+struts2+Spring框架学习资源详解》 在IT行业中,框架的使用是开发高效、稳定应用的关键。本资源包聚焦于三大主流Java Web框架:Hibernate、Struts2和Spring,它们在2016年时仍然是开发者...

    ssh自学笔记

    SSH自学笔记主要涵盖的是Secure Shell(SSH)协议的使用、配置和相关的重要知识点。SSH是一种网络协议,用于安全地远程登录到服务器,进行文件传输,以及其他命令行操作。以下是一些核心的学习点: 1. **SSH基础...

    java自学笔记

    Java自学笔记概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。这份“java自学笔记”涵盖了从基础到进阶的多个Java知识点,旨在帮助初学者系统地学习并掌握...

    struts经典笔记

    经典的struts自学宝典,都是我的潜心专研,精心总结出来的

    达内学习笔记,java笔记

    总的来说,这份“达内学习笔记,java笔记”是Java初学者和进阶者宝贵的自学资料,它将帮助学习者巩固Java基础知识,理解Struts框架的使用,并且提升JavaScript的实战技能,为成为一名合格的Java开发者打下坚实的基础...

    JavaWeb自学的心得和笔记

    下面,我将根据标题“JavaWeb自学的心得和笔记”以及提供的文件名称,详细阐述一些关键的知识点。 首先,JavaWeb是基于Java语言进行Web应用开发的框架和技术集合。它包括了Servlet、JSP、JSTL、EL表达式、过滤器、...

    北京圣思园javaweb课件和笔记

    "北京圣思园javaweb课件和笔记"很可能是某次培训课程或自学资源,包含了关于这个主题的详细讲解和学习记录。 在JavaWeb开发中,基础知识点主要包括: 1. **Servlet与JSP**:Servlet是Java编写服务器端应用程序的...

    jfinal自学笔记

    `controllerKey` 可包含正斜杠,如 `/admin/article`,这类似 Struts2 中的命名空间功能,帮助组织和管理控制器层次结构。 2. **表单提交与Web配置** 当用户在页面上填写表单并提交时,如 `...

    SSH的笔记整理和重点讲解

    马士兵Struts2学习笔记2011.doc可能涵盖了Struts2的基本概念、配置、动作调度、拦截器、结果类型等内容,以及如何结合其他技术如JSP、Servlet来实现一个完整的Web应用。 2. **Hibernate**: Hibernate是一个对象...

    JAVA基础学习总结笔记

    看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。

    我的学习笔记集合(包括有corejava,jdbc,hibernate,ejb,c++,servlet,spring,struts,jsp)

    虽然现在Struts2已经较过时,但了解其工作原理对理解现代框架如Spring MVC仍然有帮助。 9. **JSP (JavaServer Pages)**: JSP是一种动态网页技术,它允许在HTML页面中嵌入Java代码,以实现动态内容的生成。JSP与...

Global site tag (gtag.js) - Google Analytics