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

使用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打造基于零配置的小示例。时间仓促,还有很多不完善的地方,欢迎大家批评指正,呵呵。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值