开发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的处理流程
指定多个配置文件
在大部分应用里,随着应用规模的增加,系统中Action数量也大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:
<?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>
<include file="struts-user.xml"/>
<include file="struts-order.xml"/>
</struts>
通过这种方式,我们就可以将Struts 2的Action按模块配置在多个配置文件中。
动态方法调用
如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}
public String other() throws Exception{
this.message = "第二个方法";
return "success";
}
}
假设访问上面action的URL路径为: /struts/test/helloworld.action
要访问action的other() 方法,我们可以这样调用:
/struts/test/helloworld!other.action
通常不建议大家使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
使用通配符定义action
<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld_*" class="net.xabc.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}
public String other() throws Exception{
this.message = "第二个方法
分享到:
相关推荐
本文将详细介绍如何使用Struts2进行快速开发,并讲解其核心概念和配置步骤。 首先,要开始使用Struts2,你需要从Apache官方网站(http://struts.apache.org/download.cgi#struts2014)下载最新版本的Struts2框架。...
3. 实现:使用 Struts2 框架实现项目的功能。 4. 测试:对项目进行测试和调试。 5. 部署:将项目部署到生产环境中。 Struts2 框架的技术架构 Struts2 框架的技术架构主要包括以下几个部分: 1. Action:负责处理...
搭建Struts2的开发环境,我们需要以下步骤: 1. **安装Java环境**:确保系统已安装Java JDK,并设置好环境变量。 2. **集成开发环境(IDE)**:可以选择Eclipse、IntelliJ IDEA等主流的Java IDE,它们都有很好的对...
本文将详细介绍如何搭建Struts2开发环境,并提供三种不同的方法来帮助读者快速上手。无论是初学者还是有一定经验的开发者,都能从中找到适合自己的方式。 #### 二、准备工作 在开始之前,请确保已经安装了以下工具...
在使用Struts2进行开发时,引入相应的库文件是至关重要的步骤。这个压缩包包含了Struts2开发所需的核心库和依赖包,方便开发者直接将其复制到`WEB-INF/lib`目录下,以便于项目的构建和运行。 首先,让我们详细了解...
根据提供的文件信息,我们可以归纳总结出关于Struts2的一些关键知识点。这些知识点涵盖了Struts2的基本配置、与Spring框架的...这些知识点对于初学者来说是非常有用的,可以帮助他们快速入门并掌握Struts2的开发流程。
本实验的目的旨在掌握Struts框架的使用和架构思想,了解如何使用Struts快速实现Web开发。 四、实验内容 本实验的内容包括: * 设计值对象JavaBean实现购物车及已选商品的存储 * 定义视图,使用Struts实现购物车...
通过这个“java Struts2快速入门教程pdf”中文版,你可以了解到Struts2的基本架构和使用方法,为你的Java Web开发之路打下坚实基础。实际操作过程中,结合教程逐步实践,将理论与实践相结合,相信你很快就能掌握...
3. 配置Struts2:设置Struts2的配置文件,定义Action类,这些Action类通常是Spring管理的Bean,这样可以利用Spring的依赖注入功能。 4. 配置Struts2-Spring插件:这个插件允许Struts2的动作类直接在Spring容器中...
通过本文档的学习,我们不仅了解了如何在 MyEclipse 8 环境中快速搭建 Struts 2 开发环境,还掌握了 Struts 2 的基本配置文件 `struts.xml` 和 `web.xml` 的配置方法。这对于初学者来说是非常有价值的指导资料。在...
Struts2是一个流行的Java web应用程序框架,用于...不过,理解这些基本概念和流程,可以帮助你快速上手Struts2的开发。在实践中不断探索和学习,你将能够充分利用Struts2的强大功能来构建高效、可维护的Java web应用。
### Eclipse与Struts2开发详解 #### 一、概述 ...综上所述,Eclipse结合Struts2框架,为Java Web开发者提供了一套成熟且高效的开发工具链,通过本文介绍的配置流程,相信读者能快速上手,开启Web应用开发之旅。
6. 配置Struts2:创建struts.xml,定义Action、结果类型、拦截器栈等。 7. 编写业务逻辑:实现Action类,处理请求,调用Service层方法。 8. 数据访问:通过Hibernate的Session接口进行数据库操作。 通过以上步骤,...
在Java世界里,随着软件行业的快速发展,三层架构(表现层、业务逻辑层、数据访问层)已成为标准的开发模式,Struts2便是这种模式的优秀实践者之一。 Struts2的核心特性包括: 1. **Action类与映射**:在Struts2中...
Struts2是一个强大的Java web...以上就是Struts2在MyEclipse中配置的基本步骤。在实际开发中,你可能还需要配置拦截器、结果类型、国际化、数据校验等高级特性。不断学习和实践,你将更深入地掌握Struts2框架的精髓。
3. **内容的国际化和本地化**:使用 Easy Message resources 功能创建资源属性文件,以便支持不同语言和地区的需求。这样可以在不修改代码的情况下更改应用程序的语言显示。 4. **异常处理**:通过 Easy Exception ...
"Struts2入门使用案例HelloWorld"是一个典型的教程,旨在帮助初学者快速理解并开始使用Struts2框架。下面我们将深入探讨这个案例涉及的关键知识点。 首先,我们需要创建一个Maven工程。Maven是Java项目管理和构建...
使用 NetBeans 开发 Struts Web 框架的快速入门指南 本快速入门指南旨在帮助开发者快速入门使用 NetBeans 开发 Struts Web 框架。为此,我们将指导您如何使用 NetBeans IDE 创建一个 Struts 应用程序,从安装所需...
总的来说,"struts2 使用范例"提供了一个学习和实践Struts2框架的好机会,结合MyEclipse的便利性和Hibernate的数据管理能力,可以帮助开发者快速上手Java Web开发。通过深入理解并实践这个范例,你可以更好地掌握MVC...
- 在开发过程中,利用Struts2的开发者模式进行调试,以便快速定位问题。 通过熟练掌握Struts2标签的使用和EL表达式,可以显著提升开发效率,同时使Web应用的视图层更加整洁和易于维护。不断实践和理解这些知识点,...