Java获取系统属性、环境变量和反射获取当前请求内容

yzmm
32 阅读

获取环境变量:



System.getenv()

获取系统属性:


System.getProperties()

反射调用ServletRequest和HttpServletRequest的get方法获取请求数据:


ServletRequest sr= (ServletRequest)request;
Method[] cm = request.getClass().getDeclaredMethods();
Method[] rm = sr.getClass().getDeclaredMethods();

Invoke的时候应该用当前的request而不是newInstance():



m.invoke(request, new Object[]{})


代码:



/**
	 * Server info
	 * @param request
	 * @return
	 */
	public Map<String,Object> getServerInfo(HttpServletRequest request){
		Map<String,Object> map = new HashMap<String, Object>(),
							sp = new HashMap<String, Object>(),
							req = new HashMap<String, Object>();
		map.put("env", System.getenv());
		for(Object s:System.getProperties().keySet()){
			sp.put((String) s, System.getProperty((String)s));
		}
		map.put("property", sp);
		try {
			ServletRequest sr= (ServletRequest)request;
			Method[] cm = request.getClass().getDeclaredMethods();
			Method[] rm = sr.getClass().getDeclaredMethods();
			for(Method m:cm){
				m.setAccessible(true);
				if(m.getName().startsWith("get")&&!Pattern.compile("getInputStream|getReader").matcher(m.getName()).find()&&
						m.getName().indexOf("")==-1&&m.getParameterTypes().length==0){
					req.put(m.getName(),""+m.invoke(request, new Object[]{}));
				}
			}
			for(Method m:rm){
				m.setAccessible(true);
				if(m.getName().startsWith("get")&&!Pattern.compile("getInputStream|getReader").matcher(m.getName()).find()&&
						m.getParameterTypes().length==0){
					req.put(m.getName(),""+m.invoke(request, new Object[]{}));
				}
			}
		}catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return map;
	}

 

 

 

评论 (2)

AmosKing
哥们儿(称呼不对也不要介意),你的网站是不是被黑了,我们的WP站点的反正是被黑了,所有文章被篡改,且下面有很多链接,有个就是你的,要不洒家我也不会给你留言。当然我也不知道是不是WP漏洞的问题。希望你看到和我联系一下。谢谢!
yzmm
你的博客地址是都少呢?

发表评论