Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package net.vsame.url2sql.web;
  
  
 
 

好了歌(王立平)

世人都晓神仙好
唯有功名忘不了
古今将相在何方
荒冢一堆草没了

世人都晓神仙好
只有金银忘不了
终朝只恨聚无多
及到多时眼闭了
 
 public class Url2SqlFilter implements Filter {
 	
 	private static Log LOG = LogFactory.getLog(Url2SqlFilter.class);
 	private static String encoding = "utf-8";
 	private UrlMapping mapping;
 
     public Url2SqlFilter() {
     }
 
 
     @Override
 	public void doFilter(ServletRequest _reqServletResponse _respFilterChain chainthrows IOExceptionServletException {
 		HttpServletRequest request = (HttpServletRequest_req;
 		HttpServletResponse response = (HttpServletResponse_resp;
 		// 设置编码
 		
 		//处理请求URL
 		String requestURI = request.getRequestURI().substring(request.getContextPath().length());
 		String[] urlNodes = resolveUrl(requestURI);
 		
 		if(urlNodes == null){
 			chain.doFilter(requestresponse);
 			return ;
 		}
 		
 		//寻找Render
 		Render render = .findRender(urlNodes[1]);
 		if(render == null) {//没有对应视图
 			chain.doFilter(requestresponse);
 			return ;
 		}
 		
 		try{
 			WebHelper.init(requestresponse);
 			
 			Url2SqlContext c = getContext(urlNodes);
 			
 			if(c != null) {
 				c.setRender(render);
 				
 				//调用对应Action
 				UrlMapping.getMapping().invoke();
 				
 				//优先用户设置的视图, 如果用户设置为NULL,则使用默认视图
 				if(c.getRender() != null){
 					render = c.getRender();
 				}
 				
 			}
 			
 			if(render.getEncoding() == null){
 				render.setEncoding();//优先用户设置的编码, 如果用户设置为NULL,则使用默认编码
 			}
 			render.setContext(requestresponse).render();
 			
 		}finally{
 			WebHelper.remove();
 		}
 	}

分解URL

Parameters:
url
Returns:
[path, extensionName]
	private static String[] resolveUrl(String url) {
		if(url == null) {
			return null;
		}
		int index = url.lastIndexOf(".");
		if(index == -1) {
			return null;
		}
		return new String[]{url.substring(0, index), url.substring(index+1)};
	}
	private Url2SqlContext getContext(String[] urlNodes){
		//寻找Action
		UrlConfig urlConfig = .getConfig(urlNodes[0]);
		if(urlConfig == null){
			return null//没有对应Action
		}
		//创建上下文
		Url2SqlContext context = WebHelper.getContext();
		context.setRequestUrl(urlNodes[0]);
		context.setExtensionName(urlNodes[1]);
		context.setUrlConfig(urlConfig);
		return context;
	}
	public void init(FilterConfig configthrows ServletException {
		 = config.getInitParameter("encoding");
		// 默认编码为UTF-8
		if ( == null || "".equals()) {
			 = "UTF-8";
		}
		.info("url2sql core init. encoding:" + );
		 = UrlMapping.getMapping();
	}
	public void destroy() {
	}
New to GrepCode? Check out our FAQ X