`
独立与自由
  • 浏览: 11826 次
社区版块
存档分类
最新评论

Struts2的配置

 
阅读更多

Struts2应用开发步骤:

1.将Struts2的lib文件夹下的commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、freemarker- 2.3.16.jar、javassist-3.7.ga.jar、ognl-3.0.jar、struts2-core-2.2.1.jar、xwork-core-2.2.1.jar复制到               Web应用WEB-INF/lib路径下

2.在web.xml中配置核心Filter:

<filter>
	<filter-name>struts2</filter-name>
	<filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
</filter>
<!-- 让Struts 2的核心Filter拦截所有请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

        3.定义发送请求的表单

4.定义处理用户请求的Action

5.配置Action,放在类加载路径的struts.xml中配置:(也可使用约定)

struts.xml:

<action name="login" class="....">
     ...
</action>

          6.配置处理结果与视图资源的对应:

                 struts.xml:

<action name="login" class="org.wang.app.action.LoginAction">
	<result name="input">/login.jsp</result>
	<result name="success">/welcome.jsp</result>
	...
</action>

           7.编写视图资源(如果Action需要将一些数据传入视图资源,可借助与OGNL表达式)

常量配置:

struts.xml:(一般处于开发模式应,配置常量为开发模式更方便)

<constant name="struts.devMode" value="true"/>
<!--指定了国际化资源文件的baseName为mess-->
<constant name="struts.custom.i18n.resources" value="mess"/>	

        web.xml:

<?xml version="1.0" encoding="GBK">
<web-app ... version="3.0">
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<init-param>
			<param-name>struts.custom.i18n.resources</param-name>
			<param-value>mess</param-value>
		</init-param>
	</filter>
	....
</web-app>

 包含其他配置:

struts.xml:

<include file="struts-part1.xml"/>

 实现Action:(无需继承任何类,实现任何接口,如果包含HTTP请求参数,重要的是包含getter,setter方法,可封装请求参数,和处理结果,

包含execute()方法处理用户请求,可通过<s:property..>输出处理结果,

通常继承ActionSupport,ActionSupporty已经提供了许多默认方法,直接继承该类将简化开发,如果没有提供Action,默认使用ActionSupport)

Action访问ServletAPI:(可通过ActionContext来访问ServletAPI,操作request、sessio、application范围的属性)

创建ActionContext的方式通常为:

ActionContext ctx = ActionContext.getContext();

              Action直接访问ServletAPI:(通过实现接口):

                               >ServletContextAware:(可以访问到ServletContext)

>ServletRequestAware:(可以访问到HttpServletRequest)

>ServletResponseAware:(可以访问到HttpServletResponse)(即使获取了HttpServletResponse也不可以生成服务器响应,Action只是业务控制器)

              使用ServletActionContext访问ServletAPI:(Struts提供了ServletActionContext工具类)

 配置Action:

包和命名空间:

1.每个package配置一个包,使用包来组织Action,<action../>在<package../>下

2.Struts2的核心是Action、拦截器等

3.每个包是多个Action、多个拦截器、多个拦截器引用的集合

4.name属性该包唯一标识

5.extends属性指定该包继承另一个包,可以继承到拦截器、拦截器栈、action等配置

6.abstract="true"指定抽象包

7.namespace属性指定该包的命名空间

8.由于Struts2的配置文件是从上到下处理,所以父包应该在子包前面定义

9.通常继承struts-default包

Action的基本配置:(虽然Action的name命名可以非常灵活,但如果name属性中包含(.)或(-)则可能引发一些未知异常)

<package>
	<action name="login" class="lee.LoginAction"/>
	....
</package>

 Action的动态方法调用:(用户通常不同按钮提交同一个表单)(开启系统动态调用通过设置struts.enable.DynamicMethodInvocation常量)

<form action="login">
		...
	<input type="submit" value="登录"/>
	<input type="submit" value="注册" onclick="regist()"/>
</form>
<script type="text/javascript">
	function regist()	
         /*action="ActionName!methodName"(ActionName指定提交到那个Action,而methodName指定提交到那个方法)*/
	{...
                //或target.action=regist
	        targetForm.action="login!regist"; 
	}
</script>

 

public class LoginRegistAction extends ActionSupport
{
	....
	public String regist()
	{....
		 return ..
	}
	public String execute()
	{
		....
		return ...
	}
}

 

<action name="login" class="wang.app.action.LoginRegistAction">
	....
</action>
<action name="regist" class="wang.app.action.LoginRegistAction" method="regist">
	....
</action>

 通配符:

<action name="*Action" class="wang.app.action.LoginRegist" method={1}>
	...
</action>
		
<action name="*Action" class="wang.app.action.{1}Action">
	...
</action>

<action name="*_*" method="{2}" class="wang.app.{1}">
	<result>/{2}.jsp</result>
</action>

<action name="*">
	<result>/{1}.jsp</result>
</action>

 (对于只是简单的超级链接,可以定义名为"*"的Action(该Action应该放在最后定义))

(如果URL为abcAction.action的请求,如果struts.xml中有abcAction则由它处理,否则对于通配符匹配则按顺序,先找到先处理)

配置默认Action:

<package name="wang" extends="action_default">
	<default-action-ref name="simpleViewResultAction">
		...
	<action name="simpleViewResultAction" class="....">
		<result../>
		...
	</action>
		...
</package>

 配置Action的默认处理类:

在struts-default.xml中

<package name="struts-default" abstract="true">
		...
	<default-class-ref class="com.opensymphony.xwork2.ActionSupport">
</package>

 (完全可以在struts.xml中配置自己想要的,覆盖掉它)

 配置处理结果:

>局部结果:(<result../>作为<action../>元素的子元素)

>全局结果:(<result../>作为<global-results../>元素的子元素)(对所有Action都有效,如果局部与之同名,全局会被覆盖表)

 

<global-results>
	<!-- 配置Result,使用OGNL表达式来指定视图资源 -->
	<result name="success">/${target}.jsp</result>		
</global-results>

 局部:(默认使用dispatcher类型,返回success视图)

>name:逻辑视图名

>type:结果类型

<action name="login" class="wang.LoginAction">
	<result name="success" type="dispatcher">/thank_you.jsp</result>
</action>

 通常使用方式:

<action name="login" class="wang.LoginAction">
	<result name="success">/thank_you.jsp</result>
	...
</action>

 最简洁方式:

<action name="login" class="wang.LoginAction">
	<result>/thank_you.jsp</result>
</action>

 Struts2内建的支持结果类型:

>chain:Action链式处理

>dispatcher:JSP作为视图

>freemarker:FreeMarker模板作为视图

>httpheader:用于控制特殊的HTTP行为

>redirect:直接跳转到其他URL结果类型(会都是所有请求参数、请求属性)

>redirectAction:直接跳转到其他Action

>stream:向浏览器返回一个InputStream(一般用于文件下载)

>velocity:Velocity模板作为视图

>xslt:用于与XML/XSLT整合的结果类型

>plainText:显示某个页面原始代码的结果类型

Action属性值决定物理视图资源:

${属性名.属性名.属性名}

public class MyAction extends ActionSupport
{
	private String target;
	...
	public String execute()
	{
		...
		return ...
	}
}

 

<action name="MyAction" class="wang.app.MyAction">
	<result>/${target}.jsp</result>
</action>

 动态结果:

<action name="*">
	<result>/{1}.jsp</result>
</action>

 配置异常处理:(局部异常与全局异常配置同一异常类型时,局部会覆盖全局异常)

(全局异常的result属性值通常不要使用局部结果,局部异常属性值既可使用全局也可使用局部异常结果)

异常的配置:

<global-results>
	<!-- 定义当sql、root两个逻辑异常都对应exception.jsp页 -->
	<result name="sql">/exception.jsp</result>
	<result name="root">/exception.jsp</result>
</global-results>

<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 当Action中遇到SQLException异常时,
	系统将转入name为sql的结果中-->
	<exception-mapping exception="java.sql.SQLException" result="sql"/>
	<!-- 当Action中遇到Exception异常时,
		系统将转入name为root的结果中-->
	<exception-mapping exception="java.lang.Exception" result="root"/>
</global-exception-mappings>

<action name="login" class="org.crazyit.app.action.LoginAction">
	<!-- 定义局部异常映射, 当Action中遇到MyException异常时,
		系统将转入name为my的结果中-->
	<exception-mapping exception="org.crazyit.app.exception.MyException"
			result="my"/>
			<!-- 定义三个结果映射 -->
		<result name="my">/exception.jsp</result>
		<result name="error">/error.jsp</result>
		<result name="success">/welcome.jsp</result>
</action>

 异常信息的输出:

<!--	输出异常对象本身-->
<s:property value="exception"/>
<!--输出异常堆栈信息-->
<s:property value="exceptionStack"/>
<!--输出异常的message信息-->
<s:property value="exception.message"/>

 

分享到:
评论

相关推荐

    struts2 配置dtd 自动提示

    在配置Struts2时,通常会使用一个名为`struts.xml`的配置文件,该文件定义了应用程序的行为和组件。为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常...

    Struts2配置详解

    ### Struts2配置详解 #### 一、总览 在深入了解Struts2的配置细节之前,我们先来简要概述一下Struts2框架的核心特点及其配置文件的基本结构。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web...

    SSH笔记_Struts2配置

    总结,Struts2配置涉及多个方面,包括核心库的引入、配置文件的编写、Action、Result、Interceptor的定义以及与Spring的整合等。通过合理配置,可以构建出高效、灵活的Web应用。在实际项目中,应根据需求调整和优化...

    struts2配置文件

    在Struts2中,配置文件主要分为两个部分:`struts-default.xml`和用户自定义的配置文件,如`struts.xml`或`struts-config.xml`。这些XML文件定义了Action、结果类型、拦截器和包等元素,从而控制应用程序的行为。 *...

    struts2配置文件加载顺序

    1. **struts-default.xml**:这是Struts2的核心配置文件,位于`struts2-core.jar`库的`/org/apache/struts2/defaults`包内。它包含了框架的基本设置,如拦截器栈、默认Action配置等。 2. **struts-plugin.xml**:这...

    struts2 配置JSP时需要的jar

    在配置Struts2与Spring的整合时,我们需要`spring-context.jar`、`spring-webmvc-struts.jar`等,它们负责管理Bean、依赖注入以及与Struts2的集成。 5. **Hibernate ORM**:如果项目中使用Hibernate作为持久层框架...

    ·Struts2配置文件介绍 超级详细

    ### Struts2配置文件介绍 #### 一、Struts2的核心配置文件 在Struts2框架中,有多个重要的配置文件用于控制应用的行为与结构,其中最核心的是`struts.xml`文件。此外还包括`web.xml`、`struts.properties`、`...

    struts2配置文件详细说明

    配置文件在Struts2中起着至关重要的作用,它定义了框架的行为、动作映射、拦截器和其他关键设置。以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为...

    struts2 Https 配置

    2. **Struts2配置**:在Struts2的应用中,我们需要确保Action请求被重定向到HTTPS。这可以通过在`struts.xml`配置文件中使用`&lt;constant&gt;`标签设置`struts.action.excludePattern`属性来实现。 ```xml ...

    struts2 配置文件

    ### Struts2 配置文件详解 #### 一、引言 在Struts2框架的应用开发过程中,配置文件起到了至关重要的作用。Struts2主要依赖于两种基于XML的配置文件:`web.xml` 和 `struts-config.xml`(通常命名为 `struts.xml`)...

    struts2配置文件改变位置问题

    在Struts2中,`struts.xml`文件是核心配置文件,它定义了动作、结果、拦截器等关键组件。在默认情况下,`struts.xml`通常位于`src/main/resources`或在Web应用中是`WEB-INF/classes`目录下。 在描述的问题中,...

    struts2配置文件传值中文乱码

    本文将围绕“Struts2配置文件传值中文乱码”这一主题,深入探讨其成因、解决方案以及相关的配置细节,旨在帮助开发者有效解决中文乱码问题,提升用户体验。 ### Struts2框架简介 Struts2是Apache组织下的一个开源...

    Struts2 配置文件手册

    配置文件在Struts2框架中起着至关重要的作用,它们定义了框架的行为、拦截器、对象工厂以及各种组件的配置。下面将详细介绍Struts2配置文件中的关键元素。 1) **struts-default.xml**: 这是Struts2框架默认加载的...

    Struts2 配置文件

    配置SSH框架时关于Struts2的配置文件

    struts2配置文件详解

    ### Struts2配置文件详解 #### 一、引言 在Java Web开发中,Struts2框架因其灵活性和强大的功能而被广泛采用。Struts2框架的配置主要通过多个XML文件来实现,这些配置文件定义了应用程序的行为和结构。本文将详细...

    struts2配置环境需要的jar包

    2. **插件库**:Struts2提供了一系列插件,如`struts2-convention-plugin.jar`(用于自动配置)和`struts2-dojo-plugin.jar`(提供dojo相关的UI组件)。这些插件可以按需选择并添加到lib目录。 3. **依赖的第三方库...

    struts2配置示例

    这个“struts2配置示例”提供了一个基础的实现,展示了如何配置Struts2框架来处理用户的登录功能,使用OGNL(Object-Graph Navigation Language)表达式语言,并实现后台验证。下面我们将深入探讨这些关键知识点。 ...

Global site tag (gtag.js) - Google Analytics