package com.baidu.ueditor; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.ContextLoader; import com.baidu.ueditor.define.ActionMap; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.State; import com.baidu.ueditor.hunter.ImageHunter; import com.baidu.ueditor.upload.Uploader; import com.kingschan.blog.services.BlogResService; public class ActionEnter { private HttpServletRequest request = null; private String rootPath = null; private String contextPath = null; private String actionType = null; private ConfigManager configManager = null; public ActionEnter ( HttpServletRequest request, String rootPath ) { this.request = request; this.rootPath = rootPath; this.actionType = request.getParameter( "action" ); this.contextPath = request.getContextPath(); //request.getRequestURI() kingschan "/www/ueditor/jsp/xxx.do" this.configManager = ConfigManager.getInstance( this.rootPath, this.contextPath,"/www/ueditor/jsp/xxx.do"); } public String exec () { String callbackName = this.request.getParameter("callback"); if ( callbackName != null ) { if ( !validCallbackName( callbackName ) ) { return new BaseState( false, AppInfo.ILLEGAL ).toJSONString(); } return callbackName+"("+this.invoke()+");"; } else { return this.invoke(); } } public String invoke() { if ( actionType == null || !ActionMap.mapping.containsKey( actionType ) ) { return new BaseState( false, AppInfo.INVALID_ACTION ).toJSONString(); } if ( this.configManager == null || !this.configManager.valid() ) { return new BaseState( false, AppInfo.CONFIG_ERROR ).toJSONString(); } State state = null; int actionCode = ActionMap.getType( this.actionType ); Map<String, Object> conf = null; int start =0; switch ( actionCode ) { case ActionMap.CONFIG: return this.configManager.getAllConfig().toString(); case ActionMap.UPLOAD_IMAGE: case ActionMap.UPLOAD_SCRAWL: case ActionMap.UPLOAD_VIDEO: case ActionMap.UPLOAD_FILE: conf = this.configManager.getConfig( actionCode ); state = new Uploader( request, conf ).doExec(); break; case ActionMap.CATCH_IMAGE: conf = configManager.getConfig( actionCode ); String[] list = this.request.getParameterValues( (String)conf.get( "fieldName" ) ); state = new ImageHunter( conf,this.request ).capture( list ); break; case ActionMap.LIST_IMAGE: case ActionMap.LIST_FILE: conf = configManager.getConfig( actionCode ); start = this.getStartIndex(); // state = new FileManager( conf ).listFile( start ); break; } if (actionCode==6||actionCode==7) { BlogResService brs= ContextLoader.getCurrentWebApplicationContext().getBean(BlogResService.class); try { return brs.getResList(actionCode, start, request); } catch (Exception e) { e.printStackTrace(); } } return state.toJSONString(); } public int getStartIndex () { String start = this.request.getParameter( "start" ); try { return Integer.parseInt( start ); } catch ( Exception e ) { return 0; } } /** * callback参数验证 */ public boolean validCallbackName ( String name ) { if ( name.matches( "^[a-zA-Z_]+[\\w0-9_]*$" ) ) { return true; } return false; } }