Struts2【配置】 (二)

简介: 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…

Struts常量

Struts2默认的访问后缀是.action……

微信图片_20220411171834.jpg

修改默认访问路径

有的时候,可能根据项目的需要…我想后缀名默认并不是.action,那我该怎么办呢??

我们在jar包上找到它的配置文件…

微信图片_20220411171913.jpg

我们发现它的默认值是action,,

值得注意的是:两个逗号并不是多余的

我们不可能是直接修改jar包中的配置文件的,在struts.xml文件中提供了constant节点供我们修改struts的常量

微信图片_20220411171917.jpg

前面已经说了,两个逗号并不是多余的。那么直接在配置文件中配置action时,会怎么样:

<constant name="struts.action.extension" value="action"/>

微信图片_20220411171920.jpg

也就是说,“,”号能够匹配空格键

举例子说明:

  • 如果配置后缀为action。那么后缀一定要写action
  • 如果配置后缀为action,do,。那么后缀可以是action,可以是do,也可以不写
  • 如果配置后缀为action,,。那么后缀可以是action,可以不写


Struts常用的常量

微信图片_20220411172028.jpg

<struts>
    <!-- 0. 请求数据编码 -->
     <constant name="struts.i18n.encoding" value="UTF-8"/>
    <!-- 1. 修改Struts默认的访问后缀 -->
    <constant name="struts.action.extension" value="action,do,"></constant>
    <!-- 2. 修改xml自动重新加载 -->
    <constant name="struts.configuration.xml.reload" value="true"/>
    <!-- 3. 开启动态方法调用 (默认不开启)-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <!-- 4. 修改上传文件的最大大小为30M -->
    <constant name="struts.multipart.maxSize" value="31457280"/>
</struts>

只有动态方法调用是我们没有接触过的。

那动态方法调用是怎么回事呢???这是样的:在action节点不配置method属性,在地址栏使用资源名称!方法名的方式去调用业务方法

微信图片_20220411172032.jpg


跳转全局视图

为什么需要跳转全局视图?

首先,我们还是来看一个需求:现在我有两个Action,PrivilegeAction和CategoryAction

  • PrivilegeAction
public class PrivilegeAction extends ActionSupport {
    public String login() {
        System.out.println("我是登陆");
        return "success";
    }
    public String register() {
        System.out.println("我是注册");
        return "success";
    }
}

CategoryAction

public class CategoryAction extends ActionSupport {
    public String add() {
        System.out.println("我是添加");
        return "success";
    }
    public String find() {
        System.out.println("我是查找");
        return "success";
    }
}

在struts.xml文件中配置

    <action name="privilege_*" class="privilegeaction.PrivilegeAction" method="{1}">
        <result name="success">/index.jsp</result>
    </action>
    <action name="category_*" class="privilegeaction.CategoryAction" method="{1}">
        <result name="success">/index.jsp</result>
    </action>

我们发现一个问题,只要是方法返回值是success,那么就跳转到首页….如果有大量Action方法返回的都是success,那么就要写很多很多个result节点了..


使用跳转全局视图

代码就可以变成是这样子了,注意:global-results节点需要在action节点的上面

<package name="privilige" extends="struts-default" >
    <global-results>
        <result name="success">/index.jsp</result>
    </global-results>
    <action name="privilege_*" class="privilegeaction.PrivilegeAction" method="{1}">
    </action>
    <action name="category_*" class="privilegeaction.CategoryAction" method="{1}">
    </action>
</package>

效果:

微信图片_20220411172324.jpg



目录
相关文章
|
安全 Java API
Struts2
访问web资源 1》使用servlet API解耦的方式,获取的方法较少   1.使用ActionContext,一个一个获取,效率不高   2.实现XxxAware接口(ApplicationAware,SessionAware.....)推荐,
44 0
|
设计模式 开发框架 安全
Struts,你为何死不悔改!
上篇文章《诡异的字符串问题。。。》的问题已经解决了,我一直相信「团队力量的重要性」,虽然我不能保证加入群的每一个人都是乐于分享的同学,但我始终群里的各位同学总会慢慢被我们这种乐于分享的群氛围所影响。就以上篇文章为例,群里的 Univechige 同学专门给 IntelliJ IDEA 官方发邮件寻求原因,这便是一个好的开端,我相信有各位同学的共同维护,后面群氛围会越来越好。下面给出 IDEA 官方的答复,见下图。
178 0
Struts,你为何死不悔改!
|
Java
Struts2【配置】 (一)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
102 0
Struts2【配置】 (一)
|
Java 应用服务中间件
Struts2【配置】 (三)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
89 0
Struts2【配置】 (三)
|
Web App开发 Java Apache
struts
运行流程 客户端浏览器通过HTTP请求,访问控制器,然后控制器读取配置文件,然后执行服务器端跳转,执行相应的业务逻辑,然后,在调用模型层,取得的结果展示给jsp页面,最后返回给客户端浏览器 组成部分 struts 视图 标签库 控制器 action 模型层 ActionFrom JavaBean struts maven 安装官网 : https://struts.
1014 0
|
Web App开发 XML Java
JakartaEE Struts2使用
1. Struts2下载 解压后的目录结构如下: 图1.png 从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的: 操作(Actions...
1031 0
|
Java 数据库连接
[Struts]HibernatePlugIn for Struts(转贴)
这个Plugin的作用是在Struts应用程序启动时进行hibernate的初始化操作,原文HibernatePlugIn for Struts,步骤很简单: 1、在struts-config.xml里增加: <plug-in className="org.
1171 0
|
SQL JavaScript 前端开发
|
Java 数据安全/隐私保护 开发者