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

📄 securetag.java

📁 Struts数据库项目中的一个实例
💻 JAVA
字号:
package com.relationinfo.webapp.taglib;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.relationinfo.Constants;
import com.relationinfo.webapp.util.SslUtil;


/**
 * This tag library is designed to be used on a JSP
 * to switch HTTP -> HTTPS protocols and vise versa.
 *
 * If you want to force the page to be viewed in SSL,
 * then you would do something like this:<br /><br />
 * <pre>
 * &lt;tag:secure /&gt;
 * or
 * &lt;tag:secure mode="secured" /&gt;
 * </pre>
 * If you want the force the page to be viewed in
 * over standard http, then you would do something like:<br />
 * <pre>
 * &lt;tag:secure mode="unsecured" /&gt;
 * </pre>
 * @jsp.tag name="secure"
 *          bodycontent="empty"
 *
 * @author cao guangxin
 *
 * Contributed by:
 *
 * XEsoft GmbH
 * Oskar-Messter-Strasse 18
 * 85737 Ismaning, Germany
 * http://www.xesoft.com
 */
public class SecureTag extends BodyTagSupport {
	private static final long serialVersionUID = 3618697483291867440L;
	public static final String MODE_SECURED = "secured";
    public static final String MODE_UNSECURED = "unsecured";
    public static final String MODE_EITHER = "either";

    //~ Instance fields ========================================================

    private final Log log = LogFactory.getLog(SecureTag.class);
    protected String TAG_NAME = "Secure";
    private String mode = MODE_SECURED;
    private String httpPort = null;
    private String httpsPort = null;

    //~ Methods ================================================================

    /**
     * Sets the mode attribute. This is included in the tld file.
     *
     * @jsp.attribute
     *     description="The mode attribute (secure | unsecured)"
     *     required="false"
     *     rtexprvalue="true"
     */
    public void setMode(String aMode) {
        mode = aMode;
    }

    public int doStartTag() throws JspException {
        // get the port numbers from the application context
        Map config =
            (HashMap) pageContext.getServletContext().getAttribute(Constants.CONFIG);

        httpPort = (String) config.get(Constants.HTTP_PORT);

        if (httpPort == null) {
            httpPort = SslUtil.STD_HTTP_PORT;
        }

        httpsPort = (String) config.get(Constants.HTTPS_PORT);

        if (httpsPort == null) {
            httpsPort = SslUtil.STD_HTTPS_PORT;
        }

        return SKIP_BODY;
    }

    public int doAfterBody() throws JspException {
        return SKIP_BODY;
    }

    public int doEndTag() throws JspException {
        if (mode.equalsIgnoreCase(MODE_SECURED)) {
            if (pageContext.getRequest().isSecure() == false) {
                String vQueryString =
                    ((HttpServletRequest) pageContext.getRequest()).getQueryString();
                String vPageUrl =
                    ((HttpServletRequest) pageContext.getRequest()).getRequestURI();
                String vServer = pageContext.getRequest().getServerName();

                StringBuffer vRedirect = new StringBuffer("");
                vRedirect.append("https://");
                vRedirect.append(vServer + ":" + httpsPort + vPageUrl);

                if (vQueryString != null) {
                    vRedirect.append("?");
                    vRedirect.append(vQueryString);
                }

                if (log.isDebugEnabled()) {
                    log.debug("attempting to redirect to: " + vRedirect);
                }

                try {
                    ((HttpServletResponse) pageContext.getResponse()).sendRedirect(vRedirect.toString());

                    return SKIP_PAGE;
                } catch (Exception exc2) {
                    throw new JspException(exc2.getMessage());
                }
            }
        } else if (mode.equalsIgnoreCase(MODE_UNSECURED)) {
            if (pageContext.getRequest().isSecure() == true) {
                String vQueryString =
                    ((HttpServletRequest) pageContext.getRequest()).getQueryString();
                String vPageUrl =
                    ((HttpServletRequest) pageContext.getRequest()).getRequestURI();
                String vServer = pageContext.getRequest().getServerName();

                StringBuffer vRedirect = new StringBuffer("");
                vRedirect.append("http://");
                vRedirect.append(vServer + vPageUrl);

                if (vQueryString != null) {
                    vRedirect.append("?");
                    vRedirect.append(vQueryString);
                }

                try {
                    ((HttpServletResponse) pageContext.getResponse()).sendRedirect(vRedirect.toString());

                    return SKIP_PAGE;
                } catch (Exception exc2) {
                    throw new JspException(exc2.getMessage());
                }
            }
        } else if (mode.equalsIgnoreCase(MODE_EITHER)) {
            return EVAL_PAGE;
        } else {
            throw new JspException("Illegal value for the attribute mode: " +
                                   mode);
        }

        return EVAL_PAGE;
    }
}

⌨️ 快捷键说明

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