Struts2_01入门

package xinfei.code.test;
/**
 * Struts2的概述?什么是Struts2?
 * 		Struts2是基于MVC设计模式的WEB层的框架
 * 		(常见的web框架:Struts1、Struts2、WebWork、SpringMVC)
 * Struts2执行流程(前端控制器模式)看下图
 * WEB层框架都有一个特点:
 * 		遵循前端控制器模型,不同的web层框架实现前端控制器模型技术实现不一样
 * 		Struts2 -->filter
 * 		SpringMVC->servlet
 * Struts2的前端控制器(StrutsPreparedAndExecuteFilter)
 * 		init 方法:服务器启动执行一次	主要作用:用来加载整个struts2配置文件的
 * 		按照顺序一个一个加载:
 * 			1.	default-properties
 * 				目录:(/org/apache/struts2/default.properties)
 * 				struts2的一些初始化配置
 * 			2.	struts-default.xml	
 * 				目录:(/struts-default.xml)
 * 				struts2定义好的包就在这个配置文件中 所以要在服务器启动的时候就要加载
 * 				struts2默认包:struts-default 大量拦截器
 * 			3.	struts-plugin.xml 这是struts2整个spring用到的一个配置文件
 * 			4.	struts.xml	src下的定义的配置文件
 * 			5.	加载StrutsPreparedAndExecuteFilter的初始化参数值
 * 				<init-param>
					<param-name>struts.action.extension</param-name>
					<param-value>action,,</param-value>
 				</init-param>
 		那么..这样按顺序加载有什么好处呢?
 			这样的好处就是如果前面的配置文件内容与后面的配置内容一致了,
 			后面的配置内容就会覆盖前面的内容
 * @author zx
 *
 */
public class Text {

}


src下创建一个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>
	<!-- 覆盖action的后缀名访问  name:key  value:自定义的值  -->
	<constant name="struts.action.extension" value="action,,"></constant>
	<!-- 开启动态方法执行 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	<!-- 
		name:包名  整个配置文件中唯一	作用:给别人继承的 
		其实extends="struts-default"也是继承struts-default.xml的
		namespace:命名空间   会和action标签中的name属性组成当前action的浏览器访问路径
		
		action标签:
			name:action的名称	 会和package标签中的namespace组成action访问路径
			class:全限定名	 如果能和浏览器访问路径匹配  通过反射创建实例对象
			result 接收返回值别名 默认:请求转发
	-->
	<package name="test01" extends="struts-default" namespace="/abc">
		<!-- 普通访问 -->
		<action name="hello" class="xinfei.code.action.ActionDemo01">
			<result name="action">/demo01.jsp</result>
		</action>
		<!-- 实现Action访问 -->
		<action name="implment_test" class="xinfei.code.action.ActionDemo02">
			<result name="action">/demo01.jsp</result>
		</action>
		<!-- 继承ActionSupport -->
		<action name="extends_test" class="xinfei.code.action.ActionDemo03">
			<result name="action">/demo01.jsp</result>
		</action>
	</package>
</struts>
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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath}/abc/hello">struts2的初访问</a>
	<br/>
	------------------------------------------------------------------------
	<a href="${pageContext.request.contextPath }/abc/implment_test">继承Action</a>
	<br/>
	------------------------------------------------------------------------
	<a href="${pageContext.request.contextPath }/abc/extends_test">继承Action</a>
</body>
</html>
action包下

package xinfei.code.action;

public class ActionDemo01 {
	
	public String execute(){
		System.out.println("浏览器访问了...");
		return "action";
	}
}
package xinfei.code.action;

import com.opensymphony.xwork2.Action;

public class ActionDemo02 implements Action{

	@Override
	public String execute() throws Exception {
		System.out.println("实现了action接口...");
		return "action";
	}
}
package xinfei.code.action;

import com.opensymphony.xwork2.ActionSupport;

public class ActionDemo03 extends ActionSupport{

	@Override
	public String execute() throws Exception {
		System.out.println("继承actionsupport接口...");
		return "action";
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值