[Java Web]Struts2加起来(一个)

2022-07-06 09:17:32 浏览数 (1)

大家好,又见面了,我是全栈君。

Struts2环境配置

  1. 进口Struts2的需要jar包
  2. 在WEB-INF/classes(src)文件夹下创建struts.xml文件
  3. 在web.xml文件里加入Struts过滤器信息

经常使用配置文件

  1. struts.xml:用于存放Action映射关系、设置Struts配置信息
  2. web.xml:用于配置容器的Struts过滤器,一般配置例如以下: <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>
  3. struts-default.xml:Struts2的默认配置信息,一般不建议改动
  4. default.properties:Struts2的默认设置信息。相同不建议改动

Action

Struts2的核心功能,一般由两部分组成:struts.xml的Action映射和使用Java编写的Action实体类。在struts.xml中通常使用<action>、<result>、<package>等一系列标签完毕Action的映射,它们的属性分别有:

  1. package 属性 是否必须 描写叙述 name 是 包名。作为其他包应用本包的标记 extends 否 设置本包继承其他包 namespace 否 设置包的命名空间 abstact 否 设置为抽象包
  2. action 属性 是否必须 描写叙述 name 是 请求的Action名称 class 否 Action处理类相应详细路径 method 否 指定Action中的方法名 converter 否 指定Action使用的类型转换器
  3. result 属性 是否必须 描写叙述 name 否 Action返回视图名称。默觉得success type 否 返回结果类型,默觉得dispatcher

一个简单地Action映射能够写成:

代码语言:javascript复制
<package name="admin" extends="struts-default">
	<action name="welcome" class="struts.action.WelcomeAction">
		<result>/welcome.jsp</result>
	</action>
</package>

Action实体类须要继承ActionSupport类而且重写他的execute的方法(或者其它的方法,无參返回String类型而且与action标签中method属性相应就可以)。而且返回与result标签name属性相应的字符串。与上面配置相应的实体类为:

代码语言:javascript复制
public class WelcomeAction extends ActionSupport {
	public String execute() {
		return SUCCESS;
	}
}

动态方法调用(DMI)

一个Action中仅能配置一个method在实际应用中十分不方便,Struts2支持在url中指定调用Action类的不同方法。格式为”Action名!方法名”。

在使用此功能前须要在struts.xml中加入例如以下代码开启DMI:

代码语言:javascript复制
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

之后在Action类中加入返回值为String类型的相应方法就可以轻松调用。

通配符(wildcard)

Struts2支持通配符操作。使得在须要配置大量action时通过约定格式降低工作量。它的使用方法是使用”*”取代easy变换的单词,然后用{n}取出。n代表第n个通配符。比如一个程序须要有4个Action。名称分别为DogAction、CatAction、BirdAction和FishAction。

假设依照之前的方法则须要配置4个action映射关系。可是使用通配符后仅仅须要以下一个action就可以:

代码语言:javascript复制
<action name="buy*" class="struts.action.{1}Action">
		<result>/pay.jsp</result>
</action>

通配符的作用域很广,通过action的name能够改变method、class和result的结果等。常常使用能够节约很多时间。可是须要事先良好的一致性格公式。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117430.html原文链接:https://javaforall.cn

0 人点赞