`
Candy_Code
  • 浏览: 13921 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

struts2 web应用配置详解

阅读更多

1.首先来认识一下几个文件:
①web.xml :位于WEB-INF下。需自行创建。每一个web应用程序都应该有一个web.xml,它就像web应用程序的一本使用说明书,告诉服务器程序(如:tomcat) 该如何使用web 应用程序。
②struts-default.xml:位于struts2-core-2.XXX.jar的根目录下。定义了struts2默认配置。一般不要修改。包括result-type、拦截器和名为struts-default的package。通常每个包都应当继承struts-defauult包。struts2的众多核心功能都是由Interceptor(拦截器)实现的,Interceptor是struts2的基石,而在struts-default.xml中定义了这些Interceptor。可以这么说:只有继承了strut-default我们才能使用struts2的核心功能。
③struts-plugin.xml:位于struts2-XXX-pluin-2.X.XX.jar的根目录下。一般不要修改。用于配置插件使用的文件。可以用它来方便的加入一些特定的功能。它定义了一个package继承自struts-default,可以说struts-pluin.xml是struts-default.xml的补充。
④struts.xml:位于WEB-INF\classes目录下。主要用于配置页面的访问的路径。通常需要定义一个package,继承自struts-default,这样就拥有了struts-default的所有配置,从而很大程度的减轻了struts.xml的配置量。
⑤default.properties:位于struts2-core-2.XXX.jar中的org.
apache.struts2包中。这是一个属性文件,以key=value的形式存储配置信息,然后由struts2读取。它定义了struts2框架的默认配置。由struts2事先定义好了,一般不要修改。
⑥struts.properties:可有可无。用时需自行创建。可以用于配置struts,例如:struts.action.extension 属性用于指定访问action的后缀名,多个后缀名之间用英文逗号(,)隔开
struts.action.extension=do,,
这句话指定了action的后缀名为do或者为空,则我们想访问TestAction的url为http://localhost:8080/webapp/TestAction.do
或者http://localhost:8080/webapp/TestAction
所有配置信息都可以struts.xml编写,使用

<constant name=”key” value=”value”/>


加载顺序
default.properties -->struts.xml -->struts.properties
若三个文件中存在重复的属性,则后加载的会覆盖之前加载的。
详细参数配置请查阅:
http://candy-code.iteye.com/blog/1442335
2.一般的配置步骤
①web.xml
关键在于Filter(过滤器)的配置,/*表示匹配web app根目录下的所有内容,即过滤所有的内容然后交给StrutsPrepareAndExecuteFilter去处理,只有这样我们才能真正使用struts2
这里需注意两点:
1’ struts2 2.0.x 至2.1.2版本使用的过滤器是FilterDispatcher,自2.1.3版本StrutsPrepareAndExecuteFilter替代了FilterDispatcher
2’ 如果在url中只写web app名,则访问的<welcome-file>,此时不会被过滤器过滤

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


② 将所需类库考入WEB-INF\lib下
struts完整版类库都在lib目录下,一般情况下我们并不需要所有的类库。我们只需要选择其中的一部分,然而我们在开发之前并不能确定到底需要哪些类库。最简单的方法是将struts\apps下的struts2-blank.war解压开,然后将其WEB-INF\lib目录下的所有jar file都拷入你的应用程序的lib目录下,这些类是最基本最常用的类库。
所需基本库文件有:(不同版本略有差别,以2.3.1.2版本为例)
struts2-core-2.3.1.2.jar -->struts2核心类库
xwork-core-2.3.1.2.jar    -->xwork核心类库
ognl-3.0.4.jar   -->OGNL表达式类库
commons-io-2.0.1.jar -->输入输出
freemarker-2.3.18.jar-->
freemaker支持类库
asm-3.3.jar 、asm-commons-3.3.jar、asm-tree-3.3.jar、
commons-fileupload-1.2.2.jar
commons-lang-2.5.jar、javassist-3.11.0.GA.jar
③struts.xml
关键点在于定义一个package并继承struts-default.
【package 属性】
name:必选属性。package的名字,用于区别不同的package
namespace:访问路径,允许形式有 /、/XX、/XX/、/XX/xx
extends:父package的名字
【action属性】
name:必选属性。action的访问名。访问形式为:
actionName. extension
extension(后缀名)在default.properties中定义为action或空
class:可选属性。指定action对应的类,若不指定,默认
com.opensymphony.xwork2.ActionSupport
method:可选。指定访问的action的方法。默认为execute()
  【result属性】
name:用于区别多个result。它与Action的返回值对应。struts会根据result返回的字符串找到同名的result的标签,从而确定要访问的页面。默认为success
type:页面跳转的类型。有chain、redirect、dispatcher、redirectAction等
示例:

		
<?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="default" namespace="/" extends="struts-default">
		<default-action-ref name="index"></default-action-ref>
		<action name="index" class="com.jnmc.unique.MyAction">
			<result>/index.jsp</result>
		</action>
	</package>
</struts>


3.struts.xml配置补充
①默认action的配置:当找不到指定的页面的时,默认访问指定页

<default-action-ref name="index"></default-action-ref>


name:action的名字
②全局结果集:被同一个包内所有的action所共享的结果集

<global-results>
			<result name="error">/error.jsp</result>
	</global-results>


③异常映射:当action抛出异常时,会被struts的拦截器捕捉到。然后根据异常映射跳转到指定的action,来处理异常。
result:目的action的name
exception:指定异常的类型

<exception-mapping result="error" exception="java.lang.Exception"/>


④全局异常映射:
被同一个package下的所有action共享。一般与全局结果集配合使用。当然也可以在每一个action分别指定处理exception的action。

<global-results>
			<result name="error">/error.jsp</result>
		</global-results>
		
		<global-exception-mappings>
			<exception-mapping result="error" exception="java.lang.Exception"/>	
		</global-exception-mappings>


⑤wildcard(通配符):
通配符的使用可以大大降低配置量
* : 匹配任意长度的字符串(字符串之间不能有空格)
{n}: 代指之前上文中出现的第n个*

	<action name="user_*" class="com.jnmc.unique.User{1}Action">
			<result>/user_{1}.jsp</result>
	</action>


则在浏览器中敲
http://hostname:port/webapp/user_Add,会访问UserAaddAction,若返回success,则显示user_add.jsp页面
⑥Interceptor(拦截器):
在struts-default.xml配置了一大堆Interceptor,建议阅读
一下struts-default.xml。
先介绍一个概念:Interceptor Stack(拦截器堆)
它是一个Interceptor链表,其中有顺序的存储了多个Interceptor。它们都存储在堆内存中。
在action标签对中可以添加拦截器的配置。因为在struts-default.xml有如下配置:

<default-interceptor-ref name="defaultStack"/>


所以我们在不指定Interceptor的情况下会使用defaultStack中定义的多个Interceptor.若指定,则会覆盖struts-default.xml中的配置。建议这么做:

<action name="index" class="com.jnmc.unique.MyAction1">
		<interceptor-ref name="defaultStack"/>
<interceptor-ref name="chain"/>
</action>


这样就将多个拦截器加入了拦截器链表中,执行顺序与添加顺序相同。
注意:chain是struts-default.xml中配置的单个Interceptor。
⑦自定义拦截器
只需创建一个类(不妨叫:MyInterceptor)继承自AbstractInterceptor或者实现Interceptor接口,然后在struts.xml的package标签对中配置:
示例:

<interceptors>
			<interceptor name="timeInterceptor" class="com.jnmc.struts2.interceptor.TimeInterceptor"/>
</interceptors>

然后在action中指定它。(方法前面已经讲过了)

---------------------------更多关于struts的细节,我会陆续贴出
分享到:
评论

相关推荐

    Struts配置详解.doc

    Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的,而struts-config.xml文件是struts专用的配置文件。事实上也是可以根据需要给这个配置文件起其他...

    struts核心配置文件详解

    Struts应用的配置 多应用模块的配置 Struts配置文件 多应用模块的划分有助于应用的并行开发,提高效率

    Struts2属性文件详解

    该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口. struts.url.https.port 该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务...

    JSP Struts配置文件详解

    如果没有设置,将才用Servlet容器为web应用分配的临时工作目录. @nochache:true时,在相应结果中加入特定的头参数:Pragma ,Cache-Control,Expires防止页面被存储在可数浏览器的缓存中,默认为false --&gt; contentType=...

    struts2配置以及练习源代码

    Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的,而struts-config.xml文件是struts,struts2的配置练习源代码struts2配置以及练习源代码。

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 ...

    Java Web应用详解.张丽(带详细书签).pdf

    5.4 Web应用程序开发 第6章 Servlet及其应用 6.1 Servlet 简介 6.2 Servlet 应用实例 6.3 HTML表单在Servlet中的应用 6.4 HTML表单验证 6.5 FCKeditor 框架应用 第7章 JDBC数据库连接 7.1 JDBC 概述 7.2 ...

    Struts2+Spring+Hibernate整合入门详解

    Struts:作为基于 MVC 模式的 Web 应用最经典框架,两个项目Struts 和webwork已经集成,成为现在的Struts2。目前的最新版本是2.0.9(2007-7)。 Spring: 是一个轻型的容器,利用它可以使用一个外部 XML 配置文件...

    J2EE应用开发详解

    104 第8章 Struts2框架 105 8.1 Web应用的发展 105 8.2 Struts2的起源和体系结构 106 8.3 Struts2核心部分详解 108 8.3.1 核心控制器FilterDispatcher 108 8.3.2 业务逻辑控制器Action 111 8.3.3 业务逻辑组件 116 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 ...

    Java Web程序设计教程

    1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用javascript与ajax提升用户体验 7 1.3多种集成开发环境 9 1.3.1集成开发环境...

    Java Web开发从初学到精通随书光盘源码

    读者对象:适合Java开发Web应用和J2EE方面的初学者,对有一定基础但希望提高自己的系统设计7k平的读者也十分适合。 编辑推荐 《Java Web开发从初学到精通》由浅入深:从Java Web开发的基础知识直至项目实战;内容...

    低清版 大型门户网站是这样炼成的.pdf

    2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建...

    新SSH(Spring+SpringMVC+Hibernate)框架结构的java web案例实践

    随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境...

    java从入门到精通70个PPT

    33 Struts 2配置详解 34 Struts 2深入 拦截器 35 Struts 2综合应用 36 类型转换和OGNL 37-40 项目案例:在线投票系统 41 jsp servlet struts总结 42 Hibernate 入门 43 Hibernate 关联映射 44 HQL实用技术 45 HQL...

    Java_EE企业应用实战SSH(第3版)-part2

    1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE...

    Java_EE企业应用实战SSH(第3版)-part1

    1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE...

    Java_EE企业应用实战SSH(第三版)-part3

    1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE...

    关于JSP配置文件web.xml加载顺序详解

    一、 1、启动一个WEB项目的时候,WEB容器会去读取它的配置...load-on-startup 元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该s

Global site tag (gtag.js) - Google Analytics