基于Struts2的Convention插件打造零配置的项目

本文介绍如何使用Struts2的Convention插件实现零配置项目开发,通过示例展示了如何配置Struts2并利用Convention插件简化配置过程,包括Action类的命名空间设置、页面路径定义等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Struts2的convention插件,可以打造零配置的项目,这样做有一个好处,可以统一约定大于配置的开发规范,同时,省却了每个程序员在负责不同模块时都得维护自己的struts配置文件,在包含到主struts配置文件中时,如果有一个出了错,那么可能整个项目都运行不起来。这里就做一个例子讲解一下convention插件是如何统一管理项目的配置的。
首先建立一个web项目,我这里就叫做convention,接着拷贝struts的jar包到相应的lib目录下,如图所示
[img]http://dl.iteye.com/upload/attachment/362992/3b38538f-c9bf-30f0-9bb7-214b30bf2e43.jpg[/img]

接下来要配置struts的配置文件,配置如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.ui.theme" value="simple" />
<!-- 定义默认的访问后缀 -->
<constant name="struts.action.extension" value="do" />
<!-- 开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 默认对以action,web的包极其子包起作用 -->
<constant name="struts.convention.package.locators" value="action, web" />
<!-- 设定默认的字符编码 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>

<!-- 可以自定义页面的存放路径 -->
<!-- <constant name="struts.convention.result.path" value="/WEB-INF/page" /> -->


<!-- 以下两项在生产模式中要去掉 -->
<constant name="struts.devMode" value="true"/>
<constant name="struts.convention.classes.reload" value="true" />

</struts>


这里要注意的是,如果想用convention插件进行开发,则必须要开启动态方法调用。

下面我建立一个类,完整类名称为
com.bj58.action.user.UserListAction
那么,这个UserListAction默认的包命名空间就是"/user"
下面让我们来看一下UserListAction类的代码

@Namespace("/user")
@SuppressWarnings("serial")
public class UserListAction extends ActionSupport {

public String execute() {
return "success";
}
}

@Namespace定义了这个类的包命名空间,相对应的,默认使用convention插件的时候,页面结果都是存放在/WEB-INF/content下的,如果你这个action类的包命名空间是/user,
那么你要在content文件夹下新建立个user文件夹,如图

[img]http://dl.iteye.com/upload/attachment/362996/25c3fab7-ce15-3d26-8096-ccab45b9fd0e.jpg[/img]
那么,对应这个action的页面都放在里面就可以了
默认Action如果是两个单词以上的,对应的action名称就要以"-"为中划线分割开,
那么这个Action对应的页面就是user-list.jsp
好了这个时候,我们启动tomcat,在浏览器里输入
http://localhost:8080/user/user-list.do就可以访问到userList页面了,这个我的根路径定义为"/"
如果你默认是convention,那么你的路径要加入项目名称。

接下来,再建立一个类,我叫它UserManageAction,用来做User管理的,类的代码如下:

@Results({
@Result(name="message", location="/WEB-INF/content/common/message.jsp")
})
@Namespace("/user")
@SuppressWarnings("serial")
public class UserManageAction extends ActionSupport {

@Action(value = "/user/bar", results = { @Result(name = "add", location = "/another/url.do", type = "redirect") })
public String addUI() {
return "add";
}

public String add() {
return "message";
}

public String editUI() {
return "edit";
}

public String edit() {
return "message";
}

@Action(value="/another/url")
public String another() {
return "another";
}
}


这个类里我定义了增加和修改的方法,需要注意的是,你的相对应的jsp页面的名称就不一样了,比如,addUI方法,是打开一个添加用户的页面,它默认走的是"add",那么,你的页面就要起名字为user-manage-add.jsp,你在浏览器里访问的时候,就要这么访问了
http://localhost:8080/user/user-manage!addUI.do
那么就将打开你的添加页面了。
这里的
@Results({
@Result(name="message", location="/WEB-INF/content/common/message.jsp")
})

定义了全局要访问的页面,比如你添加或者修改成功后,要跳转到一个公共的页面。
最后再说下@Action注解,这个注解,是定义一个url路径,比如对于添加方法,如果我直接访问http://localhost:8080/user/bar.do
那么将直接跳转到another方法对应的页面去,就是content下面的another文件夹下的url.jsp页面了。
这就是初步的使用convention打造基于零配置的小示例。时间仓促,还有很多不完善的地方,欢迎大家批评指正,呵呵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值