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

📄 pathmappingrulerimpl.java

📁 一个简单的java邮件系统源码
💻 JAVA
字号:
package com.easyjf.web.core;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.easyjf.web.IPathMappingRuler;

/**
 * 
 * <p>
 * Title: 简单的IPathMappingRuler默认实现示例
 * </p>
 * <p>
 * Description: 实现IPathMappingRuler接口,用于处理用户请求路径
 * </p>
 * <p>
 * Copyright: Copyright (c) 2006
 * </p>
 * <p>
 * Company: www.easyjf.com
 * </p>
 * 
 * @author stef_wu、大峡
 * @version 0.7
 */
public class PathMappingRulerImpl implements IPathMappingRuler {
	private String moduleName = "";

	private Map params = null;

	private String URIpath;// 包括应用名称,不带参数的全路径.其作用用来处理绝对路径及相对路径情况。

	private String servletPath;// 不带参数的路径,通过其进行Ruler转换。

	private String command;// 解析后的命令

	public PathMappingRulerImpl(){
		
	}
	
	public PathMappingRulerImpl(HttpServletRequest request) {
		String servletPath = request.getPathInfo();// 这个得到的是应用的实际路径,也即?号后面的数据
		String uriPath = request.getRequestURI();// URI是访问网址后面的全路径,也即/开始后面的部分。但不包括?后面的数据
		if (servletPath == null)
			servletPath = request.getServletPath();// 这里主要防止pathInfo为null的情况,当用户在web.xml没有作/*的配置时,将会出现
		
		this.URIpath = uriPath;
		this.servletPath = servletPath;
		doPathParse();
	}

	public String getModuleName() {
		return moduleName;
	}

	public Map getParams() {
		// TODO Auto-generated method stub
		return params;
	}

	private void doPathParse() {
		String path = this.servletPath;
		if(path==null||path.equals(""))return;
		if (path.charAt(0) == '/')
			path = path.substring(1);// 过滤掉第一个"/"符号
		String[] s = path.split("/");
		if (s != null) {
			if (s.length > 0)// 处理模板名称
			{
				moduleName ="/"+ cancelEJFTag(s[0]);				
			}
			if (s.length > 1)// 处理第二个参数
			{
				s[1]=cancelEJFTag(s[1]);
				if (!isParas(s[1]))// 称判断是否是属于参数,不是则直接赋值为命令
					command = s[1];
				else {
					if (params == null)
						params = new HashMap();
					String key = s[1].substring(0, s[1].indexOf("="));
					String value = s[1].substring(s[1].indexOf("=")+1);
					params.put(key, value);
				}
			}
			if (s.length > 2)// 处理第三个参数
			{
				if(params==null)params=new HashMap();
				for(int i=2;i<s.length;i++){
				s[i]=cancelEJFTag(s[i]);
				String v=s[i];
				String key;
				String value;
				if(isParas(v))
				{
					key = s[i].substring(0, s[i].indexOf("="));
					value = s[i].substring(s[i].indexOf("=")+1);
				}
				else
				{
					 key =getDefaultParamName(i-2);
					 value = s[i];
				}		
				params.put(key,value);
				}
			}		
		}
		/*
		 * if (path.lastIndexOf(".ejf") > 0) { moduleName = path.substring(0,
		 * path.lastIndexOf(".ejf")); } else { path = this.URIpath; if
		 * (path.indexOf("/ejf/") == 0) path = path.substring(4); int n =
		 * path.lastIndexOf('/'); if (n > 0) { para = path.substring(n + 1);
		 * moduleName = path.substring(0, n); if (para.lastIndexOf('.') > 0)
		 * para = para.substring(0, para.lastIndexOf('.')); } } if (para != null &&
		 * (!para.equals(""))) { this.hasPara = true; //this.paras =
		 * para.split("_"); }
		 */
	}	
	/**
	 * 取消参数中结尾的.ejf
	 * @param s
	 * @return
	 */
	protected String  cancelEJFTag(String s)
	{
		if(s.toLowerCase().endsWith(".ejf"))return s.substring(0,s.length()-4);
		else return s;
	}
	protected String getDefaultParamName(int i)
	{
		String ret="cid";
    //下面添加处理默认第二、第三个参数的名称
		if(i==1)ret="page";
		if(i==2)ret="other";
		return ret;
	}
	protected boolean isParas(String s) {
		return s.indexOf("=") > 0;// 包含=号的即为参数
	}

	public String getCommand() {
		return command;
	}


	public String getServletPath() {
		return servletPath;
	}

	public void setServletPath(String servletPath) {
		this.servletPath = servletPath;
	}

	public String getURIpath() {
		return URIpath;
	}

	public void setURIpath(String ipath) {
		URIpath = ipath;
	}

}

⌨️ 快捷键说明

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