在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>