Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package de.xore.util.servlets;
  
  import  org.jetbrains.annotations.NonNls;
 import  org.jetbrains.annotations.NotNull;
 import  org.jetbrains.annotations.Nullable;
 
 
 /*
  * Created by XoreSystems (Johannes Schneider).
  * User: Johannes
  * Date: 20.12.2003
  * Time: 16:55:59
  *
  */

Date: 20.12.2003
Time: 16:55:59

Author(s):
Johannes Schneider - Xore Systems
 
 public abstract class LayoutServlet extends VelocityServlet {
   @NonNls
   public static final String CONTENT_TEMPLATE_NAME = "contentTemplateName";
   @NonNls
   private static final String EXCEPTION = "exception";
   @NonNls
   private static final String SESSION_CONTEXT = "context";
   @NonNls
   private static final String FORMATTER = "format";
   @NonNls
   protected static final String REDIRECT_URL = "REDIRECT_URL";
 
   protected boolean isStringEmptyString string ) {
     return string == null || string.length() == 0;
   }
 
   @Override
   protected void error( @NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Exception cause ) throws ServletExceptionIOException {
     StringBuilder html = new StringBuilder();
 
     html.append"<html>" );
     html.append"<body bgcolor=\"#ffffff\">" );
     html.append"<h2>Fehler</h2>" );
     html.append"<pre>" );
     html.appendcause );
     html.append"<br>" );
 
     StringWriter sw = new StringWriter();
     cause.printStackTracenew PrintWritersw ) );
 
     html.appendsw.toString() );
     html.append"</pre>" );
 
     Enumeration<?> attributeNames = request.getSession().getAttributeNames();
     while ( attributeNames.hasMoreElements() ) {
       String name = ( String ) attributeNames.nextElement();
       html.append"<li>" );
       html.appendname );
       html.append':' );
       html.appendrequest.getSession().getAttributename ) );
       html.append"</li>" );
     }
 
     html.append"</body>" );
     html.append"</html>" );
     response.getOutputStream().printhtml.toString() );
   }
 
   @Override
   protected Template handleRequest( @NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Context ctx ) throws Exception {
     HttpSession session = request.getSession();
     SessionContext sessionContext = getSessionContextsession );
     refreshSessionContextsessionContext );
     checkSecuritysessionContext );
 
     ctx.putsessionContext );
     ctx.remove );
     ctx.putnew XoreVelocityFormatterctxrequestresponsesessionContext ) );
     try {
       //Diese Methode wird in der Sub-Klasse implementiert.
       handlerequestresponsectxsessionsessionContext );
     } catch ( XoreException e ) {
       postProcessingContextrequestresponsectx );
      ctx.pute );
      ctx.put"error.vm" );
      return getLayoutTemplate();
    }
    ctx.putgetContentTemplateNamerequest ) );
    postProcessingContextrequestresponsectx );
    if ( redirectUrlrequest ) ) {
      response.sendRedirectresponse.encodeRedirectURLsessionContext.getRoot() + '/' + getRedirectUrlrequest ) ) );
    }
    return getLayoutTemplate();
  }
  @Nullable @NonNls
  private String getRedirectUrl( @NotNull HttpServletRequest request ) {
    if ( getRedirectUrl() != null ) {
      return getRedirectUrl();
    }
    return ( String ) request.getAttribute );
  }
  private boolean redirectUrl( @NotNull HttpServletRequest request ) {
    return getRedirectUrlrequest ) != null;
  }
  @Nullable @NonNls
  protected String getRedirectUrl() {
    return null;
  }

  
Nach Ablauf von handle() wird diese Methode durchgefuehrt. Dient z.B. zum Einhaengen von Standard-Werten in den Context

Z.B. einhaengen des SessioNContext

Parameters:
ctx the context
request the request
response the response
  protected abstract void postProcessingContext( @NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Context ctx );

  
Sicherheits-Ueberpruefungen (statisch bzw. deklarativ) koennen hier stattfinden. Wird direkt nach refreshSessionContext und vor handle() aufgerufen.

Parameters:
sessionContext thhe session context
Throws:
XoreException the exception
  public abstract void checkSecurity( @NotNull SessionContext sessionContext ) throws XoreException;

  
Vor dem Aufruf von handle() werden hier alle persistenten Objekte (Hibernate) aktualisiert.
  public abstract void refreshSessionContext( @NotNull SessionContext sessionContext );

  
Liefert den SessionContext zu einer bestimmten Session bzw. legt ihn neu an
  public abstract SessionContext getSessionContext( @NotNull HttpSession session );

  
Wird vom einzelnen Servlet ueberschrieben
  protected abstract String getContentTemplateName( @NotNull HttpServletRequest request );

  
Liefert das "Haupt-Template", welches entsprechend das von getContentTemplateName zur├╝ckgegebene Template inkludiert
  public abstract Template getLayoutTemplate() throws Exception;
  protected abstract void handle( @NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Context ctx, @NotNull HttpSession session, @NotNull SessionContext sessionContext ) throws Exception;
New to GrepCode? Check out our FAQ X