Java/Servlets/URL

Материал из Java эксперт
Перейти к: навигация, поиск

Get Base Url for servlet

 
/* 
 * Copyright (C) 2006 Methodhead Software LLC.  All rights reserved.
 * 
 * This file is part of TransferCM.
 * 
 * TransferCM is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 * 
 * TransferCM 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 General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * TransferCM; if not, write to the Free Software Foundation, Inc., 51 Franklin St,
 * Fifth Floor, Boston, MA  02110-1301  USA
 */

import javax.servlet.http.HttpServletRequest;
import java.io.File;
public class ServletUtils {
  // constructors /////////////////////////////////////////////////////////////
  // constants ////////////////////////////////////////////////////////////////
  // classes //////////////////////////////////////////////////////////////////
  // methods //////////////////////////////////////////////////////////////////
  /**
   * NOT UNIT TESTED Returns the URL (including query parameters) minus the scheme, host, and
   * context path.  This method probably be moved to a more general purpose
   * class.
   */
  public static String getRelativeUrl(
    HttpServletRequest request ) {
    String baseUrl = null;
    if ( ( request.getServerPort() == 80 ) ||
         ( request.getServerPort() == 443 ) )
      baseUrl =
        request.getScheme() + "://" +
        request.getServerName() +
        request.getContextPath();
    else
      baseUrl =
        request.getScheme() + "://" +
        request.getServerName() + ":" + request.getServerPort() +
        request.getContextPath();
    StringBuffer buf = request.getRequestURL();
    if ( request.getQueryString() != null ) {
      buf.append( "?" );
      buf.append( request.getQueryString() );
    }
    return buf.substring( baseUrl.length() );
  }
  /**
   * NOT UNIT TESTED Returns the base url (e.g, <tt>http://myhost:8080/myapp</tt>) suitable for
   * using in a base tag or building reliable urls.
   */
  public static String getBaseUrl( HttpServletRequest request ) {
    if ( ( request.getServerPort() == 80 ) ||
         ( request.getServerPort() == 443 ) )
      return request.getScheme() + "://" +
             request.getServerName() +
             request.getContextPath();
    else
      return request.getScheme() + "://" +
             request.getServerName() + ":" + request.getServerPort() +
             request.getContextPath();
  }
  /**
   * Returns the file specified by <tt>path</tt> as returned by
   * <tt>ServletContext.getRealPath()</tt>.
   */
  public static File getRealFile(
    HttpServletRequest request,
    String path ) {
    return
      new File( request.getSession().getServletContext().getRealPath( path ) );
  }
  // properties ///////////////////////////////////////////////////////////////
  // attributes ///////////////////////////////////////////////////////////////
}





Get Relative Url for servlet

 
/* 
 * Copyright (C) 2006 Methodhead Software LLC.  All rights reserved.
 * 
 * This file is part of TransferCM.
 * 
 * TransferCM is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 * 
 * TransferCM 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 General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * TransferCM; if not, write to the Free Software Foundation, Inc., 51 Franklin St,
 * Fifth Floor, Boston, MA  02110-1301  USA
 */

import javax.servlet.http.HttpServletRequest;
import java.io.File;
public class ServletUtils {
  // constructors /////////////////////////////////////////////////////////////
  // constants ////////////////////////////////////////////////////////////////
  // classes //////////////////////////////////////////////////////////////////
  // methods //////////////////////////////////////////////////////////////////
  /**
   * NOT UNIT TESTED Returns the URL (including query parameters) minus the scheme, host, and
   * context path.  This method probably be moved to a more general purpose
   * class.
   */
  public static String getRelativeUrl(
    HttpServletRequest request ) {
    String baseUrl = null;
    if ( ( request.getServerPort() == 80 ) ||
         ( request.getServerPort() == 443 ) )
      baseUrl =
        request.getScheme() + "://" +
        request.getServerName() +
        request.getContextPath();
    else
      baseUrl =
        request.getScheme() + "://" +
        request.getServerName() + ":" + request.getServerPort() +
        request.getContextPath();
    StringBuffer buf = request.getRequestURL();
    if ( request.getQueryString() != null ) {
      buf.append( "?" );
      buf.append( request.getQueryString() );
    }
    return buf.substring( baseUrl.length() );
  }
  /**
   * NOT UNIT TESTED Returns the base url (e.g, <tt>http://myhost:8080/myapp</tt>) suitable for
   * using in a base tag or building reliable urls.
   */
  public static String getBaseUrl( HttpServletRequest request ) {
    if ( ( request.getServerPort() == 80 ) ||
         ( request.getServerPort() == 443 ) )
      return request.getScheme() + "://" +
             request.getServerName() +
             request.getContextPath();
    else
      return request.getScheme() + "://" +
             request.getServerName() + ":" + request.getServerPort() +
             request.getContextPath();
  }
  /**
   * Returns the file specified by <tt>path</tt> as returned by
   * <tt>ServletContext.getRealPath()</tt>.
   */
  public static File getRealFile(
    HttpServletRequest request,
    String path ) {
    return
      new File( request.getSession().getServletContext().getRealPath( path ) );
  }
  // properties ///////////////////////////////////////////////////////////////
  // attributes ///////////////////////////////////////////////////////////////
}





Servlet: URL redirect

 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UrlRedirect extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, java.io.IOException {
        String contextPath= "http://www.jexp.ru";
    response.sendRedirect(response.encodeRedirectURL(contextPath + "/maps"));
  }
}





Servlet: URL rewrite

 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UrlRewrite extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, java.io.IOException {
    response.setContentType("text/html");
    java.io.PrintWriter out = response.getWriter();
    String contextPath = request.getContextPath();
    String encodedUrl = response.encodeURL(contextPath + "/default.jsp");
    out.println("<html>");
    out.println("<head>");
    out.println("<title>URL Rewriter</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>This page will use URL rewriting if necessary</h2>");
    out.println("Go to the default.jsp page .");
    out.println("</body>");
    out.println("</html>");
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, java.io.IOException {
    doGet(request, response);
  }
}