📄 encodeurltag.java
字号:
/* * Core - Library of useful classes that are used in many CyberDemia projects. * Copyright (C) 2004 CyberDemia Research and Services * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * See the COPYING file located in the top-level-directory of * the archive of this library for complete text of license. */package com.cyberdemia.jsp;import javax.servlet.http.*;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import java.io.IOException;import org.apache.struts.Globals;/** * EncodeUrlTag encodes a raw URL with Struts transaction token (if available, otherwise a random token is used) * and session ID (if required). It also prepends the context path. * * @author Alexander Yap * @version $Revision: 1.1 $ at $Date: 2004/03/22 06:56:38 $ by $Author: alexycyap $ * */public class EncodeUrlTag extends BodyTagSupport{ public int doAfterBody() throws JspException { BodyContent body = getBodyContent(); String targetUrl = body.getString(); String paramPrefix = (targetUrl.indexOf("?")!=-1) ? "&" : "?"; body.clearBody(); try { HttpServletResponse response = (HttpServletResponse)pageContext.getResponse(); HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); HttpSession session = pageContext.getSession(); Object transactionToken = (session!=null) ? session.getAttribute(Globals.TRANSACTION_TOKEN_KEY) : null; boolean relativeRoot = Boolean.valueOf( m_relativeRoot ).booleanValue(); StringBuffer urlBuf = new StringBuffer(); if (!relativeRoot) { urlBuf.append(request.getContextPath()); } urlBuf.append(targetUrl); if ( (transactionToken!=null) && (Boolean.valueOf( m_token ).booleanValue())) { urlBuf.append(paramPrefix); urlBuf.append(org.apache.struts.taglib.html.Constants.TOKEN_KEY); urlBuf.append("="); urlBuf.append(transactionToken ); } else { if (Boolean.valueOf( m_random ).booleanValue()) { urlBuf.append(paramPrefix); urlBuf.append("xxx="); urlBuf.append(Math.random() ); } } String encodedUrl = response.encodeURL( urlBuf.toString() ); getPreviousOut().print( encodedUrl ); } catch (IOException ioex) { throw new JspException("Error rewriting encoded Url "+targetUrl,ioex); } return SKIP_BODY; } public void setRelativeRoot(String root) { m_relativeRoot = root; } public void setRandom(String rnd) { m_random = rnd; } public void setToken(String token) { m_token = token; } private String m_relativeRoot = "false"; private String m_random = "true"; private String m_token = "true";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -