Struts2 配置环境

提示:只有掌握了配置文件的用法,才能更好的使用和扩展Struts2框架的功能;

主要配置文件表:
	文件				是否可选		位置(相对于WEBAPP) 	用途
	web.xml					否				/web-inf/			Web部署描述,包括所有的框架组建。
	struts.xml				是				/web-inf/class		主要配置文件,包含result映射、action映射/拦截器配置等;
	struts.properties		是				/web-inf/classes/	Struts2框架的属性配置;
	struts-default.xml		是									默认配置
	struts-plugin.xml		是				/web-inf/struts2-xx-plugin.jar		Struts2框架的插件所用的配置文件
	


解释:
	web.xml :是所有的javaWeb 应用程序都需要的核心配置文件;	
	Struts2 的核心控制器是通过一个过滤器完成的;
	核心控制器:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
	
	struts.properties 属性定义文件,该文件定义了Struts2框架中的大量属性值、常量; 该文件是一个标准的Key-Value格式的文本文件
	
	struts-deafault.xml : 是Struts2的基础配置文件,并为框架提供默认的设置,位置:Struts2-core-2.1.8.jar,自动加载
	<package name="struts2" namespace="/cho2" extends="struts-default">
	struts-default 这个包就是struts-default.xml中定义的
	
	struts.xml :是框架的核心配置文件,主要用于配置和管理开发人员编写的action;;
	
	struts-plugin.xml : 插件配置文件
	

3.2: Struts 的配置详解
	3.2.1:常量配置
		通过常量配置,可以改变Struts2框架和插件的行为,从而满足不同web应用的需要;
		
		案例:以struts.devMode属性设置为例,设置常量:
		struts.xml 中:<constant name="struts.devMode" value="true"/>
		struts.properties 中:struts.devMode = true
		web.xml文件中:
			  <filter>
			  	<filter-name>struts2</filter-name>
			  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
			  	
			  	<!-- 配置常量 在web.xml中进行配置 -->
			  	<init-param>
			  		<param-name>struts.devMode</param-name>
			  		<param-value>true</param-value>
			  	</init-param>
			  </filter>
			  
	3.2.2 :包的配置
		Struts2使用包来管理action 拦截器等核心组件;包{对个action 、多个拦截器、多个拦截器引用} 
		Struts2中的包类似与Java中的类;
		
		属性介绍:
		<package name="" extends="" namespace=""></package>
		name:必填属性,该属性指定包的名称,其他包继承时使用属性;
		extends:可选属性,该属性指定该包继承其他包,同时继承其他包中的Action 、拦截器等配置;
		namespace : 可选属性,该属性定义该包的命名空间,指定用户请求的URL 目录路径;
		abstact : 可选属性,该属性为TRUT时说明该包是抽象包,不能定义 Action属性,默认False;
		
	3.2.3 :命名空间配置
		Struts2 框架使用action的名称和它所在的名称空间来标示一个action , 不同的空间可以使用同名的action , 提高了系统的灵活性
		默认命名空间用 "" 表示
		namespace="/"  根命名空间	
				
	3.2.4:包含配置
		项目被分成多个小模块,对每个模块单独的提供一个配置文件,然后可以在struts.xml 中使用include 元素来包含其它配置文件
		include元素只有一个file属性,指定被包含文件的文件名;
		<struts>
			<include file="struts-chat.xml"/>
			<include file="struts-2.xml"/>
			..............		
		</struts>
		
	3.2.5 ;配置Action
		action 映射是框架中的基本“工作单元”;action映射就是将一个请求URL 映射到一个action类
		
		action的属性解释:
		<action name="" class="" method ="" converter=""></action>
		name:action 的名称,用于匹配请求的URL
		class:action实现类的完成类名
		method:执行action时调用的方法
		converter:应用与action的类型转换器的完整类名
		
		情况1:
		<action name="helloword">
			<result name="></result>
		</action>
		class method 两个属性默认了那么:class 属性默认指定:com.opensymphony.xword2.ActionSupport类
		method 默认指定 execute() 这个方法;
		
		示例:
		<!-- 请求/add , 调用action中的add()方法 -->
		<action name="add" class="com.struts.action.NewsAction" method="add">
			<result name="success">/success.jsp</result>
		</action>
		
	3.2.6 :动态方法的调用DMI --Dynamic Method Invocation
		无需配置可以动态的调用非execute的方法; 直接的请求/add!add.action 就可以调用add() 这个方法
		http://localhost:8080/StrutsNotes/edit!edit.action
		
		actionName!methodName.action
		<!-- 请求/add , 调用action中的add()方法 -->
		<action name="add" class="com.struts.action.NewsAction">
			<result name="success">/success.jsp</result>
		</action>	
		开启或禁用:DMI
		<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
	
	3.2.7 :通配符的映射
		作用:使用通配符可以减少action配置的数量,使用一些具有类似行文的Action 或者 Action 的方法可以使用通用的样式配置;
		通配符:*
		<action name="*news" class="" method="{1}">
		</action>
		释义:允许这个映射匹配所有以news结尾的URL,如:/addNews/updateNews
		{1} :占位符,它将被通配符所匹配的值替换
		addNews--*匹配的是add ; 那么 {1} ,将被add替换,则调用add() 方法
		
		{N} -- N==1-9 ,匹配对应的通配符*
		{0} --- 匹配整个URL ,例如:
		<action name="*_* " class="com.svse.action.{1}Action" method="{2}">
			<result name="success">/{0}.jsp</result>
		</action>
		当我们访问:/News_update时, {1}==News {2}==update  {0}==News.update
			
		注:如果通配符放在后面则用_符号隔开;	
		
		如果在action映射中使用了通配符,那么映射即那个按照他们出现在框架文件中的顺序来匹配请求;
		
		
	3.2.8 ;配置result
		在Struts2框架中,一个result代表一种视图组件;
		组成:result映射   result类型
		结果映射:
			属性介绍:name 指定result的逻辑名
					  type 指定result 的类型,不同类型的result 代表了不同类型的结果输出
		
		省略name属性,默认值为success,省略type属性,默认值为dispatcher
		省略param子元素,直接在result元素的内容中给出实际的资源位置;
		
		结果类型:
			redirectActoin 结果类型由两个参数;
				actionName
			指定重定向要访问的action 的名字,该参数是默认的;
				namespace :指定action所属的命名空间,如果么有使用这个参数,那么默认的使用当前的命名空间;
				
			案例:
			<package name="t1" namespace = "/aa" extends="struts-defalut">
				<action name="test1Action" class="...Test1Action">
					<result type="redirectAction">
						<param name="actionName">test2Action</param>
						<param name="namespace">/bb</param>
					</result>
				</action>
			</package>
			<package name="t2" namespace="/bb" extends="struts-default">
				<action name="test2Action" class ="org....Test2Action">
					<
result >/success.jsp</result>
</action>
</package>


3.2.9:全局结果
<global-results>
<result name=>
<result name=""></result>
</global-results>









 

你可能感兴趣的:(java,Web,框架,struts2)