`

Struts2快速入门

阅读更多
开发Struts2依赖的jar
到http://struts.apache.org/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.1.6。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发Struts 2程序最少需要的JAR。
struts2-core-2.x.x.jar :Struts 2框架的核心类库
xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),Struts 2框架使用的一种表达式语言
freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
Commons-fileupload   拷进去
还有一种最省事的做法是:
如果不需要跟第三方框架集成,把不带-plugin结尾的jar文件都添加入类路径即可。如果需要跟第三方框架集成,这时候还需要加入对应的-plugin jar文件。例如跟spring集成,需要加入struts2-spring-plugin-2.x.x.jar.
Struts2的启动配置
在struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
在FilterDispatcher的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。

注意:struts2读取到struts.xml的内容后,会将内容封装进javabean对象并存放在内存中,对于用户每次请求的处理将使用内存中的数据,而不是每次请求都读取struts.xml文件
Struts2的配置文件
Struts2默认的配置文件为struts.xml ,FilterDispatcher过滤器在初始化时将会在WEB-INF/classes下寻找该文件,该文件的配置模版如下:
<?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="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="net.xabc. action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
    </package>
</struts>
Struts2的第一个应用(编写Action)
例子中使用到的net.xabc.action.HelloWorldAction类如下:
package net.xabc.action;
public class HelloWorldAction{
private String message;

public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}
}
编写JSP页面
例子中使用到的/WEB-INF/page/hello.jsp如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>第一个struts2应用</title>
  </head>
  <body>
   ${message } <br>
  </body>
</html>

可以使用EL表达式访问Action中的属性。

配置文件详解
1.在Struts.xml配置包

<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="net.xabc.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用。
包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。

通常每个包都应该继承struts-default包, struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。Struts2很多核心的功能都是通过这些内置的拦截器实现的。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使用struts2提供的这些功能。 struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。 struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。

包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。


在Struts.xml配置Action

<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="net.xabc.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
在struts1中,通过path属性指定访问该action的URL路径。在struts2中,情况就不是这样了,访问struts2中的action的URL路径由两部份组成:包的命名空间+action的名称,例如访问上面例子中名为helloworld的Action的URL路径为:/test/helloworld (注意:完整路径为:http://localhost:端口/内容路径/test/helloworld.action)。

如果没有为action指定class,默认是ActionSupport。而ActionSupport的execute() 方法默认处理就是返回一个success字符串。method属性用于指定action中的那个方法,如果没有指定默认执行action中的execute() 方法。
Action名称的搜索顺序

1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。

在Struts.xml配置Action的result

<action name="helloworld" class="net.xabc.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
result配置类似于struts1中的forward,但struts2中提供了多种结果类型,如: dispatcher(默认值)、 redirect 、 redirectAction 、 plainText。

下面是redirectAction 结果类型的例子,如果重定向的action中同一个包下:
<result type="redirectAction">helloworld</result>
如果重定向的action在别的命名空间下:
<result type="redirectAction">
<param name="actionName">helloworld</param>
<param name="namespace">/test</param>
</result>

如果没有指定result的name属性,默认值为success。

在result中还可以使用${属性名}表达式,表达式里的属性名对应action中的属性。如下:
<result type="redirect">view.jsp?id=${id}</result>
指定需要Struts 2处理的请求后缀

FilterDispatcher是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户请求。默认情况下,如果用户请求的路径以.action结尾,该请求将被转入Struts 2框架处理,否则该请求将略过Struts 2框架的处理。

默认处理的后缀是可以通过常量”struts.action.extension“进行修改的,如下面配置Struts 2只处理以.do为后缀的请求路径:
<?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>
    <constant name="struts.action.extension" value="do"/>
</struts>

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如:
<constant name="struts.action.extension" value="do,go"/>
分享到:
评论

相关推荐

    struts2快速入门

    struts2快速入门,对于框架的学习很有帮助,大家可以参考下。

    java Struts2快速入门教程pdf

    本教程将带你深入理解Struts2的基础概念、核心组件以及如何快速入门。 一、Struts2框架概述 Struts2是Struts1的升级版,它吸收了WebWork框架的优点,极大地提高了开发效率和代码的可维护性。Struts2基于拦截器模型...

    struts2快速入门实战文档

    本快速入门实战文档将引领你一步步地在Eclipse集成开发环境中搭建Struts2环境,开启你的Struts2学习之旅。 首先,你需要了解Struts2的核心概念。Struts2的核心组件包括Action、Result、Interceptor和Value Stack。...

    struts2附快速入门源码

    在"Struts2快速入门"中,首先会介绍Struts2的基本概念和架构,包括Action、Result、Interceptor等核心组件。Action是业务逻辑的执行者,Result负责展示结果,Interceptor则是处理请求和响应之间的一系列拦截操作,如...

    Struts2 的入门简单的hello

    总之,“Struts2 的入门简单的hello”是一个很好的起点,帮助开发者快速理解MVC架构和Struts2的工作原理。通过实践这个示例,你可以建立起对Struts2框架的基本认识,并为进一步深入学习和应用奠定基础。

    struts2讲义

    #### 二、Struts2快速入门 ##### 2.1 安装与配置 1. **下载Struts2开发包** - 访问Struts2官网:https://struts.apache.org/ 下载最新版本的Struts2开发包。 2. **解压Struts2开发包** - 解压后的目录结构如下: ...

    struts2入门demo

    Struts2是一个强大的Java EE应用程序框架,用于构建和维护可扩展、模块化且易于管理的Web...对于想要深入学习Struts2的人来说,这是一个很好的起点,可以帮助他们快速掌握基础,为进一步的学习和实践打下坚实的基础。

    精通struts2

    #### Struts2快速入门 - **环境搭建**:为了顺利地进行Struts2开发,首先需要搭建一个合适的开发环境。这通常包括安装Java JDK、Apache Tomcat服务器以及IDE(如Eclipse或IntelliJ IDEA)等。 - **示例应用**:第2...

    struts2从入门到精通总结(备忘)

    本总结将深入探讨Struts2的核心概念、配置、Action的创建、数据操作、值栈以及拦截器的使用,旨在帮助初学者快速上手并深入理解Struts2。 一、Struts2入门 Struts2作为Apache软件基金会的一个项目,是Struts1的升级...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    Struts2快速入门案例 #### 第一步:创建Web项目 在MyEclipse中创建一个新的Java EE Web项目,选择适当的Java EE版本(本教程中使用5.0版本),并使用JDK6作为编译器。 #### 第二步:导入Struts2开发jar包 将**...

    struts2新手入门小项目

    本项目是为初学者设计的,旨在帮助他们快速理解并掌握Struts2的基本概念和操作。 首先,让我们深入了解一下Struts2框架的核心特性。Struts2是一个基于拦截器的MVC框架,它通过拦截HTTP请求来处理业务逻辑。它继承了...

    struts2入门级的例子

    通过实践这些例子,你可以快速掌握Struts2的使用方法,从而提高你的Web开发技能。 1. **配置环境**: 首先,你需要设置Java开发环境和Apache Tomcat服务器,并在项目中引入Struts2的核心库。这通常涉及下载Struts2的...

    struts2.0快速入门

    ### Struts2.0快速入门知识点详解 #### Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)模式的Web应用程序框架,相较于Struts1.x版本有着根本性的变化。Struts2不仅吸取了...

    Struts2入门案例 实现简单的Struts2入门jar包.rar

    6. ** strut2入门案例**:这个入门案例可能是创建一个简单的“Hello, World”程序,演示如何配置Struts2框架,创建Action类,编写对应的JSP页面,并在web.xml中进行必要的初始化设置。这个例子会帮助初学者快速理解...

    Struts2入门demo

    这个"Struts2入门demo"旨在为初学者提供一个快速理解并实践Struts2框架的起点。以下是对Struts2核心概念和相关知识点的详细说明: 1. **MVC模式**:Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务...

    Struts入门

    - **docs** 文件夹下提供了 Struts 2 的快速入门指南、文档及 API 文档等资源。 - **lib** 文件夹下包含 Struts 2 的核心库和第三方插件库。 - **src** 文件夹包含整个框架的源代码。 - **配置 jar 包**:为了...

Global site tag (gtag.js) - Google Analytics