encoderedirecturltag.java

来自「jakarta-taglibs」· Java 代码 · 共 93 行

JAVA
93
字号
/*
 * Copyright 1999,2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.taglibs.response;

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

/**
 * JSP Tag <b>encodeRedirectUrl</b>, used to encode a URL with the session id
 * if necessary.
 * <p>
 * The <b>encodeRedirectUrl</b> tag gets the URL to encode from the body of the tag,
 * and outputs it after encoding it.
 * <p>
 * JSP Tag Lib Descriptor
 * <p><pre>
 * &lt;name&gt;encodeRedirectUrl&lt;/name&gt;
 * &lt;tagclass&gt;org.apache.taglibs.response.EncodeRedirectURLTag&lt;/tagclass&gt;
 * &lt;bodycontent&gt;JSP&lt;/bodycontent&gt;
 * &lt;info&gt;Encode a URL with the JSESSIONID for use with sendredirect.&lt;/info&gt;
 * </pre>
 *
 * @author Glenn Nielsen
 */

public class EncodeRedirectURLTag extends BodyTagSupport
{
    private String encoded_url = null;

    /**
     * Method called at start of tag, just returns EVAL_BODY_TAG
     *
     * @return EVAL_BODY_TAG
     */
    public final int doStartTag() throws JspException
    {
	return EVAL_BODY_TAG;
    }

    /**
     * Read the body of the encodeRedirectUrl tag to obtain the URL to encode,
     * then encode the URL and output it back to the page.
     *
     * @return SKIP_BODY
     */
    public final int doAfterBody() throws JspException
    {
        // Use the body of the tag as header value
        BodyContent body = getBodyContent();
        String s = body.getString().trim();
        // Clear the body since we only used it as input for the header
        // value
        body.clearBody();

	encoded_url =
	    ((HttpServletResponse)pageContext.getResponse()).encodeRedirectURL(s);

        return SKIP_BODY;
    }

    /**    
     * Output the URL encoded for redirect
     *    
     * @return EVAL_PAGE
     */               
    public final int doEndTag() throws JspException
    {                                      
        try {   
            pageContext.getOut().write(encoded_url);
        } catch(Exception e) {             
            throw new JspException("IO Error: " + e.getMessage());
        }
        return EVAL_PAGE;
    }
}

⌨️ 快捷键说明

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