struts2学习笔记 -- day02 struts2主配置文件详解

一、入门案例

1、编写Action动作类

package cn.itcast.web.action;
/**
 * 用于处理请求的类
 * 
 * 在struts2中把用于处理请求类都称之为:动作类
 *
 */
public class HelloAction {
	
	/**
	 *  用于处理请求的方法
	 *  
	 *  把动作类中用于处理请求的方法都叫做:动作方法
	 *  
	 *  动作方法有编写规范:
	 *  	访问修饰符都是public
	 *  	返回值必须是String类型的
	 *  	方法不能有参数
	 * @return
	 */
	public String sayHello(){
		System.out.println(this);
		System.out.println("HelloAction中的sayHello方法执行了。。。。");
		return "success";
	}

}

2、配置struts.xml配置文件

	<package name="p1" extends="struts-default">
		<action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello">
			<result name="success" type="dispatcher">/success.jsp</result>
		</action>
	</package>

3、编写jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>struts2的入门案例</title>
</head>
<body>
<%--struts2框架它默认会拦截以.action为后缀的请求,或者是没有任何后缀的请求 --%>
<a href="${pageContext.request.contextPath}/hello.action">访问struts2的入门案例.action</a>
<hr/>
<a href="${pageContext.request.contextPath}/hello">访问struts2的入门案例</a>
</body>
</html>

二、struts2的执行流程


三、struts2中的配置文件

1、struts2的 6 个配置文件

default.properties、struts-default.xml、struts-plugin.xml、struts.xml、struts.properties、web.xml

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

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

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

2、default.properties配置文件

注意:default.properties中的内容坚决不允许改动

(1)、位置:


3、struts-default.xml

注意:该配置文件内容不能修改

位置:


4、struts-plugin.xml

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

5、struts.xml 和 struts.properties

位置都在应用中,用于配置我们自定义的参数,推荐使用struts.xml进行配置

6、web.xml

作用:给过滤器配置参数

四、struts.xml中标签详解

1、constant标签

(1)、作用

        配置struts2的常量

        键值对形式,key、value

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

(2)、常用的常量


2、package标签

	<!-- package标签详解:
			作用:建立一个包,把我们的动作配置按照面向对象的思想来管理。
			属性:
				name:指定包的名称。必须写,必须唯一。
				extends:指定当前包的父包。子包自动具备父包的配置。我们的包一般都需要继承struts-default包。
						该包中配置着struts2的核心,如果不继承该包,则不能使用struts2的核心。
						struts-default包在struts-default.xml配置文件中定义着。
				abstract:把当前包声明为抽象包。抽象包就是用来被继承的。里面定义的公共配置。
						 只有没有action标签的包,才能声明为抽象包。
				namespace:指定当前包的名称空间。当包上指定了名称空间之后,访问URL就变成了:
							url = 名称空间+action标签的name取值
						它的作用就是把访问URL按照模块化来管理。
						名称空间的写法:
								必须以/开头
								后面的第一个字符必须是字母。
								例如:
									/n  /n1  /namespace1  
								访问URL就变成了:
									/n1/hello
						体现模块化管理URL的例子:
							名称空间是:/user
							访问URL:
								/user/addUser.action   /user/updateUser.action.....
						当我们不指定名称空间时,它有默认值:
							默认值是:""
	-->

	<package name="myDefualt" extends="struts-default" abstract="true">
		 <!-- 此处定义的就是当前项目中的公共配置 -->
	</package>
	
	<package name="p1" extends="myDefualt" namespace="/n1">
		<action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello">
			<result name="success" type="dispatcher">/success.jsp</result>
		</action>
	</package>

3、action标签

	<package name="p1" extends="struts-default">
		<!-- action标签详解:
				作用:建立动作名称,动作类和动作方法的对应关系。
				属性:
					name:指定动作名称。它不能重复
					class:指定动作类的全限定类名。
					method:指定动作方法名称。
			创建动作类的三种方式:
				第一种方式:无侵入式的创建					实际开发中不常用
					例子:HelloAction。
					它的特点就是:没有任何struts2的代码体现。
				第二种方式:实现Action接口的方式			实际开发中用的也不多
					例子:Hello2Action
					它的特点就是:Action接口中定义了一些常量,还是没有一些核心内容定义。
					默认动作方法:
						execute方法。当我们执行此方法时,可以不指定method属性
				第三种方式:继承ActionSupport			实际开发中采用的方式
					例子:Hello3Action
			默认动作类:
				ActionSuppor是默认动作类
		-->
		<action name="hello" class="cn.itcast.web.action.HelloAction" method="sayHello">
			<result name="success" type="dispatcher">/success.jsp</result>
		</action>

		</package>
		
		<!-- 使用通配符来配置 -->
		<package name="user" extends="struts-default">
			<action name="*" class="cn.itcast.web.action.UserAction" method="{1}">
				<result name="success" type="dispatcher">/success.jsp</result>
			</action>
		</package>
	
		<!-- 升级通配符 -->
		<package name="user" extends="struts-default">
			<action name="*_*" class="cn.itcast.web.action.{2}Action" method="{1}{2}">
				<result name="success" type="dispatcher">/success.jsp</result>
			</action>
		</package> 

动态方法调用

struts.xml中:

<!-- 开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="user" extends="struts-default">									
	<action name="user" class="com.itheima.web.action.UserAction" >
		<result name="success">/success.jsp</result>
	</action>
</package>

jsp页面中:

<a href="${pageContext.request.contextPath}/user!addUser.action">添加用户</a>
<a href="${pageContext.request.contextPath}/user!updateUser.action">修改用户</a>
<a href="${pageContext.request.contextPath}/user!deleteUser.action">删除用户</a>
<a href="${pageContext.request.contextPath}/user!findUser.action">查询用户</a>

4、result标签

作用:配置结果视图的地址

		<action name="demo1" class="cn.itcast.web.action.Demo1Action" method="demo1">
			<!-- result标签:
					作用:配置结果视图的地址。
					属性:
					  name:用于和动作方法的返回值比较,当一致时前往指定的位置。
					  type:用何种方式前往(请求转发,重定向)
					  	常用的取值:
					  		dispatcher:请求转发到一个指定jsp页面(默认值)
					  		redirect:重定向到一个指定的jsp页面或者是一个action
					  		redirectAction:重定向到一个指定的action
			-->
			<result name="login">/success.jsp</result>
			<result name="error" type="redirect">/error.jsp</result>
			<result name="findAll" type="redirect">findAllCust</result>
			<result name="findAll" type="redirectAction">findAllCust</result>
		</action>

五、创建动作类的三种方式

1、无侵入式

特点:没有任何struts2代码的体现,实际开发中不常用

public class HelloAction {
	

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

}

2、实现Action接口

特点:Action接口中定义了一些常量,还是没有一些核心内容定义。

默认的动作方法:execute方法。当我们执行此方法时,可以不指定method属性

import com.opensymphony.xwork2.Action;


public class Hello2Action implements Action {

	@Override
	public String execute() throws Exception {
		System.out.println("Hello2Action的execute方法执行了");
		return ERROR;
	}

}

3、继承ActionSupport方式

import com.opensymphony.xwork2.ActionSupport;


public class Hello3Action extends ActionSupport {

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值