<?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="xhtml,,xml,json,action" /> <!-- Its not a mandatory to set 'Controller' at the end of REST actions --> <constant name="struts.convention.action.suffix" value="Action, Controller" /> <constant name="struts.convention.action.mapAllMatches" value="true" /> <constant name="struts.convention.default.parent.package" value="rest-default" /> <!-- package name of REST controllers (only last part of package) --> <constant name="struts.convention.package.locators" value="rest" /> <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" /> <!-- /api is the namespace of REST calls, second part "struts" for Non-REST calls --> <constant name="struts.mapper.prefixMapping" value="/api:rest,:struts"/> <!-- set name space for REST, it should match with "struts.mapper.prefixMapping"--> <constant name="struts.rest.namespace" value="/api" /> <!-- Default extension for REST calls --> <constant name="struts.rest.defaultExtension" value="json" /> <package name="default" namespace="/" extends="struts-default, json-default"> <action name="users" class="com.aurum.struts.nonrest.UserAction"> <result name="success">/WEB-INF/jsp/user/list.jsp</result> </action> </package> <package name="api" namespace="/api" extends="rest-default"> <action name="users/*" class="com.aurum.struts.rest.UserController"> <param name="id">{1}</param> </action> </package> </struts> GET http://localhost:8080/struts2-rest-nonrest/api/users POST http://localhost:8080/struts2-rest-nonrest/api/users PUT http://localhost:8080/struts2-rest-nonrest/api/users GET http://localhost:8080/struts2-rest-nonrest/api/users/{id} DELETE http://localhost:8080/struts2-rest-nonrest/api/users/{id} http://localhost:8080/struts2-rest-nonrest/users