package org.itscool.weber.tag;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * サーブレットパスからWebアプリケーションからの絶対パスを取得するタグです<br>
 * このタグはサーブレットパスにコンテキストパスを付加したパスを取得します<p>
 * 
 * たとえば、コンテキストパスが"http://localhost:8080/web-fw2"の場合、<br>
 * 以下のタグを指定すると<p>
 * 
 * &lt;a href='&lt;html:logic url=\"login.do\"/&gt;'&gt;ログイン&lt;a&gt;<p>
 * 
 * 次の出力結果が得られます<p>
 * 
 * &lt;a href="http://localhost:8080/web-fw2/login.do&gt;ログイン&lt;/a&gt;<p>
 * 
 * <table cellSpacing=0 cellPadding=0 border=1 >
 * <tr>
 *   <td>url</td>
 *   <td>
 *   サーブレットパスを指定します
 *   </td>
 * </tr>
 * </table>
 */
public class RealPathTag  extends TagSupport {
	/** name属性 */
    private String url;
    
    /**
     * パラメータにセットされたオブジェクトをHTMLに書き出します。<br>
     * scope属性が指定されていない場合は、次の順序でオブジェクトを検索します。
     * request, session, contextの順
    */
    public int doStartTag() throws JspException {
        try {
        	HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
            String contextPath = req.getContextPath();
            String realPath = contextPath + url;
        	
        	pageContext.getOut().print(realPath);
            
        } catch (Exception e) {
            throw new JspException(e.getMessage());
        }

        return SKIP_BODY;
    }

    public int doEndTag() {
        return EVAL_PAGE;
    }

    /**
     * 名前を取得します
     * @return path 名前
     */
    public String getUrl() {
        return url;
    }
    /**
     * 名前をセットします
     * @param path 名前
     */
    public void setUrl(String path) {
        this.url = path;
    }
}