9.Struts 2配置详解

1.Struts 2执行过程解析

简单程序运行流程图如下:
logon.jsp——>StrutsPrepareAndExecuteFilter——>Action——>Result——>manager.jsp

1.1web.xml

Struts 2框架需要在web.xml中配置其核心控制器——StrutsPrepareAndExecuteFilter
用于对框架进行初始化,以及处理所有的请求。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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">
	<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>
</web-app>

StrutsPrepareAndExecuteFilter作为一个Filter在web应用中运行,他负责拦截所有的用户请求,当用户请求达到时,该Filter会过滤用户请求

2.Action

在Struts 2框架上,控制器由两部分组成,分别如下:
核心控制器(Filter),用于拦截用户请求,对请求进行处理.
业务控制器(Action):调用相应的Model类实现业务处理,返回结果

<?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="login" class="action.UserAction">
			<result name="success">main.jsp</result>
			<result name="error">login.jsp</result>
		</action>
		</struts>

2.Struts 2的配置文件

2.1Struts.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>
<constant name="" value=""/>
<action name="" class="">
			<result name=""></result>
</action>
</struts>

constant元素:用于配置常量,通过常量的配置,改变struts 2框架的一些行为,从而满足不同应用的需求.name表示敞亮的名称,value属性表示常量的值
比如:解决乱码:

 constant name="struts.il8n.encoding" value="UTF-8"/>

name:为必须的并且是唯一的,用来指定包的名称(被其他包引用)
extends:类似java中extends关键字,指定要拓展的包
namespace:可选属性,指该包中action的命名空间

2.2 拆分配置文件

<struts>
  <include file="action/Userstruts.xml"></include>
  <include file="action/Housestruts.xml"></include>
</struts>

3.Action的配置

action的作用:

  1. 最重要的作用是给指定的请求封装需要做的实际工作(调用特定的业务处理类)
  2. 为数据的转移提供场所
  3. 帮助框架决定由那个结果呈现请求响应

method属性:
指定具体方法执行处理逻辑

3.1通配符的使用

   <action name="*User" class="action.UserAction" method="{1}">
   		<result name="success">{1}_success.jsp</result>
   		<result name="input">{1}.jsp</result>
   		<result name="error">error.jsp</result>
   	</action>

*:只要是User结尾的URL,都可以进入这个action
{1}:使用相对用的,也就是星号所代表的一个字符串

3.2配置默认的action

解决:不存在的action
元素:<default-action-ref/》
注意:每个package下只能有一个元素


	<package name="default" namespace="/" extends="struts-default">
	<default-action-ref name="defaultAction">
	<action name="defaultAction">
	<result>error.jsp</result>
</action>
	</package>

4.Result配置

两部分组成:
所代表的实际资源的位置及result名称
另一部分是result类型,由result元素的type属性进行设定

4.1常用结果类型

1.dispatcher类型(默认)
转发
2.redirect类型
重定向
3.redirectAction类型
重定向到一个action。也就是说,当请求完成后,需要在另一个action中继续处理请求

4.2动态结果

4.3全局结果

在一些情况下,多个action可能需要访问一个结果,这时需要配置全局结果来满足多个action共享一个结果的要求

<package name="demo1"  extends="struts-default">
		<global-results>
			<result name="success">showHouse.jsp</result>
			<result name="error">login.jsp</result>
		</global-results>

猜你喜欢

转载自blog.csdn.net/qq_43051879/article/details/84766944
今日推荐