【struts2笔记二】配置struts2返回jsp视图

基于注解的配置返回jsp视图

本篇接上文使用struts2-convention-plugin及注解注册action,记录使用convention插件及注解的情况下,如何返回jsp视图

1.convention插件配置

convention插件很多配置相都有默认值,一般来说直接使用是没用问题的,但是为了学习,搞清楚具体的配置项,每一项都会配置,即使只是默认值。

1.1.配置jsp视图的存放位置

在默认的情况下jsp视图页面都应该存储在WEB-INF/content下,可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。现在我们将它配置到page文件夹

<!-- 配置jsp试图存放位置 -->
<constant name="struts.convention.result.path" value="/WEB-INF/page" />

1.2.配置扫描相关

<!-- 扫描什么包 -->
<constant name="strutsnvention.package.locators" value="action" />
<!-- 扫描那些后缀的类-->
<constant name="struts.convention.action.suffix" value="Action"/> 
<!-- 默认名称转换规则 骆驼峰变小写 并在中间加上- -->
<constant name="struts.convention.action.name.separator" value="-" />
<!-- 是否扫描没有加@Action的类 -->
<constant name="struts.convention.action.mapAllMatches" value="true"/>    
<!-- 扫描web-service 架包下的action -->
<constant name="struts.convention.action.includeJars" value=".*?/web-service.*?jar(!/)?,.*?/web-service*?jar(!/)?"></constant>

2.创建java action

在com.fyuhome.action.test包下建立action。

package com.fyuhome.action.test;

public class TestSuAction  {

    public String execute() throws Exception {  
        System.out.println("execute@@@@@@@@@@@@@@@@@@@@@@");  
        return "success" ;  
    } 
    public String add() throws Exception {  
        System.out.println("add@@@@@@@@@@@@@@@@@@@@@@");  
        return "add" ;  
    } 

    public String test() throws Exception {  
        System.out.println("add@@@@@@@@@@@@@@@@@@@@@@");     
        return "test" ;  
    } 
}

无需任何配置(约定大于配置),该类自动变成action。
由于该类在com.fyuhome.action.test包下,而配置的扫描路径为action,故该action的命名空间为test。
按照约定action的名称是类名称去掉Action的小写,如果存在骆驼峰形式的命名,则在骆驼峰之间加上-(由struts.convention.action.name.separator配置)
看代码我实现了execute 方法,故访问http://localhost:8080/web-war/test/test-su.action 即可访问到execute。
其他的方法通过动态方法的方式访问,比如add方法的访问地址为http://localhost:8080/web-war/test/test-su!add.action

3.创建jsp视图

点击第二章节的路径,返现项目报错了,提示没有找到视图。这是由于我们没有在视图文件夹创建相关的jsp导致的。
阅读第二章节的代码,发现相关方法中返回了success test add三个字符串,同时该action的命名空间为/test,故

<constant name="struts.convention.result.path" value="/WEB-INF/page" />

该目录下建立test文件夹,并在该文件夹下建立test-su-success.jsp test-su-test.jsp test-su-add.jsp。命名规则是action名称-返回值.jsp。
按该规则建立的jsp自动会被注册成返回视图,即使并没有对应的action。
注册上视图
如图所示none视图并没有对应的action,但是仍然被注册成视图。

4.使用注解进行特殊配置

struts2的注解的使用可以参考官方文档

4.1@Action注解将!转换成-

如果不希望在接口调用时使用!,防止后台使用的框架被暴露,可以在具体的方法中使用@Action注解。

@Action(value = "test-su-add")
public String add() throws Exception {  
    System.out.println("add@@@@@@@@@@@@@@@@@@@@@@");  
    return "add" ;  
}

4.2使用results配置返回页面

由于使用了@Action注解,add方法已经被独立出来,action的名称变成test-su-add,这个action会自动价值test-su-add.jsp和test-su-add-*.jsp,如果需要指定加载其他视图,可以使用results属性。

@Action(value = "test-su-add",results = {@Result(name="add",location="test-su-add.jsp"),@Result(name="error",location="test-su-error.jsp")})
public String add() throws Exception {  
    System.out.println("add@@@@@@@@@@@@@@@@@@@@@@");  
    return "dd" ;  
} 

加载的视图

5.使用配置的形式将!转换为-

使用@Action注解的形式在方法比较麻烦,而且jsp视图的默认名称会发生变化,是同配置文件通配符可以解决再过问题
在struts.xml配置文件中加入

<package name="basePackage" extends="struts-default">
    <action name="test_su_*" method="{1}" class="com.fyuhome.action.test.TestSuAction"></action>
</package>

即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值