java中的一些实用工具

/**
	 * 获取请求IP地址
	 * @param request
	 * @return
	 */
	public static String getIp(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("WL-Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getRemoteAddr();  
        }  
        final String[] arr = ip.split(",");  
        for (final String str : arr) {  
            if (!"unknown".equalsIgnoreCase(str)) {  
                ip = str;  
                break;  
            }  
        }  
        return ip;  
	}
/**
     * 通过身份证号码获取性别、年龄、星座
     * @param certificateNo
     * @return
     */
    public static JSONObject getBirAgeSex(String certificateNo) {
    	if(StringUtils.isEmpty(certificateNo)) {
    		 JSONObject j = new JSONObject();
	        j.put("birthday", "");
	        j.put("age", "");
	        j.put("sexCode", "");
	        j.put("star", "");
	        return j;
    	}
        String birthday = "";
        String age = "";
        String sexCode = "";
        int year = Calendar.getInstance().get(Calendar.YEAR);
        birthday = certificateNo.substring(6, 10) + "-"
                + certificateNo.substring(10, 12) + "-"
                + certificateNo.substring(12, 14);
        sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "F" : "M";
        age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
        int month = Short.valueOf(certificateNo.substring(10, 12));
	    int day = Short.valueOf(certificateNo.substring(12, 14));
	    String strValue = "";
	    if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {
	    	strValue = "水瓶座";
	    } else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
	    	strValue = "双鱼座";
	    } else if ((month == 3 && day > 20) || (month == 4 && day <= 19)) {
	    	strValue = "白羊座";
	    } else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
	    	strValue = "金牛座";
	    } else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) {
	    	strValue = "双子座";
	    } else if ((month == 6 && day > 21) || (month == 7 && day <= 22)) {
	    	strValue = "巨蟹座";
	    } else if ((month == 7 && day > 22) || (month == 8 && day <= 22)) {
	    	strValue = "狮子座";
	    } else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
	    	strValue = "处女座";
	    } else if ((month == 9 && day >= 23) || (month == 10 && day <= 23)) {
	    	strValue = "天秤座";
	    } else if ((month == 10 && day > 23) || (month == 11 && day <= 22)) {
	    	strValue = "天蝎座";
	    } else if ((month == 11 && day > 22) || (month == 12 && day <= 21)) {
	    	strValue = "射手座";
	    } else if ((month == 12 && day > 21) || (month == 1 && day <= 19)) {
	    	strValue = "魔羯座";
	    }
	    JSONObject j = new JSONObject();
        j.put("birthday", birthday);
        j.put("age", age);
        j.put("sexCode", sexCode);
        j.put("star", strValue);
        return j;
    }
/**
	 * 电话号码校验
	 * @param phone
	 * @return
	 */
	public static boolean validPhone(String phone ) {
		if(!StringUtils.isEmpty(phone)) {
			Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9])|(17[0-9])|(19[8-9])|(166)|(14[0-9]))\\d{8}$");
			Matcher m = p.matcher(phone);
			return m.matches();
		}else {
			return false;
		}
	}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对2维表数据的分页。不针对各种不同数据库为了提高效力而使用的分页读取。 对各种有可能转化成2维表数据的数据先通过自定义的转化器转化成ArrayList(HashMap)或 ArrayList(javabean) 如果类型为ArrayList不需要转化,已经写了2个,分别为ResultSet和Vector,其它特殊类型的转化自己实现SourceConv接口,并在SourceConvFactory注册(注册没有 写在配置文件,自己按需要去完善 :) ) 对第2维的格式化(即列数据),通过实现PageCol接口,已经有javabean和hashmap两种的格式化 import com.miphone.newcard.source.*; import java.util.*; 1.ArrayList source=.......; //不需要转化 2.ResultSet source=.......; //需要在后面添加 tool.setSourceType("ResultSet");已经有一个SourceConv的子类处理 //ResultSet的格式化 3.Vector source=........; //需要在后面添加 tool.setSourceType("Vector");已经有一个SourceConv的子类处理 //Vector的格式化 4.OtherObj source=......; //自己实现SourceConv接口,并在SourceConvFactory注册,需要在后面添加 tool.setSourceType("名字","class路径及名称"); 5 tool.setSourceColType("列数据类型名");//默认为HashMap,已经有HashMap和javabean的实现,javabean需要 tool.setClassName("javabean类名"); 6 tool.setSourceColType("列数据类型名","类名");//自定义的列数据格式 PageTool tool=new PageTool(); tool.setSource(source); Vector cols=new Vector(); cols.addElement("id"); cols.addElement("name"); cols.addElement("value"); cols.addElement("type"); cols.addElement("note"); tool.setColNams(cols);//设定读取字段 tool.setPageSize(10);//设定pagesize String[] infos = {"<img src='1' >", "<img src='1' >", "<img src='1' >", "<img src='1' >", "<img src='1' >"}; tool.setPageInfo(infos);//设定分页的显示,默认为{"页次", "首页", "上一页", "下一页", "尾页"}; tool.setHrefName("search.jsp"+args);//分页显示的指向超链接。如 search.jsp?id=1 String thispage=request.getParameter("page"); tool.makeCurrentPage(thispage);//设定当前页,thispage的判断由PageTool自己控制。 tool.Create();//生成分页 //读取 while(tool.next()){ String id=rs.getString("id"); String id2=rs.getString(1);//下标从1开始 String name=rs.getString("name"); String name2=rs.getString(2); } rs.free();//不是必须得,在重复利用时需要用来清空已经有数据的对象。 /* 分页显示方法 */ tool.getFirstPage(); tool.getForwardPage(); tool.getNextPage(); tool.getLastPage(); tool.getTotalInfo(); tool.getRecordCount(); tool.getPageSize();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值