struts2_day02_struts.xml中配置详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35537301/article/details/81950461

1、struts2的6个配置文件

  文件 说明
不能修改 default.properties key=value的形式,类似于开关
struts-default.xml 配置的都是struts2的核心
struts-plugin.xml 只有使用了plugin的jar时才有的配置文件
  struts.xml 项目中的struts2核心配置
  struts.properties 不推荐使用
  web.xml 给过滤器配置参数

加载时机是:在项目启动时就开始加载

加载顺序:按照上述顺序加载

注意:遇到相同的配置信息时,后加载的会覆盖先加载的

配置文件的位置

default.properties配置文件位置

struts-default.xml位置

struts-plugin.xml

位置:插件包jar包中,没有导插件包时不存在

2、struts.xml中标签详解

2.1、constant标签

作用

配置struts2的常量

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>
</struts>

常用的常量

常量名 常量值 说明
struts.i18n.encoding UTF-8 项目中使用的编码
struts.objectFactory.spring.autoWire name 和spring框架整合有关
struts.multipart.parser jakarta 指定文件上传用的组件
struts.multipart.maxSize 2097152 文件上传时,总文件大小的限制:2M
struts.action.extension action,, 能进入struts2框架内部的URL地址后缀,多个值用逗号分隔
struts.enable.DynamicMethodInvocation false 是否开启动态方法调用
struts.devMode false

是否开启开发者模式
开发者模式:修改配置文件,不需要重启服务器

开发阶段建议为true

struts.ui.theme xhtml 页面展示用的主题

2.2、package标签

作用

建立一个包,把我们的动作配置按照面向对象的思想来管理

属性

  • name
    • 指定包的名称。必须写,必须唯一
  • extends
    • 指定当前包的父包,子包自动具备父包的配置。
    • 我们的包一般都需要继承struts-default包
    • 该包中配置着struts2的核心,如果不继承该包,则不能使用struts2的核心
  • abstract
    • 把当前包声明为抽象包
    • 抽象包就是用来被继承的,里面定义的公共配置
    • 只有没有action标签的包,才能声明为抽象包
  • namespace
    • 指定当前包的名称空间
    • 把访问URL按照模块化来管理
    • 当包上指定了名称空间之后,访问URL就变成了:url = 名称空间+action标签的name取值
    • 名称空间的写法
      • 必须以/开头
      • 后面的第一个字符必须是字母

2/3、action标签

作用

  • 建立动作名称,动作类和动作方法的对应关系

属性

  • name:指定动作名称,它不能重复
  • class:指定动作类的全限定类名
  • method:指定动作方法名称

2.4、result标签

作用

配置结果视图的地址

属性

  • name:用于和动作方法的返回值比较,当一致时前往指定的位置
  • type:用何种方式前往(请求转发,重定向)

常用的取值

  • dispatcher:请求转发到一个指定jsp页面(默认值)
  • chain:请求转发到某个Action
  • redirect:重定向到一个指定的jsp页面或者是一个action
  • redirectAction:重定向到一个指定的action
  • stream:文件下载的时候用到

3、创建动作类的方式

3.1、普通的Java类

public class HelloAction {
	
	public String sayHello(){
		System.out.println("HelloAction中的sayHello方法执行了。。。。");
		return "success";
	}
 
}

3.2、实现Action接口

import com.opensymphony.xwork2.Action;

public class HelloAction implements Action{
	
	@Override
	public String execute() throws Exception {
		System.out.println("HelloAction中的sayHello方法执行了。。。。");
		return "success";
	}
 
}

3.3、继承ActionSupport类

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport{
	
	public String sayHello(){
		System.out.println("HelloAction中的sayHello方法执行了。。。。");
		return "success";
	}
 
}

4.动作方法的访问方式

动态方法访问

作用

减少Action数量

语法

动作类的名字!动作方法的名字.action

使用

  • 在struts.xml文件中,开启动态方法调用
<!-- 开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
  •  页面中
<a href="${pageContext.request.contextPath }/user!login.action">登录</a>

调用UserAction类的login()方法 

通过method属性配置

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

	public String login(){
		return SUCCESS;
	}
	
	public String register(){
		return SUCCESS;
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>

	<package name="user" namespace="/" extends="struts-default">

		<action name="userAction" class="com.itheima.web.UserAction"
			method="login">
			<result name="success">/success.jsp</result>
		</action>
		<action name="userAction" class="com.itheima.web.UserAction"
			method="register">
			<result name="success">/success.jsp</result>
		</action>

	</package>

</struts>

通过通配符的配置方式

页面

<h1>Action方法的3种访问方式三:通过通配符的配置方式:</h1>
<a href="${pageContext.request.contextPath }/loginUser.action">登录</a>
<a href="${pageContext.request.contextPath }/registerUser.action">注册</a>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>

	<package name="user" namespace="/" extends="struts-default">

		<action name="*User" class="com.itheima.web.UserAction"
			method="{1}">
			<result name=”success”>/{1}_success.jsp</result>
			<result name="input">/{1}.jsp</result>
			<result name="error">/error.jsp</result>
		</action>

	</package>

</struts>

 动作类

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

	public String login(){
		return SUCCESS;
	}
	
	public String register(){
		return SUCCESS;
	}
}

玩一玩

<h1>Action方法的3种访问方式三:玩一玩</h1>
<a href="${pageContext.request.contextPath }/login_User.action">登录</a>
<a href="${pageContext.request.contextPath }/register_User.action">注册</a>
<br/>
<a href="${pageContext.request.contextPath }/add_Product.action">添加商品</a>
<a href="${pageContext.request.contextPath }/update_Product.action">修改商品</a>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>

	<package name="user" namespace="/" extends="struts-default">
		<action name="*_*" class="com.itheima.action.{2}Action" method="{1}">
     		    <result name="success">/{1}_success.jsp</result>
     	        </action>

	</package>

</struts>

猜你喜欢

转载自blog.csdn.net/qq_35537301/article/details/81950461
今日推荐