⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 restfulactionmapper.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   RestfulActionMapper.java

package org.apache.struts2.dispatcher.mapper;

import com.opensymphony.xwork2.config.ConfigurationManager;
import java.net.URLDecoder;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.RequestUtils;

// Referenced classes of package org.apache.struts2.dispatcher.mapper:
//			ActionMapping, ActionMapper

public class RestfulActionMapper
	implements ActionMapper
{

	protected static final Log LOG = LogFactory.getLog(org/apache/struts2/dispatcher/mapper/RestfulActionMapper);

	public RestfulActionMapper()
	{
	}

	public ActionMapping getMapping(HttpServletRequest request, ConfigurationManager configManager)
	{
		String uri = RequestUtils.getServletPath(request);
		int nextSlash = uri.indexOf('/', 1);
		if (nextSlash == -1)
			return null;
		String actionName = uri.substring(1, nextSlash);
		HashMap parameters = new HashMap();
		try
		{
			StringTokenizer st = new StringTokenizer(uri.substring(nextSlash), "/");
			boolean isNameTok = true;
			String paramName = null;
			if (st.countTokens() % 2 != 0)
			{
				isNameTok = false;
				paramName = (new StringBuilder()).append(actionName).append("Id").toString();
			}
			while (st.hasMoreTokens()) 
				if (isNameTok)
				{
					paramName = URLDecoder.decode(st.nextToken(), "UTF-8");
					isNameTok = false;
				} else
				{
					String paramValue = URLDecoder.decode(st.nextToken(), "UTF-8");
					if (paramName != null && paramName.length() > 0)
						parameters.put(paramName, paramValue);
					isNameTok = true;
				}
		}
		catch (Exception e)
		{
			LOG.warn(e);
		}
		return new ActionMapping(actionName, "", "", parameters);
	}

	public String getUriFromActionMapping(ActionMapping mapping)
	{
		String base = (new StringBuilder()).append(mapping.getNamespace()).append(mapping.getName()).toString();
		Iterator iterator = mapping.getParams().entrySet().iterator();
		do
		{
			if (!iterator.hasNext())
				break;
			java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
			String name = (String)entry.getKey();
			if (!name.equals((new StringBuilder()).append(mapping.getName()).append("Id").toString()))
				continue;
			base = (new StringBuilder()).append(base).append("/").append(entry.getValue()).toString();
			break;
		} while (true);
		return base;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -