##########################1.去除ejb#######################################################################
1.1:导包:javax.xml.rpc-api-1.1.1.jar (复制到路径:webconent/WEB-INF/lib);
1.2:从websphere的lib中复制j2ee.jar这个jar包,用压缩软件打开,(注意:j2ee.jar这个包不要放到tomcat下的lib内,tomcat服务器会跑不起来)
并且删除其中的:
javax/ejb/EJBLocalObject.class,
javax/ejb/SessionBean.class,
javax/ejb/CreateException.class,
javax/ejb/DuplicateKeyException.class,
javax/ejb/FinderException.class
javax/transaction/SystemException.class
等几个文件,然后导入这个jar包到项目中(复制到路径:webconent/WEB-INF/lib);
说明:此jar包包含了sessionbean,EJBLocalObject。原项目中bean实现了sessionbean,local实现了EJBLocalObject,几乎所有的bean文件都与
sessionbean以及j2ee包下的其他某些类产生了关联,不可能手动一个一个从bean中删除这些关联,因此直接导入j2ee这个jar包用于被bean的引用;
上面列出的几个文件被bean频繁引用,即使jar包中包含有这几个文件,编译时还是会报错导致了项目无法启动!!!
解决思路是:手动新建这几个类,用来被bean引用!
因此,现在我们手动在src下面新建一个package,路径就是javax.ejb,在这个包下新建一个接口EJBLocalObject,接口里面定义一个抽象方法remove;
再在包下新建一个SessionBean的空内容接口;
EJBLocalObject代码如下:
package javax.ejb;
public interface EJBLocalObject {
public void remove();
}
在javax.ejb包下新建一个类CreateException:
public class CreateException extends Exception {
public CreateException(){};
public CreateException(String msg){};
}
在javax.ejb包下新建一个类DuplicateKeyException
package javax.ejb;
public class DuplicateKeyException extends Exception {
}
在javax.ejb包下新建一个类FinderException
package javax.ejb;
public class FinderException extends Exception {
}
再新建一个包javax.transaction,在包下新建另一个异常类SystemException:
package javax.transaction;
public class SystemException extends Exception{
}
######################################2:人工操作,有一定工作量######(ejbfactory和spring配置文件已改好可直接采用)#####################################################
###############################################有350多个bean需要人工手动修改###########################################################################################
采用spring管理bean的准备工作:
向项目webconent/WEB-INF/lib导入spring的jar包,aop,aspects,beans,context,context-support,core,expression(主要是bean,core,context,context-support,其他几个应该暂时未用到)
在src目录下面新建一个applicationContext.xml,将所有bean配置进IOC容器,配置成多例模式;
必须的手动工作量:
更新到最新版本,在rad里面编译好能运行,这一步主要是让local和localhome全部编译好。
gen里面包含了编译好的local和localhome,将gen/src里面的com文件夹复制到intrust2015\java\EnfoIntrsutEJB\ejbModule,让2个com文件夹融合
这样所有bean,以及其对应的local和localhome都集合到了各自bean所在目录
准备修改的地方:(此文件夹还未进行以下修改):
2.1:所有bean取消implements sessionbean,改为implements本身的local;
(但是如果bean继承了busibean,而busibean默认是实现了Sessionbean的,如果直接更改busibean让其不实现sessionbean,项目中会蹦出来N多继承busibean的bean报错需要更改,因此不要更改busibean)
2.2:所有bean添加一个remove()的空操作方法(很多jsp末尾执行了local.remove()方法)
在eclipse中点击红线可以自动生成这个未被实现的remove方法
2.3:src目录下新建一个applicationContext.xml,配置所有的bean
2.4:EJBFactory更改getbean,
先类中建一个静态成员属性:
public static ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
之后所有getbean的方法全部修改为以下这一行:
return (xxxLocal)ctx.getBean("xxxBean");
##############################3:tomcat导包############################################################################
问题:有些jsp测试dwr正常,有些jsp页面测试dwr时报异常
测试jsp页面想调用bankcommandservice这个dwr,结果页面报异常java.lang.ClassNotFoundException: net.sf.json.util.PropertyFilter
而这个jar包json-lib-2.4-jdk15.jar(原jdk1.3)在项目中buildpath中是已经导入过的,为什么在jsp页面上还是会报错?
一开始怀疑是jdk版本的问题,原jsonlib包是jdk1.3的,官网最高jdk1.5,而我们用的jdk1.7,换成1.5的jar包还是报错。
解决方法是:将原项目依赖的jar包库enfolib下的所有包,全部复制放到tomcat下的lib中。(####可能只需要复制对应的json之类的几个jar包就行了,我是全部复制进去的,以防其它地方还是要导入进tomcat)
##########################4.导入所有jsp后编译时eclipse直接卡死##############################################################
导入java部分编译没问题,导入所有jsp后,编译卡住直到eclipse崩溃。
4.1:设置eclipse下的elicpse.ini,(按个人配置)
-Xms2024m
-Xmx2024m
-XX:MaxPermSize=2024m
4.2:去掉验证,参考http://www.cnblogs.com/shangxiaofei/p/5403642.html
重点注意:修改工作空间中,项目内.project文件中,删除掉下面这一行(js验证):
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
4.3:此时,全部项目可以编译了,但是会有js报红。
右键项目-properties-builders,去掉javascript validator前面的勾,project-build automatically勾选上,项目右键刷新
4.4:修改web.xml
去掉所有ejb-local-ref相关的内容
##############################5.tomcat+sqlserver+jdk1.7的 JNDI配置##########################
5:tomcat+sqlserver的jndi配置
5.1:下载sqlserver的驱动jar包,地址是:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774
下载其中的exe文件,解压,如果用的是jdk1.7,那么对应的jar包是jre7下面的sqljdbc41.jar
5.2:复制这个驱动包到你的jdk1.7安装目录\jre\lib\ext,比如我的是D:\jdk1.7.0_65\jre\lib\ext;
5.3 复制驱动包到tomcat安装目录的lib中,如我的是D:\Tomcat 7.0\lib
5.4 修改tomcat安装目录\conf\context.xml,在<Context>节点中增加如下JNDI配置:
<Resource
name="jdbc/intrust"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
username="sa"
password="000000"
dirverClassName="com.microsoft.sqlser.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1:1433; DatabaseName=intrust"
/>
5.5 如果要在本机eclipse的测试环境中运行项目,那么在eclipse中的server(新建一个server时就会自动生成这个项目),打开context.xml,按5.4一样增加就行了;
如果加上这些内容后项目跑不起来,尝试把这几行内容都写成一行。
5.6 (可忽略)在webcontent目录下写个测试jsp,里面调用Argument中的一个连接数据库的方法,比如在body中写入下面的java代码
<%=Argument.getType_content("10010001")%>,(数据表中对应字段是“资金到账”);
在eclipse左侧项目资源管理器中选中这个jsp文件,右键-run as -run on server,这样会在本地tomcat测试环境中从浏览器打开这个页面,如果页面上显示“资金到账”,说明JNDI配置成功;
########################6.修改项目访问路径,原访问路径包含项目名,必须取消项目名,否则项目中有些页面路径不对报404#####################3
如果是eclipse测试环境:
双击tomcat服务器,弹出测试server的配置页面,点击modules,选择本项目,edit,修改path为"/"(没有双引号)
发布到正式tomcat环境时:
正规的改法应该是配置虚拟目录:(推荐)
项目war包Intrust放到webapp目录下
在tomcat下的server.xml中,找到 <Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
在下方添加一行:<Context path="" docBase="Intrust" reloadable="true" />
docBase中的值是项目名字;
也可以:
1.删除ROOT下所有文件及文件夹,或者直接重命名默认的ROOT为ROOT_bak
2.把我们项目的war包解压后,项目目录下的所有文件和子目录都拷贝到ROOT目录下即可
或者有更狠的一招:直接删掉ROOT目录,然后把我们的项目打包名称改成ROOT.war,放到webapps下就行
######################7.axis包调整#(已整合到lib包)##################################
调用webservice接口时候会提示class not found
要将enfolib中的axis相关包放到WEBROOT/WEB-INF/lib中
axis.jar,
axis2-adb-1.4.1.jar,
axis2-adb-codegen-1.4.1.jar,
axis2-kernel-1.4.1.jar
commons-discovery.jar
activation-1.1.jar
mail.jar
################8.开始跑项目-细节调整#################################################
1:打开项目首页报错空指针异常,定位到busibean.java,方法:query
原因是rowset一开始并没有被初始化,所以为null,在方法中却直接就调用rowset.close(),所以报空指针异常;
注意:原ejb项目不报异常时因为busibean的EJBCreate方法中对rowset进行的赋值初始化,每个ejb生成时会执行ejbcreate()方法;
最直接的方法:在BUSIBEAN的默认构造方法中,给rowset初始化赋值;
public BusiBean(){
try {
rowset = new sun.jdbc.rowset.CachedRowSet();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
或者直接在query之类要用到rowset的方法内部初始化赋值;
2:busibean中修改next时当游标已经在最后时再次next就报异常的问题:
修改所有next使游标后移的方法
public boolean getNext() throws Exception{
boolean hasnext=true;
try{
hasnext=rowset.next();
}catch(Exception e){
return false;
}
return hasnext;
}
同理有:getNextView,getNextZhcx等2个方法;
3:dwr.xml警告消除(可忽略)
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
查看dwr.jar是2.0版本的,上面可能要按下行修改来消除警告:
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
############################################################################################################################################
####################################9.数据库重点改动:关于页面报异常:该存储过程没有返回结果集################################################
############################################################################################################################################
打开当前产品时,基本信息中,页面异常,提示com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。
打开页面调用的存储过程:
——————————————————————————————————
在
WITH ENCRYPTION
AS
下一行补上: SET NOCOUNT ON (必须添加)
——————————————————————————————————
说明:几乎绝大部分query查询的存储过程都没有添加SET NOCOUNT ON ,大概有1000多条存储过程需要添加!!!
手动一条一条改,太耗时,所以写了个java代码直接通过程序来更改:
事先准备:将database/PROC/query里面所有存储过程复制到D:/modsql/PROC-query,
将database/TA/PROC文件夹里面所有的query的存储过程复制到D:/modsql/TA-PROC
在eclipse中建个项目,建个类,将文件夹中ModSQL.java的方法复制进去,执行程序可批量修改sql,速度很快。
==================================================================================================
注意:main中的path路径,要修改哪个文件夹下的存储过程,就修改为对应文件夹的路径!!!
在eclipse里面执行这个小程序时,会将存储过程自动添加上SET NOCOUNT ON,但以下存储过程除外(写法不一样,没有写加密的语句):
执行这个java程序后会在控制台输出需要手动修改的存储过程的列表,可以将这个列表复制到一个txt文件,以便手动添加SET NOCOUNT ON的时候用于对照查看;
列表如下:
PROC-QUERY目录下
SP_QUERY_INVESTSSINFO_TOTAL.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TCHEQUEYE_NO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TCONTRACTSS.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TDONATEINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TENTCWZBINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TENTCWZBINFO_YEAR.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TENTLEVELINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TENTRELATION.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTFINANCE_COMM.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTFINANCE_ENT.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTSSINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTSSINFO_LIST.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTSSJDINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTSSZXINFO.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TINVESTSS_DETAIL.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TOTHERBUSIFLAG.SQL---需要手动添加SET NOCOUNT ON
SP_QUERY_TOTHERBUSIFLAG_FOR_CHECK.SQL---需要手动添加SET NOCOUNT ON
至此,经过java程序自动修改,手动补漏修改后,下一步就是将这些更改过的存储过程在数据库上执行一遍;
这里不用一个一个的在数据库上执行,利用工具合并,再执行;
工具:udFile.exe,可以将一个文件夹下的所有存储过程合并到一个sql文件中,然后直接在数据库上执行这个合并后的文件即可;
基于数据库,可能有个别存储过程执行时报错,提示xx列名不对什么的,应该要对数据库进行数据维护,先忽略掉。
############################################################################################################################################
############################10.jsp中import包含“,,”导致jsp编译报错的问题######################################
首页:
1:现金管理相关菜单-功能类菜单-基金信息,页面报错打不开
talfund_query.jsp import中2个连续的",",去掉一个
2:现金管理相关菜单-功能类菜单-基金信息审核,页面报错打不开
talfund_check.jsp import中2个连续的",",去掉一个
后来发现还是可能存在很多jsp有这种情况,利用问题9的思路,新写一个java程序用于查找所有存在“,,”的jsp文件;
参见文件夹下的modJSP.java,在eclipse中运行这个java程序,会在控制台中打印出所有包含",,c",",,j"的jsp文件,
(所有import中,都是",,com.enfo....."或者",,java.......")
此程序只能打印jsp列表,没有直接将",,"改成",",需要手动修改;我用的项目版本查出来有57个jsp需要手动修改
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_fee_apply_print.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_fee_apply_print11.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_fee_apply_print11_zhongtai.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_fee_apply_update11.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_install_pay_list_print.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\efifs\fee\problem_start_tspotaward.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\financing\accountdata\loan_3_2_2.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\financing\finacialcard\finacialcard_info2.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\financing\finacialcard\finacialcard_info_add.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\financing\square\cpoutinfo_update.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\nav_chart\intrustdetail.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\nav_chart\intrustscale.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\newui\employee_main.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\newui\leader_main.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\downloadFile.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\navigator.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\noticeMoreGzts_1.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\noticeMoreGzts_1_1.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\noticeMoreGzts_2.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\noticeMoreGzts_2012.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\notice_form_history.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\notice_form_pages.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\notice_intrust.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_dclsw.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_dplsw.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_fxyj.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_fxyj_dclsw.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_fxyj_yclsw.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_gl_stgm.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_gzjh.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_problem_confirm.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_problem_stat.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_work_warn.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\potal_xmdt.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\sso_param_info.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\zjtdefault.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal\zjt_work_index.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\portal_2012\problem_portal.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\projects\forms\problem_invest_order_applymoney.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\projects\problem_fiduciary_scale.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\projects\problem_fiduciary_scale_1.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\projects\product_fl_list.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\system\systemparam\talfund_check.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\system\systemparam\talfund_query.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_intrustreward.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_intrustreward_check.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_intrustreward_check_back.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_intrustreward_check_do.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_intrustreward_remove.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\product_statistic.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\project_problem_start_check_info.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\project_problem_start_info.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\project_problem_start_modi.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\project_problem_start_new.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\transaction\project\project_problem_start_uncheck_info.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\webreport\bmgmbc.jsp
D:\enfo\javaeclipse\EnfoIntrsutWeb\WebContent\webreport\xtgmbc.jsp
##################################其他细节问题##################################
前台业务
1:项目产品管理-产品管理-产品设置-简介
ProductBean.java 方法public boolean getNext(String DBdriver) throws BusiException
位置:click_flag = Utility.parseInt(Utility.trimNull(rowset.getObject("click_flag")),new Integer(0));
解决方法:要求SP_QUERY_TPRODUCT_ID返回CLICK_FLAG字段
或者直接将上面这行java改成:
try{
click_flag = Utility.parseInt(Utility.trimNull(rowset.getObject("click_flag")),new Integer(0));
}catch(Exception e){
click_flag = Integer.valueOf("0");
}
2:产品核算管理-中间收益-审核-付款打印
sk_print.jsp 乱码
综合查询-缴款查询
pay_collection_print.jsp乱码
//String product_code = Utility.trimNull(request.getParameter("product_code"));
String product_code=request.getParameter("product_code")==null?"":new String(request.getParameter("product_code").getBytes("iso-8859-1"), "GBK");
可以像上述改动这样直接在jsp里面改动,但是如果有其他的jsp也乱码,这种就很麻烦。
原项目是以GBK编码运行的。
最直接的方法是直接在tomcat里面改动,tomcat不论测试环境,正式环境,找到server.xml,以下两个位置改动,都是在后面加上URIEncoding=‘GBK‘这个属性。
<Connector connectionTimeout="20000" port="9080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding=‘GBK‘/>
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" URIEncoding=‘GBK‘/>
###############################关于jdk版本################################################
目前项目修改后成功运行的环境:tomcat7配jdk1.7,elicpse配jdk1.7;
在此基础上,测试:
当tomcat7配jdk1.7,eclipse配1.8时(sqlserver驱动jar包导入到jdk1.8对应的文件夹中,此时tomcat7中的sqlserver驱动jar包配的还是jdk1.7版本的不变),项目可以跑起来
当tomcat7配jdk1.7,eclipse配1.8时(sqlserver驱动jar包没有导入到jdk1.8对应的文件夹中,此时tomcat7中的sqlserver驱动jar包配的还是jdk1.7版本的不变),项目也可以跑起来
附录:修改sql和查找jsp的java代码
----------批量修改sql
package com.enfo.intrust.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class ModSQL { public void modify(String path) throws IOException{ File dir=new File(path); String[] fileList=dir.list(); for(int i=0;i<fileList.length;i++){ //读取文件 File currentFile=new File(path+"\\"+fileList[i]); //判断是否包含“NOCOUNT” if(!hasnocount(currentFile)){//如果当前文件中不包含NOCOUNT setNOCOUNT(currentFile); } } } //判断是否存在SET NOCOUNT ON public boolean hasnocount(File file) throws IOException{ boolean flag=false; String temp; BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream(file))); while((temp=bReader.readLine())!=null ){ if (temp.contains("NOCOUNT")) return true; } bReader.close(); return flag; } //添加 SET NOCOUNT ON public void setNOCOUNT(File file) throws IOException{ StringBuffer sb=new StringBuffer(); String temp; BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream(file))); while((temp=bReader.readLine())!=null ){ if(temp.contains("WITH ENCRYPTION")){ sb.append(temp.trim()+"\n"); }else sb.append(temp+"\n"); } bReader.close(); int start=sb.indexOf("WITH ENCRYPTION"); if(start!=-1) { sb.insert(start+18, "\nSET NOCOUNT ON"); }else System.out.println(file.getName()+"---需要手动添加SET NOCOUNT ON"); BufferedWriter bWriter =new BufferedWriter(new FileWriter(file)); bWriter.write(sb.toString()); bWriter.close(); } public static void main(String[] args) throws IOException { String path="D:\\modsql\\TA-PROC"; ModSQL ms=new ModSQL(); ms.modify(path); } }
---------查找jsp
package com.enfo.intrust.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class modJSP { public void modify(String path) throws IOException{ File dir=new File(path); String[] fileList=dir.list(); for(int i=0;i<fileList.length;i++){ //读取文件 File currentFile=new File(path+"\\"+fileList[i]); if(currentFile.isFile()){ //如果是文件 if( currentFile.getName().contains("jsp")&&hasnocount(currentFile)){//如果是jsp文件并且当前文件中包含,, System.out.println(currentFile.getAbsolutePath()); } }else{//如果是文件夹,递归操作 String newpath=path+"\\"+currentFile.getName(); modify(newpath); } } } //判断是否存在SET NOCOUNT ON public boolean hasnocount(File file) throws IOException{ boolean flag=false; String temp; BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream(file))); while((temp=bReader.readLine())!=null ){ if (temp.contains(",,c")||temp.contains(",,j")) return true; } bReader.close(); return flag; } public static void main(String[] args) throws IOException { String path="D:\\enfo\\javaeclipse\\EnfoIntrsutWeb\\WebContent"; modJSP mj=new modJSP(); mj.modify(path); } }