Struts2学习一----------Struts2的工作原理及HelloWorld简单实现

Posted 禁忌夜色153

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2学习一----------Struts2的工作原理及HelloWorld简单实现相关的知识,希望对你有一定的参考价值。

© 版权声明:本文为博主原创文章,转载请注明出处

 Struts2工作原理

一个请求在Struts2框架中的处理步骤:

1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求

2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的继承很有帮助,例如SiteMesh Plugin)

3.接着FilterDispatcher(2.0~2.1.2;2.1.2之后是StrutsPrepareAndExecuteFilter)被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action

4.如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy

5.ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类,这里,我们一般是从struts.xml配置中读取

6.ActionProxy创建一个ActionInvocation的实例

7.ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

8.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker模板。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中涉及到ActionMapper。

 

在上述过程中所有的对象(Action,Results,Interceptors等)都是通过ObjectFactory来创建的。

 

HelloWorld实例

1.项目结构

 

2.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
  	<modelVersion>4.0.0</modelVersion>
  	
	<groupId>org.struts</groupId>
	<artifactId>Struts2-HelloWorld</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>Struts2-HelloWorld Maven Webapp</name>
	<url>http://maven.apache.org</url>
	
	<properties>
		<!-- 统一Struts2开发环境 -->
		<struts2.version>2.5.10</struts2.version>
	</properties>
	
	<dependencies>
		<!-- junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- struts2 -->
		<dependency>
		    <groupId>org.apache.struts</groupId>
		    <artifactId>struts2-core</artifactId>
		    <version>${struts2.version}</version>
		</dependency>
	</dependencies>
	
	<build>
		<finalName>Struts2-HelloWorld</finalName>
	</build>
	
</project>

3.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  		version="3.0" metadata-complete="true">
  
  	<!-- 过滤所有请求交给Struts2处理 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  
</web-app>

4.HelloWorldAction.java

package org.struts.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	/**
	 * Struts2默认执行方法
	 */
	@Override
	public String execute() throws Exception {
		
		System.out.println("执行了Action方法");
		return SUCCESS;
		
	}

}

5.struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	
	<package name="default" namespace="/" extends="struts-default">
		
		<action name="helloWorld" class="org.struts.action.HelloWorldAction">
			<result>/success.jsp</result>
		</action>
		
	</package>
	
</struts>

6.success.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>Success.jsp</title>
</head>
<body>
	This is success.jsp
</body>
</html>

7.效果预览

以上是关于Struts2学习一----------Struts2的工作原理及HelloWorld简单实现的主要内容,如果未能解决你的问题,请参考以下文章

Struts2学习

strut2_struts.xml文件配置知识点汇集

struts2学习笔记之十:文件上传

Struts2学习第二课 Struts2概述

Struts2之server端验证

Struts2学习第一天——struts2基本流程与配置