Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package net.vsame.url2sql.helper;
  
  import java.util.HashMap;
 import java.util.Map;
 
 
 
Url2Sql上下文 可以取得数据库连接 请求参数 请求路径

Author(s):
Gaollg
 
 public class Url2SqlContext {
 	
 	private static Log LOG = LogFactory.getLog(Url2SqlContext.class);
 	private Connection conn;
 	
 	private String extensionName;//扩展名
 	private String requestUrl;//请求路径
 	
 	private Map<StringString[]> params;//参数
 	private UrlConfig urlConfig;
 	
 	//返回数据载体
 	private Map<StringObjectdatas = new LinkedHashMap<StringObject>();
 	
 	private static ConnSource connSource;
 	private Map<StringObjectsession;
 	private Render render;
 	private Object action;
 	
 	public Url2SqlContext(){
 		.put("code", 0);
 		.put("msg""success");
 	}
 	
 	public Connection getConn() {
 		//每次请请都在一个线程内,故无需synchronized
 		if( == null){
 			if( == null){
 				 = JdbcUtils.getConnection();
 			}else{
 			}
 			try {
 			} catch (SQLException e) {
 			}
 		}
 		return ;
 	}
 	public void setConn(Connection conn) {
 		this. = conn;
 	}
 		return ;
 	}
 		return ;
 	}
 	public Map<StringObjectgetSession() {
 		if( == null){
 			 = new HashMap<StringObject>();
 			if(this. != null){
 				//复制Session中的值
 				@SuppressWarnings("rawtypes")
 				while (e.hasMoreElements()) {
 					String sessionName = (Stringe.nextElement();
 					.put(sessionName.getAttribute(sessionName));
 				}
 			}
 		}
 		return ;
 	}
 	public void setSession(Map<StringObjectsession) {
 		this. = session;
 	}
 	@SuppressWarnings("unchecked")
	public <T> T getSessionValueToType(String keyClass<T> clazz){
		Object o = this.getSession().get(key);
		if(o == null){
			return null;
		}
		return (T) o;
	}
	@SuppressWarnings("unchecked")
	public void setRequest(HttpServletRequest request) {
		this. = request;
		if(request != null){
			 = new HashMap<StringString[]>();//使用创建的MAP,以便在代码中覆盖页面中传过来的参数
			this. = request.getSession();
		}
	}
		return ;
	}
	public void setResponse(HttpServletResponse response) {
		this. = response;
	}
	}
	public void setExtensionName(String extensionName) {
		this. = extensionName;
	}
	public String getRequestUrl() {
		return ;
	}
	public void setRequestUrl(String requestUrl) {
		this. = requestUrl;
	}
	public Map<StringString[]> getParams() {
		return ;
	}
	public String[] getParams(Object key){
		return .get(key+"");
	}
	public String getParam(Object key){
		String[] array = .get(key+"");
		if(array == null){
			return null;
		}
		return array[0];
	}
	public void setParams(Map<StringString[]> params) {
		this. = params;
	}
	public Render getRender() {
		return ;
	}
	public void setRender(Render render) {
		this. = render;
	}
	public Object getAction() {
		return ;
	}

取得对应基本类型(包括数组)

Parameters:
clazz
key
Returns:
	@SuppressWarnings("unchecked")
	public <T> T getParamByType(Class<T> clazzString key){
		if(!clazz.isArray()){
			return TypeConvertHelper.parseType(clazzgetParam(key));
		}
		String[] params = getParams(key);
		if(params==null || params.length==0){
			return null;
		}
		Class<?> componentType = clazz.getComponentType();
		Object[] a = (Object[]) Array.newInstance(componentTypeparams.length);
		for (int i = 0; i < params.lengthi++) {
			a[i] = TypeConvertHelper.parseType(componentTypeparams[i]);
		}
		return (T) a;
	}
	public UrlConfig getUrlConfig() {
		return ;
	}
	public void setUrlConfig(UrlConfig urlConfig) {
		this. = urlConfig;
		Method m = urlConfig.getMethod();
		if(m == null){
			return ;
		}
		try {
catch (Exception e) {
			throw new RuntimeException(e.getCause());
		}
	}
	//=================================================
	public Map<StringObjectgetDatas() {
		return ;
	}

如果包含错误(即code!=0) 返回true

Returns:
	public boolean hasError(){
		return !.get("code").equals(0);
	}

填充有用的数据

Parameters:
key
value
	public void putUsefulData(String keyObject value){
		.put(keyvalue);
	}

填充有用的数据

Parameters:
key
value
	public void put(String keyObject value){
		.put(keyvalue);
	}

填充错误

Parameters:
code
msg
clean true表示清除原有数据
	public void putError(int codeString msgboolean clean){
		if(clean){
		}
		.put("code"code);
		.put("msg"msg);
	}

填充错误

Parameters:
code
msg
	public void putError(int codeString msg){
		putError(codemsgtrue);
	}
	//==========================================基础============================================
code=-1 : 设置服务器内部错误(500)

Parameters:
e 异常
errorMsg 异常消息,如果传递null 则为 500:e.getMessage()
	public void error(Exception eString errorMsg){
		.error("error:"e);
		if(errorMsg == null){
			errorMsg = "500:" + e.getMessage();
		}
		putError(-1, errorMsg);
	}

填充表单错误

Parameters:
msg
errors
	public void putFormError(String msgMap<StringStringerrors){
		if(msg == null){
			msg = "Form has " + errors.keySet().size() + "Errors";
		}
		putError(-2, msg);
		putUsefulData("errors"errors);
	}

设置表单错误信息
code=-2 : 请求参数无效。错误消息里会给出具体哪个参数不合法以及原因。(通常是数据校验,如果是登录,可自行构建错Map传参)

Parameters:
errors
	public void putFormError(Map<StringStringerrors){
		putError(-2, null);
		putUsefulData("errors"errors);
	}

填充错误 code=-3 : 无API访问权限。
	public void putNoPermission(){
		putError(-3, "No Permission!");
	}

填充错误 code=-4 : 禁止IP访问

Parameters:
msg
	public void putBanIP(String msg){
		if(msg==null){
			msg = "";
		}
		putError(-4, "Ban IP visit!" + msg);
	}

填充错误 code=-5 : API不存在
	public void put404(){
		putError(-5, "Api not exist!");
	}

填充错误 code=-6 : 访问频率超限
	public void putBusy(){
		putError(-6, "Access frequency transfinite!");
	}
	//==========================================业务============================================
填充错误 code=1 : 用户未登录
	public void putNoLogin(){
		putError(1, "Please Login!");
	}
	private static String firstLetterToUpper(String string) {
		char[] buffer = string.toCharArray();
		buffer[0] = Character.toUpperCase(string.charAt(0));
		return new String(buffer);
	}

从session中取值

Parameters:
str
Returns:
	public Object getSessionVal(String str){
		String[] keys = str.split("\\.");
		Object o = this.getSession().get(keys[0]);
		for (int i = 1; i < keys.lengthi++) {
			String now = keys[i];
			if(o instanceof Map){
				@SuppressWarnings("rawtypes")
				Map m = (Mapo;
				o = m.get(now);
			}else{
				Class<? extends Objectclazz = o.getClass();
				try {
					Method m = clazz.getMethod("get" + firstLetterToUpper(now));
					o = m.invoke(o);
catch (Exception e) {
					throw new RuntimeException(e);
				}
			}
		}
		return o;
	}

销毁上下文,比如数据库连接
	public void destroy(){
		//释放数据库连接
		if(this. != null){
			try {
				try{
					this..commit();
				}finally{
					this..close();
				}
catch (Exception e) {
			}finally{
			}
		}
		//复制session至servletSession中
		if(this. != null && this. != null){
			//复制Session中的值
			@SuppressWarnings("rawtypes")
			while (e.hasMoreElements()) {
				String sessionName = (Stringe.nextElement();
				Object o = .get(sessionName);
				if(o != null){
					.setAttribute(sessionNameo);
					.remove(sessionName);
				}else{
				}
			}
			for (Map.Entry<StringObjectentry : .entrySet()){
			}
		}
	}
	public static ConnSource getConnSource() {
		return ;
	}
	public static void setConnSource(ConnSource connSource) {
		. = connSource;
	}
	public static interface ConnSource {
	}
New to GrepCode? Check out our FAQ X