`
x125521853
  • 浏览: 73356 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

第二章 Struts2 配置文件讲解

阅读更多

一:配置文件

   (1).环境搭建和上一章一样,需要导入6个jar包。

   (2).将struts.xml放置到web工程src目录下。

   (3).web.xml配置。

  

二:示例

   action层  

package com.struts.chapter2.action;

public class UserAction{
	private String message;

	public String getMessage() {
		return message;
	}
	public String execute(){
		message = "我的第一个Struts2程序";
		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">

<struts>
	<!-- 设置一些全局的常量开关 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.action.extension" value="do,action" />
	<constant name="struts.serve.static.browserCache " value="false" />
	<constant name="struts.configuration.xml.reload" value="true" />
	<constant name="struts.devMode" value="true" />
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<include file="chapter2.xml" />
</struts>

   chapter2.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="chapter2" namespace="/chapter2" extends="struts-default">
		<action name="execute" class="com.struts.chapter2.action.UserAction">
			<result>/WEB-INF/page/chapter2.jsp</result>
		</action>
	</package>
</struts>

   index.jsp  

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="basePath" value="${pageContext.request.contextPath}" />
<c:redirect url="/chapter2/execute.do" />

   chapter2.jsp(该文件放到WEB-INF下)  

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="basePath" value="${pageContext.request.contextPath}" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
  	${message}
  </body>
</html>

     注意:这里用到EL表达式,而EL表达式只能取出Page、request、session、application四个范围之一里面的数据,但是我们这里并没有放置到四个范围中,是怎么去出来的呢?

     UserAction是个普通类,它不是servlet,它怎能处理用户的请求呢?

     Struts2用于处理用户请求的Action,没有与Servlet API耦合,显示无法处理用户请求,而Struts2提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并调用Action的execute方法来处理用户的请求.

     Struts2框架中使用包来管理action,避免了Servlet在web.xml中难以管理的与维护的局面.包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action,在实际应用中,我们应该把一组业务功能相关的action 放在同一个包下.

     配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分,见示例.namespace属性可以不配置,如果不指定该属性,默认的命名空间为””

     通常每个包都应该继承struts-default包,因为struts2很多核心功能都是拦截来实现的。

     package还有一个abstract=”true”属性,指定此包为抽象包,和抽象类的概念差不多,说明此包只能被其他包继承,则它里面不允许包含action元素.

     <result name="success">/WEB-INF/Page/chapter2/chapter2.jsp</result>

     result元素主要定义视图的跳转和返回的行为及类型.

 

三:常用开关的介绍

   (1).<constant name="struts.i18n.encoding" value="UTF-8" />

    指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法。

   (2).<constant name="struts.action.extension" value="do,action" />

    该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。   如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。

    在请求时,路径后的后缀action可要可不要,即下面的两种请求都是可以的 

   (3).<constant name="struts.serve.static.browserCache " value="false" />

    设置浏览器是否缓存静态内容,默认值为true,开发阶段最好false

   (4).<constant name="struts.configuration.xml.reload" value="true" />

    当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false,开发阶段最好true

   (5).<constant name="struts.devMode" value="true" />

    开发模式下设为true,这样可以打印出更详细的错误信息

   (6).<constant name="struts.enable.DynamicMethodInvocation" value="false" />

    动态方法调用,可以解决多个请求对应一个Servlet的问题,后面详细讲解,默认为true,关闭则设为false.

 

四:Action配置中的各项默认值

   下面代码:   

<action name="Login">
	<result>/WEB-INF/Page/chapter2/Login.jsp</result>
</action>

    当我们请求的路径为http://localhost:8080/Struts2/chapter2/Login时,同样可以实现页面的跳转,这是怎么回事呢?

   (1).如果没有为action指定class,默认是ActionSupport类

     <action name="Login">相当于

     <action name="Login" class="com.opensymphony.xwork2.ActionSupport">

   (2).如果没有为action指定method,默认执行action中的execute()方法

     <action name="Login">相当于

     <action name="Login" class="com.opensymphony.xwork2.ActionSupport" method="execute">

   (3).如果没有指定result的name属性,默认值为success

    <result>相当于  <result name="success">

 

   问是题ActionSupport这个类到底是个什么类呢?

    首先要肯定的一点是他是一个具有execute方法的类,并且execute方法返回”success”字符串,因为只有这样,前面的运行结果才能说的通. ActionSupport还实现了很多其他的结果,提供了许多定制的功能.

   

五:ActionSupport类的作用

    struts2不要求我们自己设计的action类继承任何的struts基类或struts接口,但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throws Exception方法。 

    Struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的getter和setter方法。

    

分享到:
评论

相关推荐

    Struts 2.X权威指南(第3版) 第二章源码

    总的来说,《Struts 2.X权威指南(第3版)》第二章是深入学习Struts 2的关键,它涵盖了框架的基础架构、核心组件、配置、数据绑定、异常处理和插件系统等多个方面。通过阅读这一章,开发者能够建立起对Struts 2的...

    实验指导\第二章Struts框架详解.doc

    2. **理解配置文件的作用**:`struts-config.xml`是Struts的配置文件,它定义了各个Action、ActionForm以及它们之间的映射关系,以及请求的转发规则。 ### 实验步骤 1. 创建名为`Login`的新工程,并添加Struts支持...

    开发者突击 struts2 第二章 源代码

    本章"开发者突击 Struts2 第二章 源代码"着重关注Struts2框架的核心概念和源码解析,帮助开发者深入理解其工作原理。 在Struts2框架中,源码的分析对于提升开发者的技能至关重要,因为它揭示了框架如何处理请求、...

    struts2深入详解源码1-5章

    第二章可能会详细讨论Struts2的Action和Result。Action类是开发者实现业务逻辑的地方,它可以返回不同的Result类型,如JSP、FreeMarker或Velocity模板。Result则将Action的执行结果导向对应的视图,实现页面跳转。...

    struts2API文档

    2. **第二章:环境搭建** - 指导如何配置开发环境,包括安装JDK、Apache Tomcat服务器,以及设置IDE。 3. **第三章:第一个Struts2应用** - 通过创建一个简单的“Hello, World!”示例来介绍基本的项目结构和配置。 4...

    struts2权威指南前三章

    第二章深入探讨了Struts2的配置机制。Struts2的配置主要分为两个部分:struts.xml配置文件和Action类的配置。struts.xml文件是整个应用的入口,用于定义Action、Result、Interceptor等核心元素。这一章会详细介绍...

    struts2笔记

    “第二章 Struts2配置.txt”则可能涉及Struts2的配置文件,如struts.xml,这是控制应用程序行为的核心配置文件。内容可能包括如何配置Action、结果类型、包配置以及全局常量等。 “第三章 Struts2中的action和文件...

    struts2参考文档(word版)

    第二章则转向了Web基础技术,讲解了B/S(Browser/Server)和C/S(Client/Server)系统之间的差异,强调了Web应用的灵活性和可访问性。JSP(JavaServer Pages)和Servlet作为Web开发的基础组件,被详细阐述,包括它们...

    Struts2新手资料

    第二章 Struts2中的Action:Action是Struts2的核心组件,负责处理用户请求。这一章会深入讲解Action的设计模式,如何创建自定义Action,以及如何使用ActionSupport基类。此外,还会涉及Action的执行流程和结果的定向...

    IBM-struts2内部培训资料

    2. **第二章:struts2架构剖析**:将深入到Struts2的架构设计,讲解DispatcherServlet的工作原理,以及Action、Result、Interceptor如何协同工作,形成请求处理的完整流程。 3. **第三章:struts2配置详解**:详细...

    Struts2_基础

    **第二章 开发环境** 搭建Struts2开发环境通常需要JDK、Apache Tomcat服务器、IDE(如Eclipse或IntelliJ IDEA)以及Struts2的核心库。安装完成后,需配置项目的web.xml文件以启用Struts2的前端控制器...

    struts2权威指南

    《Struts2权威指南》第二章主要探讨了如何在实际开发环境中设置和使用Struts2框架,这是一项关键的Java Web开发技术。本章详细介绍了从下载安装到实际操作的全过程,旨在帮助开发者快速上手并掌握Struts2的基础知识...

    struts2权威指南.

    第二章,Struts2下的HelloWorld,是初学者入门的必经之路。这一章会指导读者如何设置开发环境,创建第一个Struts2应用。首先,你需要配置Struts2的依赖库,然后创建一个简单的Action类,接着定义Action配置,最后...

    第十二章.开发Struts.2.Spring应用.rar

    刘长炯的MyEclipse 6 Java开发中文教程第十二章,聚焦于这两个流行的开源框架的协同工作,帮助开发者更好地理解和掌握它们的联合使用。 Struts 2是一个强大的MVC(模型-视图-控制器)框架,它继承了Struts 1的优点...

    struts2的教程

    “第二章 开发环境”涉及到设置IDEA作为Struts2开发的平台。IDEA提供了丰富的插件支持,如Struts2 IDEA插件,可以方便地进行Struts2项目的创建、配置和调试。你需要配置Struts2的库依赖,包括struts2-core、struts2-...

    struts2完全学习手册1-7章代码

    第二章:Action与结果 在这一章,读者将深入理解Struts2的核心组件——Action。Action类是业务逻辑的载体,处理用户的请求并返回结果。本章可能会讲解如何创建自定义Action类,使用注解来定义方法映射,以及如何返回...

Global site tag (gtag.js) - Google Analytics