关于老项目替换class,jsp,js,html等等文件

Posted codecola

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于老项目替换class,jsp,js,html等等文件相关的知识,希望对你有一定的参考价值。

目前呆的项目组主要是维护工作,因为项目比较老,很多文件需要一个个替换,有新产品上就经常要这样替换,很烦,就抽空写了个用于替换修改的文件,当然还有不足之处,最后会提下。

package com.test;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.SftpProgressMonitor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class SftpUtil 
	private ChannelSftp channelSftp;
//  private ChannelExec channelExec;
  private Session session=null;
  private int timeout=60000;

  public SftpUtil(SshConfiguration conf) throws JSchException 
  	System.out.println("try connect to  "+conf.getHost()+",username: "+conf.getUserName()+",password: "+conf.getPassword()+",port: "+conf.getPort());
      JSch jSch=new JSch(); //创建JSch对象
      session=jSch.getSession(conf.getUserName(), conf.getHost(), conf.getPort());//根据用户名,主机ip和端口获取一个Session对象
      session.setPassword(conf.getPassword()); //设置密码
      Properties config=new Properties();
      config.put("StrictHostKeyChecking", "no");
      session.setConfig(config);//为Session对象设置properties
      session.setTimeout(timeout);//设置超时
      session.connect();//通过Session建立连接
  
  public void download(String src,String dst) throws JSchException, SftpException
      //src linux服务器文件地址,dst 本地存放地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.get(src, dst);
      channelSftp.quit();
  
  public void upLoad(String src,String dst) throws JSchException,SftpException
      //src 本机文件地址。 dst 远程文件地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.put(src, dst);
      System.out.println("upload file success!");
      channelSftp.quit();
  
  public void close()
      session.disconnect();
  
  public static void main(String[] args) throws IOException 
		/**
		 * *********上传准备文件***************
		 */
  	SshConfiguration configuration=new SshConfiguration();
  	configuration.setHost("你的ip地址");
      configuration.setUserName("你的连接用户名");
      configuration.setPassword("你的连接密码");
      configuration.setPort(22);//端口一般都是22
		File file = new File("E:\\uploadFile\\upload.txt");//需要上传的文件存放于txt里后面按行读取
		BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		String srcinput = null;
		try 
			while ((srcinput = bufferedReader.readLine()) != null) //按行读取
				SFTPUtils sftp=new SFTPUtils(configuration);
				String[] strs = srcinput.split("\\.");
				String type = strs[strs.length - 1];
				System.out.println("type:" + type);
				// 判断文件是class还是jsp或js
				String dst1 = "你的应用部分路径";//后面会根据读入的做String的一些处理后拼接成上传的完整位置
				if ("class".equals(type)) 
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) // 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					
					if ("某项目2".equals(strs1[3])) // 属于某项目2目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目2/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					
					if ("某项目3".equals(strs1[3])) // 属于某项目3目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目3/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					
				
				if ("jsp".equals(type) || "js".equals(type)) // 该项目jsp和js放一起,一起判断且只在某项目1下
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) // 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput.indexOf("view"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					
				
			
		 catch (Exception e) 
			e.printStackTrace();
		finally
			bufferedReader.close();
		
	

  这种比较定制化,因为每个项目统一的格式不一样,有些js等静态文件喜欢放static或者直接建个js文件目录,所以老项目就各自根据自己的项目定制化下吧。。一劳永逸哈哈哈,当然原本是想自己修改了什么文件就自动捕获上传,但是还不清楚如何获取自己修改的文件所以没有实现,就用了在txt里写文件全路径的方式按行读取逐个上传的办法,,也还有很多地方可以完善,如果有大佬知道怎么获取文件被自己修改,请说下~

以上是关于关于老项目替换class,jsp,js,html等等文件的主要内容,如果未能解决你的问题,请参考以下文章

替换class文件需要重启tomcat吗

在线等!关于jsp页面表单中文数据提交到后台出现乱码问题!

老版本tomcat下lib的jar包是不是可以用新版本的jar包覆盖替换

关于在jsp中的路径问题

tomcat 替换class文件需要重启吗

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件