`
jxqc_job
  • 浏览: 529 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
license系统功能介绍 license系统功能介绍
license 系统主要功能是用于license的申请以及发放,主要技术Hibernate+Struts2实现。
1.关于license申请,又分为临时和商用的,申请临时的license时有效期一般都是小于或者等于6个月的(临时的又分为外场临时[第一次有效期为6个月,
以后申请都是三个月]、实验局[有效期2个月]、研发内部试用[有效期2个月]),商用license是永久生效的。
2.菜单权限角色控制,每种角色都只有自己的菜单和权限,不同的角色菜单和权限不同,系统里允许有些角色具有管理员的权限,从而用来处理注册和注销用户。
  权限分为查询、审批、下载、上传(包含批量上传)等,在审批权限中又分为自动审批、一级审批、二级审批和决策审批,这样有效的进行管控license的申请。
3.license的加密文件生成是采用C/C++实现的,java通过JNI技术调用实现license文件的真正的生成。
4.发送邮件功能,当有用户申请license时,提交给审批人员审批,每一次审批完都会给相应的人发送邮件提醒。
5.关于商用的申请需要合同资源文件做依据,即需要上传合同文件关联的资源到系统,从而支持审批人员核对并审批处理使用。
6.license统计功能,用于支持决策使用,本系统提供了统一的接口界面进行license统计,比如说按申请时间统计、按省份统计、按各种条件进行复合条件的统计等。
7.其他功能(如密码修改,自动审批规则的录入等)。
Log4j--demo log4j--demo
1.首先导入commons-logging.jar包和commons-logging-api-1.1.jar和log4j-1.2.17.jar
2.log4j.properties(放在src文件夹下面)
#log4j.rootCategory=INFO,stdout,file  
#配置根Logger  
log4j.rootLogger=DEBUG,file,CONSOLE   
log4j.additivity.org.apache=true  
  
#日志信息输出到控制台 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender   
log4j.appender.CONSOLE.Threshold=DEBUG   
log4j.appender.CONSOLE.Target=System.out   
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout   
log4j.appender.CONSOLE.layout.ConversionPattern=%d %l-%m%n 

#输出到指定的日志文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender  
#日志文件的输出路径为d:/hplog/mylogs.log  
log4j.appender.file.File=d\:/hplog/mylogs.log    
log4j.appender.FILE.MaxFileSize=10MB 
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#输出DEBUG级别以上的日志  
log4j.appender.file.Threshold = DEBUG   
log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %l-%m%n   



3.在java类中添加Logger类成员变量
private Logger log = LogManager.getLogger(类名.class);
 接着给该变量设置setter和getter方法
我的校验码生成技术--demo 我的校验码生成技术--demo
我的生成校验码技术--demo(采用java反射技术和dwr技术)
0.准备工作:首先需要导入dwr.jar包
1.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>demo232</display-name>
  <servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>dwr-invoker</servlet-name>
 	<url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

2.dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
	"http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
	<allow>
		<create creator="new" javascript="obvalidateCode">
			<param name="class" value="com.test.GenerateNumber" />
		</create>
	</allow>
</dwr>

3.Constants.java
package com.test;

public class Constants {
	public static String KEY_1 = "1";
	public static String KEY_2 = "2";
	public static String KEY_3 = "3";
	public static String KEY_4 = "4";
	public static String KEY_5 = "5";
	public static String KEY_6 = "6";
	public static String KEY_7 = "7";
	public static String KEY_8 = "8";
	public static String KEY_9 = "9";
	public static String KEY_10 = "A";
	public static String KEY_11 = "B";
	public static String KEY_12 = "C";
	public static String KEY_13 = "D";
	public static String KEY_14 = "E";
	public static String KEY_15 = "F";
	public static String KEY_16 = "G";
	public static String KEY_17 = "H";
	public static String KEY_18 = "I";
	public static String KEY_19 = "J";
	public static String KEY_20 = "K";
	public static String KEY_21 = "L";
	public static String KEY_22 = "M";
	public static String KEY_23 = "N";
	public static String KEY_24 = "O";
	public static String KEY_25 = "P";
	public static String KEY_26 = "Q";
	public static String KEY_27 = "R";
	public static String KEY_28 = "S";
	public static String KEY_29 = "T";
	public static String KEY_30 = "U";
	public static String KEY_31 = "V";
	public static String KEY_32 = "W";
	public static String KEY_33 = "X";
	public static String KEY_34 = "Y";
	public static String KEY_35 = "Z";
	
	public static String COLOR_1 = "orange";
	public static String COLOR_2 = "pink";
	public static String COLOR_3 = "red";
	public static String COLOR_4 = "gray";
	public static String COLOR_5 = "blue";
	public static String COLOR_6 = "yellow";
	
	
}


4.GenerateNumber.java
package com.test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class GenerateNumber {
	public List<String> generate(){
		List<String> validateCodeList = new ArrayList<String>();
		/**生成随机码*/
		//产生1-35之间随机数:
		for(int i = 0; i < 4; i++){
			int x=1+(int)(Math.random()*35);
			String key = "KEY_"+x;
			System.out.print(x+"\t");
			try {
				Field field = Constants.class.getField(key);
				Object str = "C";
				try {
					str = field.get((Object)field.getName());
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
				validateCodeList.add(str.toString());
//				System.out.println(field.getName()+"\t"+str.toString());
			} catch (SecurityException e) {
				e.printStackTrace();
			} catch (NoSuchFieldException e) {
				e.printStackTrace();
			}
		}
		System.out.println();
		for(String s : validateCodeList){
			System.out.print(s+"\t");
		}
		System.out.println("\n------------------------");
		
		/**下面生成随机颜色*/
		int y=1+(int)(Math.random()*6);
		try {
			Field field = Constants.class.getField("COLOR_"+y);
			try {
				Object co = (Object)field.get("COLOR_"+y);
				validateCodeList.add(co.toString());
				System.out.println(co.toString());
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		}
		
		return validateCodeList;
	}
	public static void main(String[] args) {
		new GenerateNumber().generate();
	}
}

5.showTest.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>dwr级联显示</title>
<!-- 使用的是相对路径,下面这个引用dwr/interface也是固定写法 -->
<script type='text/javascript' src='dwr/interface/obvalidateCode.js'></script>
<!-- 下面这两个引用是固定写法,因为这两个文件是在dwr.jar中 -->
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript">
	function hptest(){
		obvalidateCode.generate(show);
	}
	obvalidateCode.generate(show);
	function show(data){
		var st = data.toString();
		var s = st.split(",");
		//alert(s);
		for(var i = 0; i < s.length-1; i++){
			DWRUtil.setValue("stext_"+i,s[i]);
		}
		if(s.length > 4){
			document.getElementById("bgspan").style.backgroundColor=s[4];
		} 
	}
	function checkValidateCode(){
		var v1 = DWRUtil.getValue("stext_0");
		var v2 = DWRUtil.getValue("stext_1");
		var v3 = DWRUtil.getValue("stext_2");
		var v4 = DWRUtil.getValue("stext_3");
		var v_total = v1+v2+v3+v4;
		//alert(v1+","+v2+","+v3+","+v4);
		var colValue = document.getElementById("colValue").value;
		if(colValue != ""){
			if(v_total == colValue){
				alert(v_total+"______"+colValue);
				alert("校验码输入正确");
			}else{
				alert(v_total+"______"+colValue);
				alert("校验码输入错误");
			}
		}
	}
	
	
</script>
</head>
<body>
	<form id="myform">
		<b>验证码 :</b><input type="text" id="colValue" />
		<div id="bgspan" style="width:4%;"><I><b>
			<span id="stext_0"></span>
			<span id="stext_1"></span>
			<span id="stext_2"></span>
			<span id="stext_3"></span></b></I>
		</div>
		<br />
		<input type="button" value="validate" onclick="checkValidateCode()" />
	</form>
	
</body>
</html>

dwr demo dwr demo
1.导入dwr.jar包
2.配置dwr过滤器(web.xml)
3.配置dwr.xml
4.编写类文件
5.编写jsp文件

----------------------
1.导入dwr.jar包即可
2.在web.xml中加入dwr过滤器即加入如下代码
<servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>dwr-invoker</servlet-name>
 	<url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

3.配置dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
	"http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
	<allow>
		<create creator="new" javascript="ruleop">
			<param name="class" value="com.test.ProvinceOP" />
		</create>
	</allow>
</dwr>

4.编写类文件ProvinceOP.java
package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ProvinceOP {
	static Logger log = LoggerFactory.getLogger(ProvinceOP.class);
	public String sayHello(String name){
		System.out.println("Wellcom to "+name);
		return "Wellcom to "+name;
	}
	public List setProvince() throws Exception{
		List list = new ArrayList();
		InputStreamReader ips = new InputStreamReader(new FileInputStream("d:\\licensetool\\province.txt"),"utf-8");
		BufferedReader br = new BufferedReader(ips);
		String str = null;
		br.readLine();
		//下面循环从第二行开始按行读取文本
		while((str = br.readLine()) != null){ 
			list.add(str);
			log.info("hp: "+str);
			System.out.println(str);
		}
		return list;
	}
	public List setCity(String province){
		List list = new ArrayList();
		try{
			InputStreamReader ips = new InputStreamReader(new FileInputStream("d:\\licensetool\\city.txt"),"utf-8");
			BufferedReader br = new BufferedReader(ips);
			String str = null;
			br.readLine();
			while((str = br.readLine()) != null){
				String[] content = str.split("=");
				//System.out.println(content[0]+"==="+content[1]);
				if(!"".equals(str) && content[0].equals(province)){
					String c = content[1].substring(1, content[1].length()-1);
					String[] citys = c.split(",");
					for(String cs : citys){
						list.add(cs);
					}
					break;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return list;
	}
//	public static void main(String[] args) throws Exception {
//		List<String> list = new ArrayList<String>();
//		String a = "";
//		list.add(a);
//		String b = "哈尔滨";
//		if(!list.contains(b)){
//			list.add(b);
//		}
//		String c = "佳木斯";
//		if(!list.contains(c)){
//			list.add(c);
//		}
//		String d = "绥化";
//		if(!list.contains(d)){
//			list.add(d);
//		}
//		System.out.println("list.size = "+list.size());
//		for(String s : list){
//			System.out.println(s);
//		}
//		
//	}
}

5.编写jsp文件show.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>dwr级联显示</title>
<!-- 使用的是相对路径,下面这个引用dwr/interface也是固定写法 -->
<script type='text/javascript' src='dwr/interface/ruleop.js'></script>
<!-- 下面这两个引用是固定写法,因为这两个文件是在dwr.jar中 -->
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript">
	function hptest(){
		//ruleop.getProvince($(myform).province.value,show);
		ruleop.sayHello("zhangsan",show);
	}
	ruleop.setProvince(showProvince);
	function show(data){
		alert(data);
	}
	function showProvince(data){
		DWRUtil.removeAllOptions("province");
		DWRUtil.addOptions("province",{"":"select province"});
		DWRUtil.addOptions("province",data);
	}
	function setCity(province){
		ruleop.setCity(province,showCitys);
	}
	function showCitys(data){
		DWRUtil.removeAllOptions("city");
		DWRUtil.addOptions("city",{"":"select city"});
		DWRUtil.addOptions("city",data);
	}
</script>
</head>
<body>
	<form id="myform">
		<b>Province :</b>
		<select id="province" name="province" onchange="setCity(this.value)"></select><br />
		<b>City :</b>
		<select id="city" name="city"><option>select city</option></select> 
		<input type="button" value="click me" onclick="hptest()" />
	</form>
	
</body>
</html>


7.province.txt
province(省份)
陕西
黑龙江
云南
广西
福建
湖南
安徽

8.city.txt
province=[city,city]
陕西=[西安,安康,商洛,铜川,渭南,咸阳,榆林,汉中,延安,宝鸡]
黑龙江=[大庆,哈尔滨,鸡西,牡丹江,双鸭山,绥化,齐齐哈尔,黑河]
云南=[昆明,邵通,文山]
广西=[北海,崇左,防城,贵港,桂林,柳州,南宁,钦州,玉林]
福建=[龙岩,南平,宁德市,莆田,三明,福州,漳州]
湖南=[衡阳,娄底,永州,邵阳]
安徽=[安庆,蚌埠,滁州,合肥,淮北,六安,宿州,芜湖,马鞍山,铜陵,黄山,宣城]
SQL中的日期操作 sql中的日期操作
select * 
from lkitem  
where rncid=787 
	and purpose='Commercial Project' 
	and status='LK Released' 
	AND entity = 'RNC'
	and (decision_time is not null)
order by decision_time DESC


-------------------------------------
--求最近三个月即将到期的
SELECT a.expiretime,a.status,a.purpose,a.* 
FROM lkitem a
WHERE a.entity = 'RNC' AND a.status = 'LK Released' AND a.purpose = 'External Trial' AND a.province = '浙江'
	AND a.expiretime >= (SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 'thetime')
	AND a.expiretime < (SELECT dateadd(mm,2,(SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))) 'thetime')
ORDER BY a.expiretime asc

-------------------------------------
--查询系统当前日期
SELECT convert(VARCHAR(10),getdate(),120) 'thetime'
--查询从系统当前日期算3个月后的日期
SELECT dateadd(mm,3,(SELECT convert(VARCHAR(10),getdate(),120) 'thetime'))
--查询本月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--查询本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
--查询上一个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

--查询本月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--从本月的第一天开始算,查询第三个月的最后一天
SELECT dateadd(mm,2,(SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))))


sql server 2005-----SQL语句及分页sql sql server 2005-----sql语句分页sql
--查询地理课比生物课成绩高的学生信息

SELECT a.StuId,a.StuName, b.CourseId,b.CourseName,c.Score,e.CourseId,e.CourseName,d.Score
FROM tblStudent a, tblCourse b,tblScore c,tblScore d,tblCourse e
WHERE a.StuId = c.StuId AND b.CourseId = c.CourseId AND d.CourseId = e.CourseId
	AND b.CourseName <> e.CourseName AND a.StuId = d.StuId AND e.CourseId = d.CourseId
	AND b.CourseName = '地理' AND e.CourseName = '生物' AND c.Score > d.Score
	

SELECT a.StuId, a.StuName
FROM tblStudent a
WHERE 
	(SELECT b.Score FROM tblScore b WHERE b.StuId = a.StuId AND b.CourseId = (SELECT d.CourseId FROM tblCourse d WHERE d.CourseName = '地理')) 
		> 
	(SELECT c.Score FROM tblScore c WHERE c.StuId = a.StuId AND c.CourseId = (SELECT d.CourseId FROM tblCourse d WHERE d.CourseName = '生物'))


--查询平均成绩大于75分的学生学号和平均成绩
SELECT StuId,avg(Score)
FROM tblScore
GROUP BY StuId 
HAVING avg(Score) > 75

--查询所有学生的学号、姓名、选课数、总成绩
SELECT d.stuId, e.StuName, d.courses, d.scores
FROM 
(SELECT a.StuId 'StuId', count(b.CourseName) 'courses',count(c.Score) 'scores'
FROM tblStudent a, tblCourse b, tblScore c
WHERE a.StuId = c.StuId AND b.CourseId = c.CourseId
GROUP BY a.StuId) d, tblStudent e
WHERE d.StuId = e.StuId

--查询没有学过徐小明老师课程的学生
SELECT a.StuId,a.StuName,b.CourseName,b.TeaId, d.TeaName
FROM tblStudent a, tblCourse b,tblTeacher d
WHERE b.TeaId <> (SELECT c.TeaId FROM tblTeacher c WHERE c.TeaName = '徐小明')
	AND d.TeaId <> (SELECT c.TeaId FROM tblTeacher c WHERE c.TeaName = '徐小明')
	AND b.TeaId = d.TeaId
ORDER BY a.StuId,b.CourseId

--sql server分页查询
SELECT * FROM tblCourse
--每页显示2条记录,查询第一页,(1-1)*2 = 0
SELECT TOP 2 * 
FROM tblCourse 
WHERE CourseId NOT IN(SELECT TOP 0 CourseId 
				FROM tblCourse 
				ORDER BY CourseId ) 
ORDER BY CourseId 

--每页显示2条记录,查询第二页,(2-1)*2 = 2
SELECT TOP 2 * 
FROM tblCourse 
WHERE CourseId NOT IN(SELECT TOP 2 CourseId 
				FROM tblCourse 
				ORDER BY CourseId ) 
ORDER BY CourseId

--每页显示2条记录,查询第三页, (3-1)*2 = 4
SELECT TOP 2 * 
FROM tblCourse 
WHERE CourseId NOT IN(SELECT TOP 4 CourseId 
				FROM tblCourse 
				ORDER BY CourseId ) 
ORDER BY CourseId 

--每页显示2条记录,查询第四页, (4-1)*2 = 6
SELECT TOP 2 * 
FROM tblCourse 
WHERE CourseId NOT IN(SELECT TOP 6 CourseId 
				FROM tblCourse 
				ORDER BY CourseId ) 
ORDER BY CourseId 

--每页显示2条记录,查询第五页, (5-1)*2 = 8
SELECT TOP 2 * 
FROM tblCourse 
WHERE CourseId NOT IN(SELECT TOP 8 CourseId 
				FROM tblCourse 
				ORDER BY CourseId ) 
ORDER BY CourseId 

--查询各科成绩前三名的记录


SELECT t.字段名
FROM (SELECT 字段(可以是多表关联的字段) ,row_number() over(order by 某个排序字段 desc) r 
	  FROM 表名 
	  where 过滤条件 ) t 
where t.r <= (每页显示条数*要查询的页) 
	and t.r > (每页显示条数*(要查询的页-1))
	
--sql server 2005 及以上版本的sql分页查询
--每页显示2条记录,查询第1页
SELECT t.CourseId,t.CourseName, t.TeaId
FROM (SELECT a.*,row_number() over(order by CourseId) r 
	  FROM tblCourse a) t 
where t.r <= (2*1) 
	and t.r > (2*(1-1))

--每页显示2条记录,查询第2页
SELECT t.CourseId,t.CourseName, t.TeaId
FROM (SELECT a.*,row_number() over(order by CourseId) r 
	  FROM tblCourse a) t 
where t.r <= (2*2) 
	and t.r > (2*(2-1))
sql server 2005 及以上版本的sql分页查询 sql server 2005 及以上版本的sql分页查询
SELECT t.字段名 
FROM (SELECT 字段(可以是多表关联的字段) ,row_number() over(order by 某个排序字段 desc) r 
      FROM 表名 
       where 过滤条件 ) t 
where t.r <= (每页显示条数*要查询的页) 
      and t.r > (每页显示条数*(要查询的页-1))

----------------------
SELECT t.字段名
FROM (SELECT 字段(可以是多表关联的字段) ,row_number() over(order by 某个排序字段 desc) r 
	  FROM 表名 
	  where 过滤条件 ) t 
where t.r <= (每页显示条数*要查询的页) 
	and t.r > (每页显示条数*(要查询的页-1))
	
--sql server 2005 及以上版本的sql分页查询
--每页显示2条记录,查询第1页
SELECT t.CourseId,t.CourseName, t.TeaId
FROM (SELECT a.*,row_number() over(order by CourseId) r 
	  FROM tblCourse a) t 
where t.r <= (2*1) 
	and t.r > (2*(1-1))

--每页显示2条记录,查询第2页
SELECT t.CourseId,t.CourseName, t.TeaId
FROM (SELECT a.*,row_number() over(order by CourseId) r 
	  FROM tblCourse a) t 
where t.r <= (2*2) 
	and t.r > (2*(2-1))
用java 程序实现二进制像十进制转化 或十进制转化为二进制 用java 程序实现二进制像十进制转化 或十进制转化为二进制
超简单,如下例: 
//10进制->2进制 
String a = "-1195";//输入数值 
BigInteger src = new BigInteger(a);//转换为BigInteger类型 
System.out.println(src.toString(2));//转换为2进制并输出结果 

//2进制->10进制 
String a = "10010101011";//输入数值 
BigInteger src = new BigInteger(a, 2);//转换为BigInteger类型 
System.out.println(src.toString());//转换为2进制并输出结果 

由此可见,有2点要注意: 
1. BigInteger的构造函数 
BigInteger(String src)默认参数字符串为10进制数值 
BigInteger(String src, int x)第2个参数x是指定第一个参数src的进制类型 

2. toString方法 
toString()默认把数值按10进制数值转化为字符串。 
toString(int x)把数值按参数x的进制转化为字符串。 

sql server 日期操作 sql server 日期操作
sql server 日期操作
http://www.w3school.com.cn/sql/func_dateadd.asp
http://blog.csdn.net/jinbi/article/details/7020338
http://www.cnblogs.com/joeblackzqq/archive/2010/11/23/1885112.html
http://dev.yesky.com/422/30958422.shtml
http://www.cnblogs.com/zhangzhifeng/archive/2013/08/01/3229981.html
http://www.javake.com.cn/db/mssql/20130511/6439.html
http://database.51cto.com/art/201009/226223.htm
http://blog.csdn.net/jinbi/article/details/7020338
System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同 system.data.sqlclient.sqlerror: 备份集中的数据库备份与现有的 'xxx' 数据库不同
System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同  2011-07-01 10:07:26|  分类: 数据库 |  标签: |举报 |字号大
中
小 订阅 
  
System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同。

在sql server 2008 r2 版本中还原从sql server 2008 express备份出来的数据库时,提示上述错误。

百度后解决。

原因如下:

在sql server 2005以上版本,做还原时,不要建立数据库。

比如要还原test数据库,不要新建一个test库。而是直接选择还原的文件。此时在要还原的数据库列表中就会出现test库。选中即可。

而以前的版本需要先建立数据库,然后再还原。

 

还原的时候,

选项-勾覆盖现有数据库。

JAVA读写文件如何避免中文乱码 java读写文件如何避免中文乱码 http://zhidao.baidu.com/question/2073995085632361068.html
/*** 读取文件内容** @param filePathAndName
* String 如 c://1.txt 绝对路径
* @return boolean*/public static String readFile(String filePathAndName) {
String fileContent = "";try {File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;}read.close();}} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();}return fileContent;}
异地备份2 异地备份2
package com.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class BatUtil {
	 public static void main(String[] args) {
	        Process p;
	        //test.bat中的命令是ipconfig/all
//	        String cmd="d:\\test\\batFile\\test.bat";
//	        String cmd="d:\\test\\batFile\\copyFile.bat";
	        String cmd = "d:\\test\\batFile\\copy.bat";
	        
	        /** 将0.0.0.0上的目录A中的文件拷贝到1.1.1.1机器上的d:\目标文件B中
	         *  copy.bat的内容如下:(假设目标文件所在的ip为1.1.1.1,源文件所在的ip为0.0.0.0)
	         * xcopy \\0.0.0.0\共享的文件夹名称A d:\目标文件中B /e /i /f /c /Y
	         */
	        
	        try {
	            //执行命令
	            p = Runtime.getRuntime().exec(cmd);
	            //取得命令结果的输出流
	            InputStream fis=p.getInputStream();
	            //用一个读输出流类去读
	            InputStreamReader isr=new InputStreamReader(fis);
	            //用缓冲器读行
	            BufferedReader br=new BufferedReader(isr);
	            String line=null;
	            //直到读完为止
	            while((line=br.readLine())!=null) {
	                System.out.println(new String(line.getBytes("iso-8859-1"),"gbk"));
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	  }
}
linux上部署java web应用 linux上部署java web应用
svn服务器的 配置:
 1.配置文件的位置:cd /myfile/test/conf/
 2. vim authz

关闭svn: # killall svnserve
启动服务器 
# svnserve -d -r /svndata
-d表示以daemon方式(后台运行)运行
-r /svndata指定根目录是/svndata

 
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = lisi,wangwu

 在 后面添加用户的名字;(如果删除用户 请删除对应的人名)
 
3.vim passwd 为用户添加密码 添加密码格式为 添加一行 用户名 = 密码 如下面的格式
 
[users]
# harry = harryssecret
# sally = sallyssecret
lisi = 111111
wangwu = 111111

4.保存上面的文件,关于vim的操作命令,可以上网查


----------------------------------------------------------------------
假设正式服务器ip:0.0.0.0
假设测试服务器ip:1.1.1.1
ftp工具:filezilla 
linux连接客户端:putty
################################################
Linux目录介绍:
ftp上传目录 /myfile/ftp/project/  
如果ftp无法连接或不显示文件目录 需要关闭防火墙 service iptables stop
1.	进入目录  cd /myfile/ftp/project/
2.	查看目录下的文件  ls -la /myfile/ftp/project/
3.	删除文件:rm -f update.jsp  (格式为:rm -f filename ,使用的是相对路径删除,要进入文件所在的文件夹,示例中 update.jsp为文件的名称 )
4.	删除文件夹:rm -fr file (使用的是相对路径删除,file是要删除的文件夹,删除文件夹需要添加一个参数r)
5.	复制文件夹 cp -r /myfile/ftp/project/demo1/ /tomcat_file/  将ftp上传文件夹下的项目文件copy到 项目要部署的文件
Tomcat的安装目录 /myfile/local/tomcat7/
项目的部署目录:/tomcat_file  部署是将项目的文件夹命名为demo1 放到该文件夹下既可  不要将项目放到tomcat安装目录下的webapps下,
   1. 关闭tomcat   sh /myfile/ftp/project/tomcat7/bin/shutdown.sh
2. 启动tomcat   sh /myfile/ftp/project/tomcat7/bin/startup.sh
3.查看tomcat的启动日志 tail -f -n800 /myfile/ftp/project/tomcat7/logs/catalina.out (n 后面的数字表示显示日志文件最后的400行,命令中n和数字之间没有空格)
  注意:在查看日志的界面需要 使用ctrl+c 来退出界面 
6.	部署项目:
(1)	先删除已经部署的项目文件夹 : rm -rf /tomcat_file/demo1
(2)	将上传的文件复制到/tomcat_file 下  cp -r /myfile/ftp/project/demo1/ /tomcat_file/
(3)	启动tomcat即可
7.	将测试服务器的项目copy到正式服务器 
scp -r /tomcat_file/demo1/ root@0.0.0.0:/tomcat_file/

java异地备份 java异地备份
使用java执行批处理文件进行异地备份:
1. BatUtil.java
package com.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class BatUtil {
	 public static void main(String[] args) {
	        Process p;
	        //test.bat中的命令是ipconfig/all
//	        String cmd="d:\\test\\batFile\\test.bat";
	        String cmd="d:\\test\\batFile\\copyFile.bat";
	        
	        try {
	            //执行命令
	            p = Runtime.getRuntime().exec(cmd);
	            //取得命令结果的输出流
	            InputStream fis=p.getInputStream();
	            //用一个读输出流类去读
	            InputStreamReader isr=new InputStreamReader(fis);
	            //用缓冲器读行
	            BufferedReader br=new BufferedReader(isr);
	            String line=null;
	            //直到读完为止
	            while((line=br.readLine())!=null) {
	                System.out.println(line);
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
}

2.copyFile.bat
copy "d:\\test\\backup\\eNodeB_20140108.txt" "\\10.23.30.36\\d$"
java web定时任务 java web定时任务
需要导入struts的commons-io-2.0.1.jar包
java web 定时任务的实现:
一. 自定义一个监听器
1. MyListener.java
package com.tdtech.pdm.lisener;

import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.tdtech.pdm.util.TaskExecution;
/**
 * 自定义监听器
 */
public class MyLisener implements ServletContextListener{
	private Timer t;
	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		if(t != null){
			t.cancel();
		}
		System.out.println("监听器销毁....");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		t = new Timer();
		t.schedule(new TaskExecution(), 10 * 1000, 24 * 60 * 60 * 1000);
	}

}

二.定义一个定时任务类
2. TaskExecution.java
package com.tdtech.pdm.util;

import java.util.TimerTask;
/**
 * 定时任务
 */
public class TaskExecution extends TimerTask{
	@Override
	public void run() {
		System.out.println("定时任务启动了....");
		FileUtil.main(null);
	}
}

三.定义一个文件备份的工具类
3. FileUtil.java
package com.tdtech.pdm.util;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.io.FileUtils;
/**
 * 文件拷贝
 */
public class FileUtil {
	private String fileName = "D:\\codefile\\testfile\\";
	private String destDirectory = "D:\\test\\backup\\";
	private void copyFile() throws IOException{
		File file = new File(fileName); 
		if(file.exists()){
			if(file.isDirectory()){
				File[] fs = file.listFiles();
				//全部复制
				for(File f : fs){
					SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
					String prefix = f.getName().substring(f.getName().lastIndexOf("."));
					String fname = f.getName().substring(0, f.getName().lastIndexOf("."))+"_";
					File df = new File(destDirectory + fname + sdf.format(new Date()) + prefix);
					if(!df.exists()){
						df.createNewFile();
					}else{
						df.delete();
						df.createNewFile();
					}
					FileUtils.copyFile(f, df);
				}
			}
		}
	}
	public static void main(String[] args) {
		FileUtil fu = new FileUtil();
		try {
			fu.copyFile();
			System.out.println("文件备份成功.....");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

四.在web.xml中配置自定义监听器
4. <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <listener>
  	<display-name>配置自定义监听器</display-name>
  	<listener-class>com.tdtech.pdm.lisener.MyLisener</listener-class>
  </listener>
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
重写hashCode和equals方法2 重写hashcode和equals方法2
1. Person.java
package com.pojo;

public class Person {
	private Integer id;
	private String sex; //
	private Integer age;
	private String name;

	@Override
	public int hashCode() {
		Integer h = 0;
		int s = h.hashCode();
		if(id != null){
			s += id.hashCode(); 
		}
		if(name != null){
			s += name.hashCode();
		}
		if(sex != null){
			s += sex.hashCode();
		}
		if(age != null){
			s += age.hashCode();
		}
		return s;
	}
	/**那本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		return false;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

2. Student.java
package com.pojo;

public class Student extends Person{
	private String country; //国籍
	public Student(){
		super();
	}
	@Override
	public int hashCode() {
		int h = super.hashCode();
		if(this.country != null){
			h += this.country.hashCode();
		}
		return h;
	}
	/**将本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		Student s = null;
		if(obj instanceof Student){
			s = (Student) obj;
		}
		if((s.getId() != null && s.getId() == s.getId())
				&& (s.getName() != null && super.getName().equals(s.getName()))
				&& (s.getAge() != null && super.getAge() == s.getAge())
				&& (s.getSex() != null && super.getSex().equals(s.getSex()))
				&& (s.country != null && s.country.equals(this.country))){
			return true;
		}
		return false;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}
	
}

3. CopyDemo2.java
package com.test;

import com.pojo.Student;
/**
 * 测试类--模拟批量复制
 */
public class CopyDemo2 {
	public static void main(String[] args) {	
		Student s = new Student();
		s.setId(2013001);
		s.setAge(12);
		s.setCountry("中国");
		s.setName("李四");
		s.setSex("男");
		
		Student s2 = new Student();
		s2.setId(2013001);
		s2.setAge(12);
		s2.setCountry("中国");
		s2.setName("李四");
		s2.setSex("男");
		
		Student s3 = new Student();
		s3.setId(2013001);
		s3.setAge(12);
		s3.setCountry("中国");
		s3.setName("李四");
		s3.setSex("女");
		
		Student s4 = new Student();
		System.out.println("s == s2 ? "+(s.equals(s2)?"相等":"不相等"));
		System.out.println("s == s3 ? "+(s.equals(s3)?"相等":"不相等"));
		System.out.println("s == s4 ? "+(s.equals(s4)?"相等":"不相等"));
		//对象的copy
		s4 = s;
		System.out.println("从s复制后s == s4 ? "+(s.equals(s4)?"相等":"不相等"));
		int i = 2; 
		Student[] sd = null;
		if(i > 0){
			sd = new Student[i];
		}
		for(int j = 0; j < i; j++){
			sd[j] = s;
		}
		for(int j = 0; j< sd.length; j++){
			System.out.println("从s复制后s == sd["+j+"] ? "+(s.equals(sd[j])?"相等":"不相等"));
		}
		
	}
}
重写hashCode方法和equals方法demo2 重写hashcode方法和equals方法demo2
1. Person.java
package com.pojo;

public class Person {
	private Integer id;
	private String sex; //
	private Integer age;
	private String name;

	@Override
	public int hashCode() {
		Integer h = 0;
		int s = h.hashCode();
		if(id != null){
			s += id.hashCode(); 
		}
		if(name != null){
			s += name.hashCode();
		}
		if(sex != null){
			s += sex.hashCode();
		}
		if(age != null){
			s += age.hashCode();
		}
		return s;
	}
	/**那本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		return false;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

2. Student.java
package com.pojo;

public class Student extends Person{
	private String country; //国籍
	public Student(){
		super();
	}
	@Override
	public int hashCode() {
		int h = super.hashCode();
		if(this.country != null){
			h += this.country.hashCode();
		}
		return h;
	}
	/**将本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		Student s = null;
		if(obj instanceof Student){
			s = (Student) obj;
		}
		if((s.getId() != null && s.getId() == s.getId())
				&& (s.getName() != null && super.getName().equals(s.getName()))
				&& (s.getAge() != null && super.getAge() == s.getAge())
				&& (s.getSex() != null && super.getSex().equals(s.getSex()))
				&& (s.country != null && s.country.equals(this.country))){
			return true;
		}
		return false;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}
	
}

3. CopyDemo2.java
package com.test;

import com.pojo.Student;
/**
 * 测试类--模拟批量复制
 */
public class CopyDemo2 {
	public static void main(String[] args) {	
		Student s = new Student();
		s.setId(2013001);
		s.setAge(12);
		s.setCountry("中国");
		s.setName("李四");
		s.setSex("男");
		
		Student s2 = new Student();
		s2.setId(2013001);
		s2.setAge(12);
		s2.setCountry("中国");
		s2.setName("李四");
		s2.setSex("男");
		
		Student s3 = new Student();
		s3.setId(2013001);
		s3.setAge(12);
		s3.setCountry("中国");
		s3.setName("李四");
		s3.setSex("女");
		
		Student s4 = new Student();
		System.out.println("s == s2 ? "+(s.equals(s2)?"相等":"不相等"));
		System.out.println("s == s3 ? "+(s.equals(s3)?"相等":"不相等"));
		System.out.println("s == s4 ? "+(s.equals(s4)?"相等":"不相等"));
		//对象的copy
		s4 = s;
		System.out.println("从s复制后s == s4 ? "+(s.equals(s4)?"相等":"不相等"));
		int i = 2; 
		Student[] sd = null;
		if(i > 0){
			sd = new Student[i];
		}
		for(int j = 0; j < i; j++){
			sd[j] = s;
		}
		for(int j = 0; j< sd.length; j++){
			System.out.println("从s复制后s == sd["+j+"] ? "+(s.equals(sd[j])?"相等":"不相等"));
		}
		
	}
}
重写hashCode方法和equals方法demo 重写hashcode方法和equals方法demo
1. Person.java
package com.pojo;

public class Person {
	private Integer id;
	private String sex; //
	private Integer age;
	private String name;

	@Override
	public int hashCode() {
		Integer h = 0;
		int s = h.hashCode();
		if(id != null){
			s += id.hashCode(); 
		}
		if(name != null){
			s += name.hashCode();
		}
		if(sex != null){
			s += sex.hashCode();
		}
		if(age != null){
			s += age.hashCode();
		}
		return s;
	}
	/**那本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		return false;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

2. Student.java
package com.pojo;

public class Student extends Person{
	private String country; //国籍
	public Student(){
		super();
	}
	@Override
	public int hashCode() {
		int h = super.hashCode();
		if(this.country != null){
			h += this.country.hashCode();
		}
		return h;
	}
	/**将本类的对象与参数Obj进行是否相等比较*/
	@Override
	public boolean equals(Object obj) {
		Student s = null;
		if(obj instanceof Student){
			s = (Student) obj;
		}
		if((s.getId() != null && s.getId() == s.getId())
				&& (s.getName() != null && super.getName().equals(s.getName()))
				&& (s.getAge() != null && super.getAge() == s.getAge())
				&& (s.getSex() != null && super.getSex().equals(s.getSex()))
				&& (s.country != null && s.country.equals(this.country))){
			return true;
		}
		return false;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}
	
}

3. CopyDemo.java
package com.test;

import com.pojo.Student;
/**
 * 测试类
 */
public class CopyDemo {
	public static void main(String[] args) {	
		Student s = new Student();
		s.setId(2013001);
		s.setAge(12);
		s.setCountry("中国");
		s.setName("李四");
		s.setSex("男");
		
		Student s2 = new Student();
		s2.setId(2013001);
		s2.setAge(12);
		s2.setCountry("中国");
		s2.setName("李四");
		s2.setSex("男");
		
		Student s3 = new Student();
		s3.setId(2013001);
		s3.setAge(12);
		s3.setCountry("中国");
		s3.setName("李四");
		s3.setSex("女");
		
		Student s4 = new Student();
		System.out.println("s == s2 ? "+(s.equals(s2)?"相等":"不相等"));
		System.out.println("s == s3 ? "+(s.equals(s3)?"相等":"不相等"));
		System.out.println("s == s4 ? "+(s.equals(s4)?"相等":"不相等"));
	}
}

jquery-uploadify批量上传
1. upload2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
		<base href="<%=basePath%>">
		<link href="<%=basePath%>uploadify2/uploadify.css" rel="stylesheet" type="text/css">
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery-1.4.2.min.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/swfobject.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery.uploadify.v2.1.4.min.js"></script>
	</head>
<body>
<div id="fileQueue"></div>
	<input type="file" name="uploadify" id="uploadify" />
    <p>
        <a href="javascript: jQuery('#uploadify').uploadifyUpload()">开始上传</a> 
		<a href="javascript:jQuery('#uploadify').uploadifyClearQueue()">取消所有上传</a>
	</p>
</body>
<script type="text/javascript">
	//官方网址:http://www.uploadify.com/
	$(document).ready(function(){
		//$("#uploadify").uploadifySettings('scriptData',	{'name':'liudong','age':22});
		$("#uploadify").uploadify({
			'uploader'	:	"<%=basePath%>uploadify2/uploadify.swf",
			'script'    :	"<%=basePath%>/servlet/UploadPhotoServlet",
			'cancelImg' :	"<%=basePath%>uploadify2/cancel.png",
			'folder'	:	"uploads",//上传文件存放的路径,请保持与uploadFile.jsp中PATH的值相同
			'queueId'	:	"fileQueue",
			'queueSizeLimit'	:	10,//限制上传文件的数量
			'fileExt'	:	"*.rar,*.zip,*.png,*.txt",
			//'fileDesc'	:	"RAR *.rar",//限制文件类型
			'auto'		:	false,
			'multi'		:	true,//是否允许多文件上传
			'simUploadLimit':	2,//同时运行上传的进程数量
			'buttonText':	"files",
			//'scriptData':	{'name':'liudong','age':22},//这个参数用于传递用户自己的参数,此时'method' 必须设置为GET, 后台可以用request.getParameter('name')获取名字的值
			'method'	:	"GET"
		});
		
		//$("#uploadify").uploadifySettings();
	});
</script>
</html>

2. UploadPhotoServlet.java
package com.org.servlet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.db.ReadTxtUtil;


@SuppressWarnings("serial")
public class UploadPhotoServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public UploadPhotoServlet() {
		super();
	}

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String savePath = this.getServletConfig().getServletContext().getRealPath("");
		System.out.print("-----"+savePath);
		savePath = savePath+"/uploads/";
		System.out.println("上传路径:"+savePath);
		File f1 = new File(savePath);
		if(!f1.exists()){
			f1.mkdirs();
		}
		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		List fileList = null;
		try {
			fileList = upload.parseRequest(req);
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
		if(fileList==null){
			resp.getWriter().print("No file upload!");
			return;
		}
		Iterator<FileItem> it = fileList.iterator();
		String name = "";
		String extName = "";
		while(it.hasNext()){
			FileItem item = it.next();
			if(!item.isFormField()){//isFormField介绍:true=表单输入 域,false=文件上传域。
				name = item.getName();
				//long size = item.getSize();
				//String type = item.getContentType();
				if(name == null || name.trim().equals("")){
					continue;
				}
				//扩展名格式
				if(name.lastIndexOf(".")>=0){
					extName = name.substring(name.lastIndexOf("."));
				}
				File file = null;
				do{
					//生成文件名
//					name = UUID.randomUUID().toString();
					Date date = new Date();
					DateFormat df = new SimpleDateFormat("yyyyMMddkkmmssSS");
					name = name.substring(0, name.lastIndexOf(".")) + "_"+df.format(date);
					file = new File(savePath+name+extName);
				}while(file.exists());
				File saveFile = new File(savePath+name+extName);
				try {
					item.write(saveFile);
					ReadTxtUtil rtu = new ReadTxtUtil();
					Map<String, String> uploadProReconMap = rtu.readUploadFile(new FileInputStream(saveFile));
					Map<String, String> proReconNameMap = rtu.getProReconNameMap(new BufferedReader(new FileReader(new File("D:\\codefile\\testfile\\PRoReconConstant.txt"))));
					Map<String, String> proReconMap = new LinkedHashMap<String, String>();
					for(Map.Entry<String, String> obj : uploadProReconMap.entrySet()){
						String key = obj.getKey();
						String value = obj.getValue();
						if(proReconNameMap.containsKey(key)){
							proReconMap.put(proReconNameMap.get(key), value);
						}
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-begin");
					for(Map.Entry<String, String> obj : proReconMap.entrySet()){
						System.out.println(obj.getKey()+"="+obj.getValue());
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-end");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		resp.getWriter().print(name+extName);
		
	}

}

3. ReadTxtUtil.java
package com.db;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadTxtUtil {
	public Map<String , String> readUploadFile(FileInputStream fis){
		Map<String, String> map = new LinkedHashMap<String, String>();
		try {
			Workbook wb = WorkbookFactory.create(fis);
			Sheet sheet = wb.getSheetAt(1);
			for(int i = 3; i < sheet.getLastRowNum(); i++){
				Row r = sheet.getRow(i);
				Cell c1 = r.getCell(1);
				Cell c2 = r.getCell(2);
				System.out.println(c1.toString()+"="+c2.toString());
				map.put(c1.toString(), c2.toString());
			}
		} catch (InvalidFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
	public Map<String,String> getProReconNameMap(BufferedReader br){
		Map<String,String> map = new LinkedHashMap<String, String>();
		try{
			String s = null;
			while((s = br.readLine()) != null){
				if(s.contains("proReconFileName")){
					continue;
				}
				String[] st = s.split("=");
				map.put(st[0].trim(), st[1].trim());
				System.out.println(s);
			}
			br.close();
		}catch(Exception e){
			return null;
		}
		return map;
	} 
	public static void main(String[] args){
		File file = new File("D:\\codefile\\testfile\\PRoReconConstant.txt");
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Map<String, String> map = new ReadTxtUtil().getProReconNameMap(br);
		System.out.println(map.size());
	}
}

4. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>demo1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <servlet-class>com.org.servlet.UploadPhotoServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <url-pattern>/servlet/UploadPhotoServlet</url-pattern>
  </servlet-mapping>
</web-app>
jdbc连接数据库23
1. 表t_proReconRecord的结构定义:
	prr_id int ; //主键
	contract_id int ; //合同号
	ttr_id int ; //解决方案id
	sell_id int; //网元
	pr_values text ; //工勘信息
	webModelDetail varchar ; //细分的网元类型
	config_id int; //bill清单编号

2. ProjectReconRecord.java
package com.pojo;
/**
 * 工勘记录表
 */
public class ProjectReconRecord {
	private Integer prr_id; //主键
	private Integer contract_id; //合同号
	private Integer ttr_id; //解决方案id
	private Integer sell_id; //网元
	private String pr_values; //工勘信息
	private String webModelDetail; //细分的网元类型
	private Integer config_id; //bill清单编号
	public Integer getPrr_id() {
		return prr_id;
	}
	public void setPrr_id(Integer prr_id) {
		this.prr_id = prr_id;
	}
	public Integer getContract_id() {
		return contract_id;
	}
	public void setContract_id(Integer contract_id) {
		this.contract_id = contract_id;
	}
	public String getPr_values() {
		return pr_values;
	}
	public void setPr_values(String pr_values) {
		this.pr_values = pr_values;
	}
	public Integer getTtr_id() {
		return ttr_id;
	}
	public void setTtr_id(Integer ttr_id) {
		this.ttr_id = ttr_id;
	}
	public Integer getSell_id() {
		return sell_id;
	}
	public void setSell_id(Integer sell_id) {
		this.sell_id = sell_id;
	}
	public String getWebModelDetail() {
		return webModelDetail;
	}
	public void setWebModelDetail(String webModelDetail) {
		this.webModelDetail = webModelDetail;
	}
	public Integer getConfig_id() {
		return config_id;
	}
	public void setConfig_id(Integer config_id) {
		this.config_id = config_id;
	}
}

3. DBUtil.java
package com.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBUtil {
	private Connection conn;
	private PreparedStatement ps;
	private ResultSet rs;
	public Connection getConn() {
		return conn;
	}
	public PreparedStatement getPs() {
		return ps;
	}
	public ResultSet getRs() {
		return rs;
	}
	public Connection getConnection(){
		try{
			String username = "root";
			String password = "dfd12df";
			String url = "jdbc:mysql://localhost:3306/db_hp";
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, username, password);
			System.out.println("数据库连接成功");
		}catch(Exception e){
			conn = null;
		}
		return conn;
	}
	public PreparedStatement getPreparedStatement(String sql){
		try{
			ps = conn.prepareStatement(sql);
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	public ResultSet getResultSet(){
		try{
			rs = ps.executeQuery();
		}catch(Exception e){
			e.printStackTrace();
		}
		return rs;
	}
	public void close(){
		try{
			if(rs != null){
				rs.close();
			}
			if(ps != null){
				ps.close();
			}
			if(conn != null){
				conn.close();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		DBUtil du = new DBUtil();
		du.getConnection();
	}
}

4. CommonDB.java
package com.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.pojo.ProjectReconRecord;

public class CommonDB<T> {
	private T t;
	public void setT(T t){
		this.t = t;
	}
	public T getT(){
		return this.t;
	}
	/**查询数据库*/
	public List<?> findListBySql(T t, String sql){
		this.setT(t);
		List<ProjectReconRecord> list = new ArrayList<ProjectReconRecord>();
		DBUtil du = new DBUtil();
		du.getConnection();
		du.getPreparedStatement(sql);
		ResultSet rs = du.getResultSet();
		try{
			ProjectReconRecord p = null;
			/** 1为ProjectReconRecord */
			int flg = 0;
			if(this.getT().getClass().equals(ProjectReconRecord.class)){
				flg = 1;
			}
			while(rs.next()){
				if(flg == 1){
					p = new ProjectReconRecord();
					Integer prr_id = rs.getInt("prr_id");
					Integer contract_id = rs.getInt("contract_id");
					Integer ttr_id = rs.getInt("ttr_id");
					Integer sell_id = rs.getInt("sell_id");
					String pr_values = rs.getString("pr_values");
					Integer config_id = rs.getInt("config_id");
					p.setPrr_id(prr_id);
					p.setContract_id(contract_id);
					p.setTtr_id(ttr_id);
					p.setSell_id(sell_id);
					p.setPr_values(pr_values);
					p.setConfig_id(config_id);
					list.add(p);
					continue;
				}else{
					break;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			du.close();
		}
		System.out.println("rs是否关闭?"+(du.getRs()==null?"是":"否"));
		System.out.println("ps是否关闭?"+(du.getPs()==null?"是":"否"));
		System.out.println("conn是否关闭?"+(du.getConn()==null?"是":"否"));
		return list;
	}
	public static void main(String[] args) {
		CommonDB<ProjectReconRecord> cd = new CommonDB<ProjectReconRecord>();
		cd.setT(new ProjectReconRecord());
		List<ProjectReconRecord> list = (List<ProjectReconRecord>) cd.findListBySql(new ProjectReconRecord(), "select * from t_proReconRecord where contract_id = 227 and ttr_id = 6 and sell_id = 12");
		for(ProjectReconRecord p : list){
			System.out.println("contract_id = "+p.getContract_id()+", "+
					"ttr_id = "+p.getTtr_id()+", sell_id = "+p.getSell_id()+", config_id = "+p.getConfig_id()+", prr_values = "+p.getPr_values());
		}
	}
}

4. ProReconRecordUtil.java
import java.util.*;
/**对上传的工勘的结果进行处理的工具类*/
public class ProReconRecordUtil
{
	public static void main(String[] args){
		//基站
		int enb_sell_id = 12;
		String enb_prr_value = "pr_en_1=新建机房,pr_en_2=青青小美,pr_en_3=20.0,pr_en_4=30.0,pr_en_6=上走线,"
			+"pr_en_7=一般地区,pr_en_8=20.0,pr_en_9=直流-48V,pr_en_10=室外落地,"
			+"pr_en_12=1.8GHz eRRU3251,pr_en_13=华为,pr_en_14=直流,pr_en_15=抱杆安装,"
			+"pr_en_16=室外,pr_en_17=2.0,pr_en_18=3.0,pr_en_19=1.0,pr_en_20=6.144G-单模-2km,"
			+"pr_en_21=2.0,pr_en_24=单模,pr_en_27=40.0,pr_en_28=2.0,pr_en_34=50.0,pr_en_35=50.0,"
			+"pr_en_36=否,pr_en_37=否,pr_en_50=0度,pr_en_52=抱杆,pr_en_53=是,pr_en_54=40.0,"
			+"pr_en_60=光口,pr_en_61=单模10km,pr_en_63=LC-LC,pr_en_64=单模,pr_en_65=20.0,"
			+"pr_en_69=5.0,pr_en_70=5.0,pr_en_90=10.0,pr_en_91=单相三芯电源线,pr_en_92=10.0"; //实际使用这个地方的值从数据库中获取得到
		int totalPrNumber = 152;
		handPrValue(enb_sell_id, enb_prr_value, totalPrNumber);

		//核心网
		int hardCore_sell_id = 13;
		String hardCore_prr_value = "pr_en_1=是,pr_en_9=1,pr_en_2=2,pr_en_5=2,pr_en_7=一般地区,pr_en_10=3"; //实际使用这个地方的值从数据库中获取得到
		int hardCore_totalPrNumber = 10;
		handPrValue(hardCore_sell_id, hardCore_prr_value, hardCore_totalPrNumber);
	}
	/**对上传的工勘的结果进行处理*/
	public static Map<String, String> handPrValue(int sell_id, String prr_value, int totalPrNumber){
		int[] indexArray = {1,5,9,14,16};
		String[] prArray = prr_value.split(",");
		String[] prName = new String[prArray.length];
		String[] prValue = new String[prArray.length];
		if(prArray.length > 0){
			for(int i = 0; i < prArray.length; i++){
				String[] p_v = prArray[i].split("=");
				prName[i] = p_v[0];
				prValue[i] = p_v[1];
			}
		}
		Map<String,String> map = new LinkedHashMap<String, String>();
		for(int i = 0; i < totalPrNumber; i++){
			boolean flg = false;
			for(int j = 0; j < prName.length; j++){
				if(prName[j].equals("pr_en_"+(i+1))){
					map.put(prName[j],prValue[j]);
					flg = true;
					break;
				}else{
					continue;
				}
			}
			if(!flg){
				map.put("pr_en_"+(i+1),"-10000");
			}
		}
		for(Map.Entry<String,String> obj : map.entrySet()){
			System.out.println(obj.getKey() + " = "+obj.getValue());
		}
		System.out.println("map.size = "+map.size());
		System.out.println("---------------------------------");
		return map;
	}
}
java自定义标签
自定义标签和标签库函数的学习--自己的Demo
自定义表单标签和标签库函数:.tld文件必须放在WEB-INF下
1. viewIpTag.tld
<?xml version="1.0" encoding="UTF-8" ?>  
  
<!-- 这是从 绿色版\apache-tomcat-7.0.42\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld 模板中拷贝过来的 -->  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
    version="2.0">  
    <description>我的自定义标签</description>
    <tlib-version>1.0</tlib-version>
    <short-name>自定义标签</short-name>
    <uri>/thisIsMyTag</uri>
    <tag>
    	<!-- 标签属性的名称 -->
    	<name>colname</name>
    	<tag-class>com.happiness.tag.ShowLocalIP</tag-class>
    	<!-- 有没有标签体,这里empty表示没有,有的话就写jsp -->
    	<body-content>JSP</body-content>
    	<attribute>
    		<description>姓名</description>
    		<name>username</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>性别</description>
    		<name>sex</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>年龄</description>
    		<name>age</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    </tag>
    <function>
    	<description>显示表格行的函数</description>
    	<name>showTableRow</name>
    	<function-class>com.happiness.tag.SelfFunction</function-class>
    	<function-signature>java.lang.String pdType(java.lang.String)</function-signature>
    </function>
</taglib>


2. ShowLocalIP.java
package com.happiness.tag;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.happiness.pojo.StudentPojo;

public class ShowLocalIP extends TagSupport{
	private String username;
	private String sex;
	private Integer age;

	@Override
	public int doStartTag() throws JspException {
		HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();
		JspWriter out = this.pageContext.getOut();
//		String ip = request.getRemoteAddr();
//		List<StudentPojo> ss = new ArrayList<StudentPojo>();
//		ss.add(new StudentPojo("张三","男",20));
//		ss.add(new StudentPojo("李四","男",20));
//		ss.add(new StudentPojo("王五","女",20));
//		ss.add(new StudentPojo("刘麻子","女",20));
		
		try{
				out.print("<tr width='50%'>");
				out.print("   <td width='30%'>"+this.username+"</td>");
				out.print("   <td width='30%'>"+this.sex+"</td>");
				out.print("   <td width='30%'>"+this.age+"</td>");
				out.print("</tr>");
		}catch(Exception e){
			throw new RuntimeException(e);
		}
		return super.doStartTag();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

}


3. SelfFunction.java
package com.happiness.tag;

public class SelfFunction {
	/**方法必须为static类型的*/
	public static String pdType(String ageStr){
		Integer age = null;
		if(ageStr == null || "".equals(ageStr)){
			age = 0;
		}else{
			age = Integer.parseInt(ageStr);
		}
		if(age < 18)
			return "青少年";
		else if(age >= 18 && age < 40)
			return "青年";
		else if(age >= 40 && age < 60)
			return "青壮年";
		else 
			return "老年";
	}
}

4. index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/thisIsMyTag" prefix="tt"%>  
<html>  
  <head>  
    <title>My JSP 'ELDemo.jsp' starting page</title>  
  </head>  
    
  <body>
    表格如下:  
    <!-- 因为没有标签体,所以直接一个标签就可以了 -->  
    <table>
    	<!-- 自定义标签实现的表格行 -->
    	<tt:colname username="张三" sex="男" age="20"></tt:colname>
    	<tt:colname username="李四" sex="男" age="23"></tt:colname>
    	<tt:colname username="王五" sex="女" age="25"></tt:colname>
    </table>
    <!-- 自定义标签库函数的使用 -->
    	16岁: ${tt:showTableRow("16")}<br />
    	26岁: ${tt:showTableRow("26")}<br />
    	46岁: ${tt:showTableRow("46")}<br />
    	66岁: ${tt:showTableRow("66")}<br />
  </body>  
</html>  

jquery批量文件上传-uploadify
1. upload2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
		<base href="<%=basePath%>">
		<link href="<%=basePath%>uploadify2/uploadify.css" rel="stylesheet" type="text/css">
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery-1.4.2.min.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/swfobject.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery.uploadify.v2.1.4.min.js"></script>
	</head>
<body>
<div id="fileQueue"></div>
	<input type="file" name="uploadify" id="uploadify" />
    <p>
        <a href="javascript: jQuery('#uploadify').uploadifyUpload()">开始上传</a> 
		<a href="javascript:jQuery('#uploadify').uploadifyClearQueue()">取消所有上传</a>
	</p>
</body>
<script type="text/javascript">
	//官方网址:http://www.uploadify.com/
	$(document).ready(function(){
		//$("#uploadify").uploadifySettings('scriptData',	{'name':'liudong','age':22});
		$("#uploadify").uploadify({
			'uploader'	:	"<%=basePath%>uploadify2/uploadify.swf",
			'script'    :	"<%=basePath%>/servlet/UploadPhotoServlet",
			'cancelImg' :	"<%=basePath%>uploadify2/cancel.png",
			'folder'	:	"uploads",//上传文件存放的路径,请保持与uploadFile.jsp中PATH的值相同
			'queueId'	:	"fileQueue",
			'queueSizeLimit'	:	10,//限制上传文件的数量
			'fileExt'	:	"*.rar,*.zip,*.png,*.txt",
			//'fileDesc'	:	"RAR *.rar",//限制文件类型
			'auto'		:	false,
			'multi'		:	true,//是否允许多文件上传
			'simUploadLimit':	2,//同时运行上传的进程数量
			'buttonText':	"files",
			//'scriptData':	{'name':'liudong','age':22},//这个参数用于传递用户自己的参数,此时'method' 必须设置为GET, 后台可以用request.getParameter('name')获取名字的值
			'method'	:	"GET"
		});
		
		//$("#uploadify").uploadifySettings();
	});
</script>
</html>

2. UploadPhotoServlet.java
package com.org.servlet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.db.ReadTxtUtil;


@SuppressWarnings("serial")
public class UploadPhotoServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public UploadPhotoServlet() {
		super();
	}

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String savePath = this.getServletConfig().getServletContext().getRealPath("");
		System.out.print("-----"+savePath);
		savePath = savePath+"/uploads/";
		System.out.println("上传路径:"+savePath);
		File f1 = new File(savePath);
		if(!f1.exists()){
			f1.mkdirs();
		}
		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		List fileList = null;
		try {
			fileList = upload.parseRequest(req);
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
		if(fileList==null){
			resp.getWriter().print("No file upload!");
			return;
		}
		Iterator<FileItem> it = fileList.iterator();
		String name = "";
		String extName = "";
		while(it.hasNext()){
			FileItem item = it.next();
			if(!item.isFormField()){//isFormField介绍:true=表单输入 域,false=文件上传域。
				name = item.getName();
				//long size = item.getSize();
				//String type = item.getContentType();
				if(name == null || name.trim().equals("")){
					continue;
				}
				//扩展名格式
				if(name.lastIndexOf(".")>=0){
					extName = name.substring(name.lastIndexOf("."));
				}
				File file = null;
				do{
					//生成文件名
//					name = UUID.randomUUID().toString();
					Date date = new Date();
					DateFormat df = new SimpleDateFormat("yyyyMMddkkmmssSS");
					name = name.substring(0, name.lastIndexOf(".")) + "_"+df.format(date);
					file = new File(savePath+name+extName);
				}while(file.exists());
				File saveFile = new File(savePath+name+extName);
				try {
					item.write(saveFile);
					ReadTxtUtil rtu = new ReadTxtUtil();
					Map<String, String> uploadProReconMap = rtu.readUploadFile(new FileInputStream(saveFile));
					Map<String, String> proReconNameMap = rtu.getProReconNameMap(new BufferedReader(new FileReader(new File("D:\\codefile\\testfile\\PRoReconConstant.txt"))));
					Map<String, String> proReconMap = new LinkedHashMap<String, String>();
					for(Map.Entry<String, String> obj : uploadProReconMap.entrySet()){
						String key = obj.getKey();
						String value = obj.getValue();
						if(proReconNameMap.containsKey(key)){
							proReconMap.put(proReconNameMap.get(key), value);
						}
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-begin");
					for(Map.Entry<String, String> obj : proReconMap.entrySet()){
						System.out.println(obj.getKey()+"="+obj.getValue());
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-end");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		resp.getWriter().print(name+extName);
		
	}

}

3. ReadTxtUtil.java
package com.db;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadTxtUtil {
	public Map<String , String> readUploadFile(FileInputStream fis){
		Map<String, String> map = new LinkedHashMap<String, String>();
		try {
			Workbook wb = WorkbookFactory.create(fis);
			Sheet sheet = wb.getSheetAt(1);
			for(int i = 3; i < sheet.getLastRowNum(); i++){
				Row r = sheet.getRow(i);
				Cell c1 = r.getCell(1);
				Cell c2 = r.getCell(2);
				System.out.println(c1.toString()+"="+c2.toString());
				map.put(c1.toString(), c2.toString());
			}
		} catch (InvalidFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
	public Map<String,String> getProReconNameMap(BufferedReader br){
		Map<String,String> map = new LinkedHashMap<String, String>();
		try{
			String s = null;
			while((s = br.readLine()) != null){
				if(s.contains("proReconFileName")){
					continue;
				}
				String[] st = s.split("=");
				map.put(st[0].trim(), st[1].trim());
				System.out.println(s);
			}
			br.close();
		}catch(Exception e){
			return null;
		}
		return map;
	} 
	public static void main(String[] args){
		File file = new File("D:\\codefile\\testfile\\PRoReconConstant.txt");
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Map<String, String> map = new ReadTxtUtil().getProReconNameMap(br);
		System.out.println(map.size());
	}
}

4. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>demo1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <servlet-class>com.org.servlet.UploadPhotoServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <url-pattern>/servlet/UploadPhotoServlet</url-pattern>
  </servlet-mapping>
</web-app>
jquery批量文件上传 jquery批量文件上传 http://www.uploadify.com/
1. upload2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
		<base href="<%=basePath%>">
		<link href="<%=basePath%>uploadify2/uploadify.css" rel="stylesheet" type="text/css">
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery-1.4.2.min.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/swfobject.js"></script>
		<script type="text/javascript" src="<%=basePath%>uploadify2/jquery.uploadify.v2.1.4.min.js"></script>
	</head>
<body>
<div id="fileQueue"></div>
	<input type="file" name="uploadify" id="uploadify" />
    <p>
        <a href="javascript: jQuery('#uploadify').uploadifyUpload()">开始上传</a> 
		<a href="javascript:jQuery('#uploadify').uploadifyClearQueue()">取消所有上传</a>
	</p>
</body>
<script type="text/javascript">
	//官方网址:http://www.uploadify.com/
	$(document).ready(function(){
		//$("#uploadify").uploadifySettings('scriptData',	{'name':'liudong','age':22});
		$("#uploadify").uploadify({
			'uploader'	:	"<%=basePath%>uploadify2/uploadify.swf",
			'script'    :	"<%=basePath%>/servlet/UploadPhotoServlet",
			'cancelImg' :	"<%=basePath%>uploadify2/cancel.png",
			'folder'	:	"uploads",//上传文件存放的路径,请保持与uploadFile.jsp中PATH的值相同
			'queueId'	:	"fileQueue",
			'queueSizeLimit'	:	10,//限制上传文件的数量
			'fileExt'	:	"*.rar,*.zip,*.png,*.txt",
			//'fileDesc'	:	"RAR *.rar",//限制文件类型
			'auto'		:	false,
			'multi'		:	true,//是否允许多文件上传
			'simUploadLimit':	2,//同时运行上传的进程数量
			'buttonText':	"files",
			//'scriptData':	{'name':'liudong','age':22},//这个参数用于传递用户自己的参数,此时'method' 必须设置为GET, 后台可以用request.getParameter('name')获取名字的值
			'method'	:	"GET"
		});
		
		//$("#uploadify").uploadifySettings();
	});
</script>
</html>

2. UploadPhotoServlet.java
package com.org.servlet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.db.ReadTxtUtil;


@SuppressWarnings("serial")
public class UploadPhotoServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public UploadPhotoServlet() {
		super();
	}

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String savePath = this.getServletConfig().getServletContext().getRealPath("");
		System.out.print("-----"+savePath);
		savePath = savePath+"/uploads/";
		System.out.println("上传路径:"+savePath);
		File f1 = new File(savePath);
		if(!f1.exists()){
			f1.mkdirs();
		}
		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		List fileList = null;
		try {
			fileList = upload.parseRequest(req);
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
		if(fileList==null){
			resp.getWriter().print("No file upload!");
			return;
		}
		Iterator<FileItem> it = fileList.iterator();
		String name = "";
		String extName = "";
		while(it.hasNext()){
			FileItem item = it.next();
			if(!item.isFormField()){//isFormField介绍:true=表单输入 域,false=文件上传域。
				name = item.getName();
				//long size = item.getSize();
				//String type = item.getContentType();
				if(name == null || name.trim().equals("")){
					continue;
				}
				//扩展名格式
				if(name.lastIndexOf(".")>=0){
					extName = name.substring(name.lastIndexOf("."));
				}
				File file = null;
				do{
					//生成文件名
//					name = UUID.randomUUID().toString();
					Date date = new Date();
					DateFormat df = new SimpleDateFormat("yyyyMMddkkmmssSS");
					name = name.substring(0, name.lastIndexOf(".")) + "_"+df.format(date);
					file = new File(savePath+name+extName);
				}while(file.exists());
				File saveFile = new File(savePath+name+extName);
				try {
					item.write(saveFile);
					ReadTxtUtil rtu = new ReadTxtUtil();
					Map<String, String> uploadProReconMap = rtu.readUploadFile(new FileInputStream(saveFile));
					Map<String, String> proReconNameMap = rtu.getProReconNameMap(new BufferedReader(new FileReader(new File("D:\\codefile\\testfile\\PRoReconConstant.txt"))));
					Map<String, String> proReconMap = new LinkedHashMap<String, String>();
					for(Map.Entry<String, String> obj : uploadProReconMap.entrySet()){
						String key = obj.getKey();
						String value = obj.getValue();
						if(proReconNameMap.containsKey(key)){
							proReconMap.put(proReconNameMap.get(key), value);
						}
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-begin");
					for(Map.Entry<String, String> obj : proReconMap.entrySet()){
						System.out.println(obj.getKey()+"="+obj.getValue());
					}
					System.out.println("*********话说白骨精与孙悟空的恋情-end");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		resp.getWriter().print(name+extName);
		
	}

}

3. ReadTxtUtil.java
package com.db;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadTxtUtil {
	public Map<String , String> readUploadFile(FileInputStream fis){
		Map<String, String> map = new LinkedHashMap<String, String>();
		try {
			Workbook wb = WorkbookFactory.create(fis);
			Sheet sheet = wb.getSheetAt(1);
			for(int i = 3; i < sheet.getLastRowNum(); i++){
				Row r = sheet.getRow(i);
				Cell c1 = r.getCell(1);
				Cell c2 = r.getCell(2);
				System.out.println(c1.toString()+"="+c2.toString());
				map.put(c1.toString(), c2.toString());
			}
		} catch (InvalidFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
	public Map<String,String> getProReconNameMap(BufferedReader br){
		Map<String,String> map = new LinkedHashMap<String, String>();
		try{
			String s = null;
			while((s = br.readLine()) != null){
				if(s.contains("proReconFileName")){
					continue;
				}
				String[] st = s.split("=");
				map.put(st[0].trim(), st[1].trim());
				System.out.println(s);
			}
			br.close();
		}catch(Exception e){
			return null;
		}
		return map;
	} 
	public static void main(String[] args){
		File file = new File("D:\\codefile\\testfile\\PRoReconConstant.txt");
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Map<String, String> map = new ReadTxtUtil().getProReconNameMap(br);
		System.out.println(map.size());
	}
}

4. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>demo1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <servlet-class>com.org.servlet.UploadPhotoServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>UploadPhotoServlet</servlet-name>
    <url-pattern>/servlet/UploadPhotoServlet</url-pattern>
  </servlet-mapping>
</web-app>
jdbc连接数据库 jdbc连接数据库
1. 表t_proReconRecord的结构定义:
	prr_id int ; //主键
	contract_id int ; //合同号
	ttr_id int ; //解决方案id
	sell_id int; //网元
	pr_values text ; //工勘信息
	webModelDetail varchar ; //细分的网元类型
	config_id int; //bill清单编号

2. ProjectReconRecord.java
package com.pojo;
/**
 * 工勘记录表
 */
public class ProjectReconRecord {
	private Integer prr_id; //主键
	private Integer contract_id; //合同号
	private Integer ttr_id; //解决方案id
	private Integer sell_id; //网元
	private String pr_values; //工勘信息
	private String webModelDetail; //细分的网元类型
	private Integer config_id; //bill清单编号
	public Integer getPrr_id() {
		return prr_id;
	}
	public void setPrr_id(Integer prr_id) {
		this.prr_id = prr_id;
	}
	public Integer getContract_id() {
		return contract_id;
	}
	public void setContract_id(Integer contract_id) {
		this.contract_id = contract_id;
	}
	public String getPr_values() {
		return pr_values;
	}
	public void setPr_values(String pr_values) {
		this.pr_values = pr_values;
	}
	public Integer getTtr_id() {
		return ttr_id;
	}
	public void setTtr_id(Integer ttr_id) {
		this.ttr_id = ttr_id;
	}
	public Integer getSell_id() {
		return sell_id;
	}
	public void setSell_id(Integer sell_id) {
		this.sell_id = sell_id;
	}
	public String getWebModelDetail() {
		return webModelDetail;
	}
	public void setWebModelDetail(String webModelDetail) {
		this.webModelDetail = webModelDetail;
	}
	public Integer getConfig_id() {
		return config_id;
	}
	public void setConfig_id(Integer config_id) {
		this.config_id = config_id;
	}
}

3. DBUtil.java
package com.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBUtil {
	private Connection conn;
	private PreparedStatement ps;
	private ResultSet rs;
	public Connection getConn() {
		return conn;
	}
	public PreparedStatement getPs() {
		return ps;
	}
	public ResultSet getRs() {
		return rs;
	}
	public Connection getConnection(){
		try{
			String username = "root";
			String password = "dfd12df";
			String url = "jdbc:mysql://localhost:3306/db_hp";
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, username, password);
			System.out.println("数据库连接成功");
		}catch(Exception e){
			conn = null;
		}
		return conn;
	}
	public PreparedStatement getPreparedStatement(String sql){
		try{
			ps = conn.prepareStatement(sql);
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	public ResultSet getResultSet(){
		try{
			rs = ps.executeQuery();
		}catch(Exception e){
			e.printStackTrace();
		}
		return rs;
	}
	public void close(){
		try{
			if(rs != null){
				rs.close();
			}
			if(ps != null){
				ps.close();
			}
			if(conn != null){
				conn.close();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		DBUtil du = new DBUtil();
		du.getConnection();
	}
}

4. CommonDB.java
package com.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.pojo.ProjectReconRecord;

public class CommonDB<T> {
	private T t;
	public void setT(T t){
		this.t = t;
	}
	public T getT(){
		return this.t;
	}
	/**查询数据库*/
	public List<?> findListBySql(T t, String sql){
		this.setT(t);
		List<ProjectReconRecord> list = new ArrayList<ProjectReconRecord>();
		DBUtil du = new DBUtil();
		du.getConnection();
		du.getPreparedStatement(sql);
		ResultSet rs = du.getResultSet();
		try{
			ProjectReconRecord p = null;
			/** 1为ProjectReconRecord */
			int flg = 0;
			if(this.getT().getClass().equals(ProjectReconRecord.class)){
				flg = 1;
			}
			while(rs.next()){
				if(flg == 1){
					p = new ProjectReconRecord();
					Integer prr_id = rs.getInt("prr_id");
					Integer contract_id = rs.getInt("contract_id");
					Integer ttr_id = rs.getInt("ttr_id");
					Integer sell_id = rs.getInt("sell_id");
					String pr_values = rs.getString("pr_values");
					Integer config_id = rs.getInt("config_id");
					p.setPrr_id(prr_id);
					p.setContract_id(contract_id);
					p.setTtr_id(ttr_id);
					p.setSell_id(sell_id);
					p.setPr_values(pr_values);
					p.setConfig_id(config_id);
					list.add(p);
					continue;
				}else{
					break;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			du.close();
		}
		System.out.println("rs是否关闭?"+(du.getRs()==null?"是":"否"));
		System.out.println("ps是否关闭?"+(du.getPs()==null?"是":"否"));
		System.out.println("conn是否关闭?"+(du.getConn()==null?"是":"否"));
		return list;
	}
	public static void main(String[] args) {
		CommonDB<ProjectReconRecord> cd = new CommonDB<ProjectReconRecord>();
		cd.setT(new ProjectReconRecord());
		List<ProjectReconRecord> list = (List<ProjectReconRecord>) cd.findListBySql(new ProjectReconRecord(), "select * from t_proReconRecord where contract_id = 227 and ttr_id = 6 and sell_id = 12");
		for(ProjectReconRecord p : list){
			System.out.println("contract_id = "+p.getContract_id()+", "+
					"ttr_id = "+p.getTtr_id()+", sell_id = "+p.getSell_id()+", config_id = "+p.getConfig_id()+", prr_values = "+p.getPr_values());
		}
	}
}

4. ProReconRecordUtil.java
import java.util.*;
/**对上传的工勘的结果进行处理的工具类*/
public class ProReconRecordUtil
{
	public static void main(String[] args){
		//基站
		int enb_sell_id = 12;
		String enb_prr_value = "pr_en_1=新建机房,pr_en_2=青青小美,pr_en_3=20.0,pr_en_4=30.0,pr_en_6=上走线,"
			+"pr_en_7=一般地区,pr_en_8=20.0,pr_en_9=直流-48V,pr_en_10=室外落地,"
			+"pr_en_12=1.8GHz eRRU3251,pr_en_13=华为,pr_en_14=直流,pr_en_15=抱杆安装,"
			+"pr_en_16=室外,pr_en_17=2.0,pr_en_18=3.0,pr_en_19=1.0,pr_en_20=6.144G-单模-2km,"
			+"pr_en_21=2.0,pr_en_24=单模,pr_en_27=40.0,pr_en_28=2.0,pr_en_34=50.0,pr_en_35=50.0,"
			+"pr_en_36=否,pr_en_37=否,pr_en_50=0度,pr_en_52=抱杆,pr_en_53=是,pr_en_54=40.0,"
			+"pr_en_60=光口,pr_en_61=单模10km,pr_en_63=LC-LC,pr_en_64=单模,pr_en_65=20.0,"
			+"pr_en_69=5.0,pr_en_70=5.0,pr_en_90=10.0,pr_en_91=单相三芯电源线,pr_en_92=10.0"; //实际使用这个地方的值从数据库中获取得到
		int totalPrNumber = 152;
		handPrValue(enb_sell_id, enb_prr_value, totalPrNumber);

		//核心网
		int hardCore_sell_id = 13;
		String hardCore_prr_value = "pr_en_1=是,pr_en_9=1,pr_en_2=2,pr_en_5=2,pr_en_7=一般地区,pr_en_10=3"; //实际使用这个地方的值从数据库中获取得到
		int hardCore_totalPrNumber = 10;
		handPrValue(hardCore_sell_id, hardCore_prr_value, hardCore_totalPrNumber);
	}
	/**对上传的工勘的结果进行处理*/
	public static Map<String, String> handPrValue(int sell_id, String prr_value, int totalPrNumber){
		int[] indexArray = {1,5,9,14,16};
		String[] prArray = prr_value.split(",");
		String[] prName = new String[prArray.length];
		String[] prValue = new String[prArray.length];
		if(prArray.length > 0){
			for(int i = 0; i < prArray.length; i++){
				String[] p_v = prArray[i].split("=");
				prName[i] = p_v[0];
				prValue[i] = p_v[1];
			}
		}
		Map<String,String> map = new LinkedHashMap<String, String>();
		for(int i = 0; i < totalPrNumber; i++){
			boolean flg = false;
			for(int j = 0; j < prName.length; j++){
				if(prName[j].equals("pr_en_"+(i+1))){
					map.put(prName[j],prValue[j]);
					flg = true;
					break;
				}else{
					continue;
				}
			}
			if(!flg){
				map.put("pr_en_"+(i+1),"-10000");
			}
		}
		for(Map.Entry<String,String> obj : map.entrySet()){
			System.out.println(obj.getKey() + " = "+obj.getValue());
		}
		System.out.println("map.size = "+map.size());
		System.out.println("---------------------------------");
		return map;
	}
}
jquery_demo_1 jquery_demo_1
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.6.2.js"></script>
<script type="text/javascript">
	$(document).ready(function(){
		for(var i = 1; i <= 4; i++){
			var _append = "tr_append_"+i;
			$("#"+_append).hide();
		}
		$("#tr_1").hover(function(){
			$("#tr_append_1").show();
		},function(){
			$("#tr_append_1").hide();
		}); 
		$("#tr_2").hover(function(){
			$("#tr_append_2").show();
		},function(){
			$("#tr_append_2").hide();
		}); 
		$("#tr_3").hover(function(){
			$("#tr_append_3").show();
		},function(){
			$("#tr_append_3").hide();
		}); 
		$("#tr_4").hover(function(){
			$("#tr_append_4").show();
		},function(){
			$("#tr_append_4").hide();
		});
	});
</script>
<style type="text/css">
	tr{
		margin-up : 10px;
		background-color:white;
	}
	#tr_append_1,#tr_append_2,#tr_append_3,#tr_append_4{
		background-color:lightblue;
	}
	#nobgcolor{
		background-color:white;
	}
	td{
		align:left;
	}
</style>
</head>
<body>
	<table width="600px">
		<tr id="tr_1">
			<td>jquery 事件1</td>
			<td>mouseover</td>
		</tr>
		<tr id="tr_append_1"><td id="nobgcolor"></td><td width="400px;">当鼠标指针移到某个Dom节点上的时候会触发mouseover事件</td></tr>
		<tr id="tr_2">
			<td>jquery 事件2</td>
			<td>mouseout</td>
		</tr>
		<tr id="tr_append_2"><td id="nobgcolor"></td><td width="400px;">当鼠标指针移出某个Dom节点上的时候会触发mouseout事件</td></tr>
		<tr id="tr_3">
			<td>jquery 事件3</td>
			<td>change</td>
		</tr>
		<tr id="tr_append_3"><td id="nobgcolor"></td><td width="400px;">当前Dom节点的值改变时候会触发change事件</td></tr>
		<tr id="tr_4">
			<td>jquery 事件4</td>
			<td>hover</td>
		</tr>
		<tr id="tr_append_4"><td id="nobgcolor"></td><td width="400px;">当鼠标指针移入或移出时会触发hover事件</td></tr>
	</table>
</body>
</html>
手动编译java文件 手动编译java文件
1. 假设在d:\codefile下建立一个src文件夹和一个classes文件夹
2. 进入src文件下:
   假设src文件在d:\codefile下
   cd d:\codefile\file
3. 输入命令javac -d ../classes Test.java
   这样就可以对src下的Test.java文件进行编译了,
   编译后的.class文件放在跟src文件夹同级的classes文件夹下
4. 运行.class文件
   java Test
java泛型编程 java泛型编程
1. Animal.java
package com.pojo;

public class Animal {
	public String name;
	public Integer age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
}


2. Cat.java
package com.pojo;

public class Cat extends Animal{
	private Integer fourFoot;

	public Integer getFourFoot() {
		return fourFoot;
	}

	public void setFourFoot(Integer fourFoot) {
		this.fourFoot = fourFoot;
	}
}

3. Bird.java
package com.pojo;

public class Bird extends Animal{
	private Integer twoFoot;

	public Integer getTwoFoot() {
		return twoFoot;
	}

	public void setTwoFoot(Integer twoFoot) {
		this.twoFoot = twoFoot;
	}
}

4. Demo.java
package com.test;

import java.util.ArrayList;
import java.util.List;

import com.pojo.Animal;
import com.pojo.Bird;
import com.pojo.Cat;
import com.pojo.Person;
import com.pojo.Worker;

public class Demo {
	private List list = new ArrayList();
	/**
	  * 定义泛型方法
	  */
	public <T> String getStr(T s){
		if(s instanceof String){
			return "this is a string : "+s.toString();
		}else{
			return "this is not a string : "+s.toString();
		}
	}
	
	public <T> List<T> getTMap(List<T> ld , List<? extends T> ls){
		for(T t : ls){
			ld.add(t);
		}
		return ld;
	}
	
	public <T> void saveObj(T o){
		list.add(o);
	}
	
	
	public static void main(String[] args) {
		List<String> ls = new ArrayList<String>();
//		List<Object> lo = ls; //error
		
		Demo d = new Demo();
		String s = d.getStr(1);
		System.out.println(s);
		String s2 = d.getStr("hello kity");
		System.out.println(s2);
		
		
		Cat cat_1 = new Cat();
		cat_1.setName("kit猫");
		cat_1.setAge(2);
		cat_1.setFourFoot(4);
		
		Cat cat_2 = new Cat();
		cat_2.setName("cool猫");
		cat_2.setAge(1);
		cat_2.setFourFoot(4);
		
		List<Cat> cat = new ArrayList<Cat>();
		cat.add(cat_1);
		cat.add(cat_2);
		List<Animal> ans = d.getTMap(new ArrayList<Animal>(), cat);
		d.showMessage(ans);
		
		
		Bird b_1 = new Bird();
		b_1.setName("喜鹊");
		b_1.setAge(2);
		b_1.setTwoFoot(2);
		
		Bird b_2 = new Bird();
		b_2.setName("黄莺");
		b_2.setAge(1);
		b_2.setTwoFoot(2);
		
		List<Bird> bs = new ArrayList<Bird>();
		bs.add(b_1);
		bs.add(b_2);
		List<Animal> lb = d.getTMap(new ArrayList<Animal>(), bs);
		d.showMessage(lb);
		
		
		Cat c = new Cat();
		c.setName("coffee猫");
		c.setAge(1);
		c.setFourFoot(4);
		d.saveObj(c);
		
		Bird b = new Bird();
		b.setName("麻雀");
		b.setAge(1);
		b.setTwoFoot(2);
		d.saveObj(b);
		System.out.println("***************************************");
		d.showMessage(d.list);
	}
	
	public <T> void showMessage(List<T> lb){
		for(T t : lb){
			if(t instanceof Animal){
				Integer footNumber = 0;
				Animal a = (Animal)t;
				if(a instanceof Bird)
					footNumber = 2;
				else if(a instanceof Cat)
					footNumber = 4;
				System.out.println(a.getName()+", "+a.getAge()+", "+(footNumber == 0 ? "":footNumber)+"条腿");
			}
		}
	}
}

自定义标签和标签库函数的学习 自定义标签和标签库函数的学习
自定义标签和标签库函数的学习--自己的Demo
自定义表单标签和标签库函数:.tld文件必须放在WEB-INF下
1. viewIpTag.tld
<?xml version="1.0" encoding="UTF-8" ?>  
  
<!-- 这是从 绿色版\apache-tomcat-7.0.42\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld 模板中拷贝过来的 -->  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
    version="2.0">  
    <description>我的自定义标签</description>
    <tlib-version>1.0</tlib-version>
    <short-name>自定义标签</short-name>
    <uri>/thisIsMyTag</uri>
    <tag>
    	<!-- 标签属性的名称 -->
    	<name>colname</name>
    	<tag-class>com.happiness.tag.ShowLocalIP</tag-class>
    	<!-- 有没有标签体,这里empty表示没有,有的话就写jsp -->
    	<body-content>JSP</body-content>
    	<attribute>
    		<description>姓名</description>
    		<name>username</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>性别</description>
    		<name>sex</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>年龄</description>
    		<name>age</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    </tag>
    <function>
    	<description>显示表格行的函数</description>
    	<name>showTableRow</name>
    	<function-class>com.happiness.tag.SelfFunction</function-class>
    	<function-signature>java.lang.String pdType(java.lang.String)</function-signature>
    </function>
</taglib>


2. ShowLocalIP.java
package com.happiness.tag;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.happiness.pojo.StudentPojo;

public class ShowLocalIP extends TagSupport{
	private String username;
	private String sex;
	private Integer age;

	@Override
	public int doStartTag() throws JspException {
		HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();
		JspWriter out = this.pageContext.getOut();
//		String ip = request.getRemoteAddr();
//		List<StudentPojo> ss = new ArrayList<StudentPojo>();
//		ss.add(new StudentPojo("张三","男",20));
//		ss.add(new StudentPojo("李四","男",20));
//		ss.add(new StudentPojo("王五","女",20));
//		ss.add(new StudentPojo("刘麻子","女",20));
		
		try{
				out.print("<tr width='50%'>");
				out.print("   <td width='30%'>"+this.username+"</td>");
				out.print("   <td width='30%'>"+this.sex+"</td>");
				out.print("   <td width='30%'>"+this.age+"</td>");
				out.print("</tr>");
		}catch(Exception e){
			throw new RuntimeException(e);
		}
		return super.doStartTag();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

}


3. SelfFunction.java
package com.happiness.tag;

public class SelfFunction {
	/**方法必须为static类型的*/
	public static String pdType(String ageStr){
		Integer age = null;
		if(ageStr == null || "".equals(ageStr)){
			age = 0;
		}else{
			age = Integer.parseInt(ageStr);
		}
		if(age < 18)
			return "青少年";
		else if(age >= 18 && age < 40)
			return "青年";
		else if(age >= 40 && age < 60)
			return "青壮年";
		else 
			return "老年";
	}
}

4. index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/thisIsMyTag" prefix="tt"%>  
<html>  
  <head>  
    <title>My JSP 'ELDemo.jsp' starting page</title>  
  </head>  
    
  <body>
    表格如下:  
    <!-- 因为没有标签体,所以直接一个标签就可以了 -->  
    <table>
    	<!-- 自定义标签实现的表格行 -->
    	<tt:colname username="张三" sex="男" age="20"></tt:colname>
    	<tt:colname username="李四" sex="男" age="23"></tt:colname>
    	<tt:colname username="王五" sex="女" age="25"></tt:colname>
    </table>
    <!-- 自定义标签库函数的使用 -->
    	16岁: ${tt:showTableRow("16")}<br />
    	26岁: ${tt:showTableRow("26")}<br />
    	46岁: ${tt:showTableRow("46")}<br />
    	66岁: ${tt:showTableRow("66")}<br />
  </body>  
</html>  

自定义标签和标签库函数的学习--自己的Demo 自定义标签和标签库函数的学习--自己的demo
自定义标签和标签库函数的学习--自己的Demo
自定义表单标签和标签库函数:.tld文件必须放在WEB-INF下
1. viewIpTag.tld
<?xml version="1.0" encoding="UTF-8" ?>  
  
<!-- 这是从 绿色版\apache-tomcat-7.0.42\webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld 模板中拷贝过来的 -->  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
    version="2.0">  
    <description>我的自定义标签</description>
    <tlib-version>1.0</tlib-version>
    <short-name>自定义标签</short-name>
    <uri>/thisIsMyTag</uri>
    <tag>
    	<!-- 标签属性的名称 -->
    	<name>colname</name>
    	<tag-class>com.happiness.tag.ShowLocalIP</tag-class>
    	<!-- 有没有标签体,这里empty表示没有,有的话就写jsp -->
    	<body-content>JSP</body-content>
    	<attribute>
    		<description>姓名</description>
    		<name>username</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>性别</description>
    		<name>sex</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    	<attribute>
    		<description>年龄</description>
    		<name>age</name>
    		<required>false</required>
    		<rtexprvalue>false</rtexprvalue>
    	</attribute>
    </tag>
    <function>
    	<description>显示表格行的函数</description>
    	<name>showTableRow</name>
    	<function-class>com.happiness.tag.SelfFunction</function-class>
    	<function-signature>java.lang.String pdType(java.lang.String)</function-signature>
    </function>
</taglib>


2. ShowLocalIP.java
package com.happiness.tag;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.happiness.pojo.StudentPojo;

public class ShowLocalIP extends TagSupport{
	private String username;
	private String sex;
	private Integer age;

	@Override
	public int doStartTag() throws JspException {
		HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();
		JspWriter out = this.pageContext.getOut();
//		String ip = request.getRemoteAddr();
//		List<StudentPojo> ss = new ArrayList<StudentPojo>();
//		ss.add(new StudentPojo("张三","男",20));
//		ss.add(new StudentPojo("李四","男",20));
//		ss.add(new StudentPojo("王五","女",20));
//		ss.add(new StudentPojo("刘麻子","女",20));
		
		try{
				out.print("<tr width='50%'>");
				out.print("   <td width='30%'>"+this.username+"</td>");
				out.print("   <td width='30%'>"+this.sex+"</td>");
				out.print("   <td width='30%'>"+this.age+"</td>");
				out.print("</tr>");
		}catch(Exception e){
			throw new RuntimeException(e);
		}
		return super.doStartTag();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

}


3. SelfFunction.java
package com.happiness.tag;

public class SelfFunction {
	/**方法必须为static类型的*/
	public static String pdType(String ageStr){
		Integer age = null;
		if(ageStr == null || "".equals(ageStr)){
			age = 0;
		}else{
			age = Integer.parseInt(ageStr);
		}
		if(age < 18)
			return "青少年";
		else if(age >= 18 && age < 40)
			return "青年";
		else if(age >= 40 && age < 60)
			return "青壮年";
		else 
			return "老年";
	}
}

4. index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/thisIsMyTag" prefix="tt"%>  
<html>  
  <head>  
    <title>My JSP 'ELDemo.jsp' starting page</title>  
  </head>  
    
  <body>
    表格如下:  
    <!-- 因为没有标签体,所以直接一个标签就可以了 -->  
    <table>
    	<!-- 自定义标签实现的表格行 -->
    	<tt:colname username="张三" sex="男" age="20"></tt:colname>
    	<tt:colname username="李四" sex="男" age="23"></tt:colname>
    	<tt:colname username="王五" sex="女" age="25"></tt:colname>
    </table>
    <!-- 自定义标签库函数的使用 -->
    	16岁: ${tt:showTableRow("16")}<br />
    	26岁: ${tt:showTableRow("26")}<br />
    	46岁: ${tt:showTableRow("46")}<br />
    	66岁: ${tt:showTableRow("66")}<br />
  </body>  
</html>  

jython_3 jython_3
1. BomVo.java
package com.newbee;

public class BomVo {
	private Integer id;
	private String bom_no; 
	private Integer bom_num;
	private String headerText;
	private Integer bom_sort_no;
	private String re_address;
	public BomVo(Integer id, String bom_no, Integer bom_num, String headerText,
			Integer bom_sort_no, String re_address) {
		this.id = id;
		this.bom_no = bom_no;
		this.bom_num = bom_num;
		this.headerText = headerText;
		this.bom_sort_no = bom_sort_no;
		this.re_address = re_address;
	}
	public BomVo(String bom_no, Integer bom_num, String headerText,
			Integer bom_sort_no, String re_address) {
		this.bom_no = bom_no;
		this.bom_num = bom_num;
		this.headerText = headerText;
		this.bom_sort_no = bom_sort_no;
		this.re_address = re_address;
	}
	public BomVo(String bom_no) {
		this.bom_no = bom_no;
	}
	public BomVo() {
	}
	public String getRe_address() {
		return re_address;
	}
	public void setRe_address(String re_address) {
		this.re_address = re_address;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getBom_no() {
		return bom_no;
	}
	public void setBom_no(String bom_no) {
		this.bom_no = bom_no;
	}
	public Integer getBom_num() {
		return bom_num;
	}
	public void setBom_num(Integer bom_num) {
		this.bom_num = bom_num;
	}
	public String getHeaderText() {
		return headerText;
	}
	public void setHeaderText(String headerText) {
		this.headerText = headerText;
	}
	public Integer getBom_sort_no() {
		return bom_sort_no;
	}
	public void setBom_sort_no(Integer bom_sort_no) {
		this.bom_sort_no = bom_sort_no;
	}
}

2. ProjectReconRecord.java
package com.newbee;

public class ProjectReconRecord {
	private Integer prr_id;
	private Integer contract_id;
	private Integer ttr_id;
	private Integer sell_id;
	private String prr_value;
	private String webDetail;
	private Integer config_id;
	public ProjectReconRecord(){
	}
	public ProjectReconRecord(Integer prr_id, Integer contract_id,
			Integer ttr_id, Integer sell_id, String prr_value,
			String webDetail, Integer config_id) {
		this.prr_id = prr_id;
		this.contract_id = contract_id;
		this.ttr_id = ttr_id;
		this.sell_id = sell_id;
		this.prr_value = prr_value;
		this.webDetail = webDetail;
		this.config_id = config_id;
	}
	public Integer getPrr_id() {
		return prr_id;
	}
	public void setPrr_id(Integer prr_id) {
		this.prr_id = prr_id;
	}
	public Integer getContract_id() {
		return contract_id;
	}
	public void setContract_id(Integer contract_id) {
		this.contract_id = contract_id;
	}
	public Integer getTtr_id() {
		return ttr_id;
	}
	public void setTtr_id(Integer ttr_id) {
		this.ttr_id = ttr_id;
	}
	public Integer getSell_id() {
		return sell_id;
	}
	public void setSell_id(Integer sell_id) {
		this.sell_id = sell_id;
	}
	public String getPrr_value() {
		return prr_value;
	}
	public void setPrr_value(String prr_value) {
		this.prr_value = prr_value;
	}
	public String getWebDetail() {
		return webDetail;
	}
	public void setWebDetail(String webDetail) {
		this.webDetail = webDetail;
	}
	public Integer getConfig_id() {
		return config_id;
	}
	public void setConfig_id(Integer config_id) {
		this.config_id = config_id;
	}
}

3. SToBUtil.java
package com.newbee;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.python.core.PyDictionary;
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyList;
import org.python.core.PyObject;
import org.python.core.PyString;

public class SToBUtil {
	private Integer contract_id; //合同号
	private Integer ttr_id; //解决方案id
	private Integer sell_id; //网元id
	private String webDetail; //网元详细分类
	/**转换(针对非基站)*/
	public void stob(){
		//工勘List
		PyList proReconList = new PyList();
		ProjectReconRecord prr = new ProjectReconRecord(1, contract_id, ttr_id, sell_id, "pr_en_1=朝阳广顺桥南,pr_en_2=是,pr_en_3=否", "terminal", -1);
		proReconList.add(prr);
		
		//网元对应的销售清单List
		PyList pl = new PyList();
		BomVo b1 = new BomVo(1, "DHY:TD-M01-010-001", 1, "", 0, "");
		BomVo b2 = new BomVo(1, "DHY:TD-M01-010-002", 2, "", 0, "");
		BomVo b6 = new BomVo(1, "DHY:TD-M01-010-006", 6, "", 0, "");
		
		pl.add(b1);
		pl.add(b2);
		pl.add(b6);
		//启动信息表对象
		
		PyList pList = new PyList();
		pList.add(new BomVo());
		
		
		
		PyFunction py_terminal = JythonFactory.getInstance().getPyFunctionFromJythonFile("stob_terminal", "test_terminal_new.py");
        PyDictionary pl_terminal = (PyDictionary)py_terminal.__call__(proReconList,pl);
		Set<String> set = pl_terminal.keySet();
		for(String key : set){
        	System.out.println("dhy = "+key+", number = "+pl_terminal.get(key));
        }
		
		System.out.println("*********************************");
//		PyFunction py_terminal_2 = JythonFactory.getInstance().getPyFunctionFromJythonFile("test", "terminal_2.py");
//        PyList pL_terminal_2 = (PyList)py_terminal_2.__call__(proReconList,pl);
////        PyList pL_terminal_2 = (PyList)py_terminal_2.__call__();
//        for(int i = 0; i < pL_terminal_2.size(); i++){
//        	BomVo b = (BomVo)pL_terminal_2.get(i);
//        	System.out.println("dhy = "+b.getBom_no()+", number = "+b.getBom_num()+ ", id = "+ b.getId());
//        }
//		PyFunction py_terminal_2 = JythonFactory.getInstance().getPyFunctionFromJythonFile("test", "testclass.py");
//		py_terminal_2.__call__();
        
       Map<PyObject , PyObject> bBomMap = new HashMap<PyObject , PyObject>();
        for(String key : set){
        	Integer num = (Integer)pl_terminal.get(key);
        	bBomMap.put(new PyString(key), new PyInteger(num));
        }
        PyFunction py_7 = JythonFactory.getInstance().getPyFunctionFromJythonFile("test_terminal", "test_terminal_new.py"); 
        PyDictionary pb_7 = new PyDictionary(bBomMap);
        PyList terminal_list = (PyList)py_7.__call__(pb_7);
        
        for(int i = 0; i < terminal_list.size(); i++){
        	BomVo b = (BomVo)terminal_list.get(i);
        	System.out.println("dhy = "+b.getBom_no()+", number = "+b.getBom_num()+ ", headerText = "+ b.getHeaderText() +", address = "+b.getRe_address());
//            System.out.println("dhy = "+b.getBom_no()+", number = "+b.getBom_num()+ ", headerText = "+ ConstantHandler.hand(headerText[0])+"/"+ConstantHandler.hand(headerText[1])+", address = "+ConstantHandler.hand(b.getRe_address()));
        }
        
	}
	public static void main(String[] args){
		SToBUtil su = new SToBUtil();
		su.stob();
	}
	
}

4. test_terminal_new.py
# -*- coding: utf-8 -*-
from com.newbee import BomVo
from com.newbee import ProjectReconRecord
class Bom(BomVo):
    def __init__(self,bom_no,id,bom_num,headerText,bom_sort_no,re_address):
        self.bom_no = bom_no
        self.id = id
        self.bom_num = bom_num
        self.headerText = headerText
        self.bom_sort_no = bom_sort_no
        self.re_address = re_address
    def changeBom_no(self,bom_no):
        self.bom_no = bom_no
    def changeId(self,id):
        self.id = id
    def changeBom_num(self,bom_num):
        self.bom_num = bom_num
    def changeHeaderText(self,headerText):
        self.headerText = headerText
    def changeBom_sort_no(self,bom_sort_no):
        self.bom_sort_no = bom_sort_no
    def changeRe_address(self,re_address):
        self.re_address = re_address
class ProjectReconRecordVo(ProjectReconRecord):
    def __init__(self):
        self.prr_id = 'prr_id'
        self.contract_id = 'contract_id'
        self.ttr_id = 'ttr_id'
        self.sell_id = 'sell_id'
        self.prr_value = 'prr_value'
        self.webDetail = 'webDetail'
        self.config_id = 'config_id'
    def setPrr_id(self,prr_id):
        self.prr_id = prr_id
    def setContract_id(self,contract_id):
        self.contract_id = contract_id
    def setTtr_id(self,ttr_id):
        self.ttr_id = ttr_id
    def setSell_id(self,sell_id):
        self.sell_id = sell_id
    def setPrr_value(self,prr_value):
        self.prr_value = prr_value
    def setWebDetail(self,webDetail):
        self.webDetail = webDetail
    def setConfig_id(self,config_id):
        self.config_id = config_id
    def getPrr_id(self):
        return self.prr_id
    def getContract_id(self):
        return self.contract_id
    def getTtr_id(self):
        return self.ttr_id
    def getSell_id(self):
        return self.sell_id
    def getPrr_value(self):
        return self.prr_value
    def getWebDetail(self):
        return self.webDetail
    def getConfig_id(self):
        return self.config_id
def stob_terminal(proReconList,pl):
    proRecon = proReconList[0]
    newProReconList = proRecon.getPrr_value().split(',')
    proReconMap = {}
    for m in range(len(newProReconList)):
        tempProReconList = newProReconList[m].split('=')
        proReconMap[tempProReconList[0]] = tempProReconList[1]
    newBBomMap = {}
    for n in range(len(pl)):
        b = pl[n]
        bDhy = b.getBom_no()
	print bDhy
        if bDhy == 'DHY:TD-M01-010-001':
            if 'DHY:TD-P01-010-001' in newBBomMap:
                p01 = newBBomMap['DHY:TD-P01-010-001']
                newBBomMap['DHY:TD-P01-010-001'] = p01 + b.getBom_num()
            else:
                newBBomMap['DHY:TD-P01-010-001'] = b.getBom_num()
            newBBomMap['DHY:TD-P01-010-002'] = 1
        elif bDhy == 'DHY:TD-M01-010-002':
            if proReconMap['pr_en_2'].encode('utf-8') == '是':
                newBBomMap['DHY:TD-P01-020-001'] = 2 * b.getBom_num()
            elif proReconMap['pr_en_3'].encode('utf-8') == '否':
                newBBomMap['DHY:TD-P01-020-002'] = b.getBom_num()
            newBBomMap['DHY:TD-P01-020-003'] = 2 * b.getBom_num()
        elif bDhy == 'DHY:TD-M01-010-003':
            newBBomMap['DHY:TD-P01-030-001'] = b.getBom_num()
        elif bDhy == 'DHY:TD-M01-010-004':
            newBBomMap['DHY:TD-P01-040-001'] = b.getBom_num()
        elif bDhy == 'DHY:TD-M01-010-005':
            newBBomMap['DHY:TD-P01-050-001'] = b.getBom_num()
        elif bDhy == 'DHY:TD-M01-010-006':
            if 'DHY:TD-P01-010-001' in newBBomMap:
                p01 = newBBomMap['DHY:TD-P01-010-001']
                newBBomMap['DHY:TD-P01-010-001'] = p01 + 3 * b.getBom_num()
            else:
                newBBomMap['DHY:TD-P01-060-001'] = 3 * b.getBom_num()
        elif bDhy == 'DHY:TD-M01-010-007':
            newBBomMap['DHY:TD-P01-070-001'] = 5 * b.getBom_num()
        else :
            pass
    return newBBomMap
def test_terminal(bBomMap):
    bBomList = []
    for (bDhy,v) in bBomMap.items():
	print bDhy , v
        if bDhy == 'DHY:TD-P01-010-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweinengji',1,'北京'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-010-002':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweiwuxian',2,'上海'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-020-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweinengji',1,'北京'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-020-002':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweiwuxian',1,'北京'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-020-003':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweinengji',3,'长沙'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-030-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweinengji',3,'长沙'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-040-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/waicai',1,'北京'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-050-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/waicai',2,'上海'.decode('utf-8')))
        elif bDhy == 'DHY:TD-P01-070-001':
            bBomList.append(Bom(bDhy,0,v,'terminal/huaweinengji',4,'广州'.decode('utf-8')))
        else :
            pass
    return bBomList
Global site tag (gtag.js) - Google Analytics