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

📄 respageservice.java

📁 博克后台的开发,有很多使用的方法和例子可以提供给大家学习
💻 JAVA
字号:
/*
 * Created on 2005-10-14
 *
 * 扩展PageService, 使其可带session状态管理的可选功能
 */
package com.emk.manage;

import java.io.IOException;

import javax.servlet.ServletException;

import org.apache.tapestry.ApplicationRuntimeException;
import org.apache.tapestry.IComponent;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.StaleSessionException;
import org.apache.tapestry.Tapestry;
import org.apache.tapestry.engine.IEngineServiceView;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.engine.PageService;
import org.apache.tapestry.request.RequestContext;
import org.apache.tapestry.request.ResponseOutputStream;

/**
 * 扩展PageService, 使其可带session状态管理的可选功能 
 * 
 * @author Administrator
 */
public class ResPageService extends PageService {
    /**
     *  Encoded into URL if pageService was stateful.
     *  
     **/

    private static final String STATEFUL_ON = "1";

    /**
     *  Encoded into URL if pageService was not stateful.
     * 
     **/

    private static final String STATEFUL_OFF = "0";
    
    
	
	/* (non-Javadoc)
	 * @see org.apache.tapestry.engine.IEngineService#getLink(org.apache.tapestry.IRequestCycle, org.apache.tapestry.IComponent, java.lang.Object[])
	 */
	public ILink getLink(IRequestCycle cycle, IComponent component, Object[] parameters) {
		// TODO Auto-generated method stub
       if (Tapestry.size(parameters) != 1 && Tapestry.size(parameters) !=2){
      // 	System.out.println("parameters==size====="+parameters.length);
        throw new IllegalArgumentException(
            Tapestry.format("service-single-parameter", Tapestry.PAGE_SERVICE));
       }
        
        String[] context =new String[1];

        int i = 0;

        //System.out.println("stateful==============="+(String) (cycle.getEngine().isStateful() ? STATEFUL_ON : STATEFUL_OFF));
        
        //System.out.println("parameters==size====="+parameters.length);
        


        String pageName =(String) parameters[0];
        context[i++] = (String) parameters[0];  //pageName
        
        if (Tapestry.size(parameters)==2){
        	String stateful =(String) parameters[1];
        	context[i++] = stateful;            	
        }        
        
        return constructLink(cycle, Tapestry.PAGE_SERVICE, context, null, true);		
	
	}
	
	
	/* (non-Javadoc)
	 * @see org.apache.tapestry.engine.IEngineService#service(org.apache.tapestry.engine.IEngineServiceView, org.apache.tapestry.IRequestCycle, org.apache.tapestry.request.ResponseOutputStream)
	 */
	public void service(IEngineServiceView engine, IRequestCycle cycle,
			ResponseOutputStream output) throws ServletException, IOException {
		
		RequestContext context = cycle.getRequestContext();
        String[] serviceContext = getServiceContext(context);

        if (Tapestry.size(serviceContext) != 1 && Tapestry.size(serviceContext) !=2){
        	//System.out.println("service==size====="+Tapestry.size(serviceContext));
        
            throw new ApplicationRuntimeException(
                Tapestry.format("service-single-parameter", Tapestry.PAGE_SERVICE));
        }
        
        String pageName = serviceContext[0];
        
        if (Tapestry.size(serviceContext)==2){
        	String stateful = serviceContext[1];
        	
	    	//增加session管理检验,若页面需要session检验时就要判断, 是否存在session,若不存在则抛出session过期异常
	        if (stateful.equals(STATEFUL_ON)){
	        	if (context.getSession() == null || context.getSession().isNew()){
	            	IPage sessionPage = cycle.getPage("SessionException");
	            	throw new StaleSessionException("SessionException", sessionPage);
	            }            	
	        }
        }
        
        // At one time, the page service required a session, but that is no longer necessary.
        // Users can now bookmark pages within a Tapestry application.  Pages
        // can implement validate() and throw a PageRedirectException if they don't
        // want to be accessed this way.  For example, most applications have a concept
        // of a "login" and have a few pages that don't require the user to be logged in,
        // and other pages that do.  The protected pages should redirect to a login page.
    	
        IPage page = cycle.getPage(pageName);            
        cycle.activate(page);

        engine.renderResponse(cycle, output);
        
	}
}

⌨️ 快捷键说明

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