1.struts2原理和入门程序

时间:2024-09-24 17:07:38

Struts2是一个MVC的Web应用框架,是在Struts1和WebWork发展起来的,以WebWork为核心,采取拦截器机制来处理用户请求。

  原理图:

  1.struts2原理和入门程序

  分析步骤:   

    1.用户发送一个请求

    2.请求的目的肯定是去找Action,只是先经过一个过滤器

    3.通过ActionMapper去查找Action

    4.找到以后把请求委托给ActionProxy去处理

    5.ActionProxy又通过ConfigurationManager去读取Struts.xml的配置文件

    6.取到配置文件后,说明运行环境已经准备就绪,就交给Action的执行者(Action Invocation去执行)

    7.在执行的过程中会在前后都加上一系列的拦截器

    8.Action执行成功,返回一个结果(字符串)

    9.根据这个结果派发页面

  入门程序:

    新建web工程

    导入jar

    配置过滤器(web.xml中配置)

    编写Action

    Struts2的配置

  

    配置过滤器(web.xml中配置)这里你可以配置下面这个也可以配置StrutsPrepareAndExecuteFilter

<!-- 配置过滤器 -->
<filter>
<filter-name>hello</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>hello</filter-name>
<!--
url的配置有两种:
/* :所有的url都要经过这个过滤器
*.action:只有后缀是.action才会经过
-->
<url-pattern>/*</url-pattern>
</filter-mapping>

    编写Action

public class HelloWorldAction {
public String execute() {
return"success";
}
}

    编写struts2的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!--
name:就是名字,随便取的
extends:继承一个父包,可以拥有父包的配置
namespace:影响你的请求路径
-->
<package name="hello" extends="struts-default" namespace="/">
<!--
name:访问路径
class:就是Action的路径(包名+类名)
method:指定访问该类的某个方法:不写的话:默认是execute
-->
<action name="hello" class="com.etc.action.HelloWorldAction" >
<!--
name:就是你action执行结束后的返回的字符串
-->
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

Action中的execute方法是默认的:

  当你在配置文件中不指定方法的时候,会默认调用execute