在Struts2.1开始,Struts2通过引入Convention插件来支持零配置,也就是说我们不需要配置struts.xml文件,Struts2通过约定来自动配置。要实现这个功能我们只需要把struts2-convention-plugin-2.1.6包加入到我们的项目中。
先来了解一下Convention吧,Convention插件完全工作在后台,Convention插件默认的搜索位于struts,struts2,action或者actions包下的java类。Action类必须实现com.opensymphony.xwork2.Action或者名字一Action结尾。 那么现在Convention插件就知道了为一个特别的请求调用相应的Action类,下一步是找到跳转的视图,Convention插件会默认的从WEB-INF/content目录中搜索。现在虽然Convention插件知道视图在那儿,但是并不知道去使用那个视图文件,这就得根据Action类返回的结果。他的约定是:actionName+resultcode+suffix或者actionName+suffix。
看下面这个例子:
WelcomeUser继承了ActionSupport:
package com.zcl.struts;
import com.opensymphony.xwork2.ActionSupport;
public class WelcomeUser extends ActionSupport {
private String userName ;
private String message ;
public String execute(){
message = "Welcome " + userName ;
return SUCCESS ;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
index.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>convention</title>
</head>
<body>
<s:form action="welcome-user">
<s:textfield name="userName" label="User Name" />
<s:submit></s:submit>
</s:form>
</body>
</html>
下面我们在WEB_INF下建立content目录,然后新建welcome-user.jsp文件取得message。
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>convention</title>
</head>
<body>
<h2>message :<s:property value="message"/></h2>
</body>
</html>
运行结果: