Struts2架构思想、配置文件

struts的核心在于拦截器的机制,采用拦截器来处理业务逻辑,使得侵入性比较厉害的servlet光芒暗淡。我们来看看struts2的核心思想图解

Struts2架构思想、配置文件_第1张图片



show my code.


先来第一个.action,为了能让我们知道action确实执行了我们选择了在控制台打印一句hehe。这里作为我们struts2的业务逻辑处理模块,我们还需要为它配置struts.xml(自定义的配置文件)

package cn.canyugan.action;

public class HelloAction 
{
	public String execute()
	{
		System.out.println("hehe");
		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>
    <!--
    	 name:给包起名防重名
    	 namespace:给包增加一层或多层目录
    	 extends: 继承一个其他包,目的是引入其他包的配置
    	 abstract: 声明包是抽象的.意思就是让别的包来继承,声明为抽象的包中不能含有Action配置
     -->
     <!-- 常量包 -->
	<package name="hello" namespace="/caorui" extends="struts-default" abstract="true/false">
	<!--
    	 name:为action类加上标识 访问时输入name就可以找到action
    	 class:action完整类名
    	 method:处理的方法
     	-->
		<action name="HelloAction" class="cn.canyugan.action.HelloAction" method="execute">
			<!-- name:返回结果的标识 找到结果路径
			     type:可以决定跳转到结果的方式	 转发,重定向
			-->
			<result name="success" type="dispatcher">/index.jsp</result>
		</action>
	</package>
</struts>


配置到这是不是认为已经大功告成了呢?运行一下看看控制台,什么也没有,明显不科学嘛。我们需要了解,任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。 通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载Struts2框架。 因为Struts2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispatcher,只需要在web.xml文件中配置FilterDispatcher即可。 所以我们再来配置一下web.xml.

<!-- 重要: 配置struts2的核心过滤器 -->
  <!-- 注意: 配置struts2过滤器要放置到其他过滤器后面.保证其他过滤器可以执行 -->
  <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>



到此为止,我们大功告成!

你可能感兴趣的:(Struts2架构思想、配置文件)