1.要导入Excel,但是获取到的数字是科学计数法,比如11001000获取到的是1.01+E7
// 把科学计数转换成常规数字
String s=control.getStrValue("CONTROL_TYPE_NAME"); //s是1.01+E7
BigDecimal bd = new BigDecimal(s);
String bd1=bd.toPlainString();
备注:最后发现既然是字符串类型的,为什么不把Excel的格式改成文本,改了发现好了,麻麻的
2、验证URL
if(!ip.matches("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b")) {mb.setFalseWithMsg("ip地址格式不正确!");};
3、验证网址
String test="((https|http|ftp|rtsp|mms)?://)?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)";
if(!webServiceAddress.matches(test)) {
mb.setFalseWithMsg("webService地址格式不正确");
}
4、将一些信息生成xml
public String getStr() {
return "\n\twhatName \n\twhatSign \n\tnull \n \n";
}
StringBuffer sb = new StringBuffer();
sb.append("\n");
// 缓急程度
String newRapId = getStr().replace("whatName", "缓急程度");
newRapId = newRapId.replace("whatSign", "rapId");
if (rapId != null) {
newRapId = newRapId.replace("null", rapId);
}
sb.append(newRapId);
// 发文单位
String newCreateUserCompany = getStr().replace("whatName", "发文单位");
newCreateUserCompany = newCreateUserCompany.replace("whatSign", "createUserCompany");
if (createUserCompany != null) {
newCreateUserCompany = newCreateUserCompany.replace("null", createUserCompany);
}
sb.append(newCreateUserCompany);
// 接收单位
String newReceiveCompanyName = getStr().replace("whatName", "接收单位");
newReceiveCompanyName = newReceiveCompanyName.replace("whatSign", "receiveCompanyName");
if (receiveCompanyName != null) {
newReceiveCompanyName = newReceiveCompanyName.replace("null", receiveCompanyName);
}
sb.append(newReceiveCompanyName);
return sb.toString();
public void writeXml(FileInfo fileInfo) {
try {
String xmlFile = parseListToString(fileInfo);
File filePath = new File("D:/OAFILE");
if (!filePath.exists()) {
filePath.mkdirs();
}
String target = "D:/OAFILE/" + fileInfo.getId() + ".xml";
FileWriter writer = new FileWriter(target);//这是第一种写法
//第二种写法:这种可以确定编码类型
Writer writer=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));
writer.write(xmlFile);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
5、快速复制
public void moveFile(String source, String target) {
FileChannel in = null;
FileChannel out = null;
FileInputStream inStream = null;
FileOutputStream outStream = null;
try {
inStream = new FileInputStream(source);
outStream = new FileOutputStream(target);
in = inStream.getChannel();
out = outStream.getChannel();
in.transferTo(0, in.size(), out);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inStream.close();
in.close();
outStream.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
6、从指定地址进行文件下载
public void downloadFile(String source, String target) {
try {
URL url = new URL(source);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));
byte[] buffer = new byte[1204];
int byteRead = 0;
while ((byteRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, byteRead);
}
bos.flush();
bos.close();
bis.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
7、浏览器执行文件下载
File file=new File("D:/test.docx");
final HttpServletResponse response = getResonse();
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-disposition", "attachment;filename=temp" + file.getName());
ServletOutputStream os = response.getOutputStream();
InputStream is = new FileInputStream(file);
byte[] buff = new byte[10240];
int batch;
while ((batch = is.read(buff)) != -1) {
os.write(buff, 0, batch);
}
is.close();
os.close();
8、zip文件上传
// 文件上传
public boolean fileUpLoad(String upSource, String upTarget) {
try {
URL url = new URL(upTarget);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "application/zip");
BufferedOutputStream bos = new BufferedOutputStream(conn.getOutputStream());
// 读取文件上传到服务器
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(upSource));
byte[] bytes = new byte[1024];
int readByte = 0;
while ((readByte = bis.read(bytes, 0, 1024)) > 0) {
bos.write(bytes, 0, readByte);
}
bos.flush();
bos.close();
bis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (MalformedURLException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
9、将文件夹打包成zip
// 压缩文件夹
private boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {
File sourceFile = new File(sourceFilePath);
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
ZipOutputStream zos = null;
if (!sourceFile.exists()) {
System.out.println("要压缩的文件夹不存在");
return false;
} else {
try {
File zipFile = new File(zipFilePath + "/" + fileName + ".zip");
if (zipFile.exists()) {
zipFile.delete();// 如果有,先删除,实现覆盖
}
File[] sourceFiles = sourceFile.listFiles();
if (null == sourceFiles || sourceFiles.length < 1) {
System.out.println("要压缩的文件夹没有文件存在");
return false;
} else {
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(new BufferedOutputStream(fos));
byte[] bufs = new byte[1024 * 10];
for (int i = 0; i < sourceFiles.length; i++) {
// 创建ZIP实体,并添加进压缩包
ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
zos.putNextEntry(zipEntry);
//=====================
//使用这句可以确定编码,但是Java自带的包没有这个功能
//所以必须用ant.jar
//import org.apache.tools.zip.ZipEntry;
//import org.apache.tools.zip.ZipOutputStream;
zos.setEncoding("gbk");
//====================
// 读取待压缩的文件并写进压缩包里
fis = new FileInputStream(sourceFiles[i]);
bis = new BufferedInputStream(fis, 1024 * 10);
int read = 0;
while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
zos.write(bufs, 0, read);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
// 关闭流
try {
if (null != bis)
bis.close();
if (null != zos)
zos.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
return true;
}
10、a标签的onclick事件不能传除数字之外的参数。
standardFileName += " downLoad(\""+source+"\");'>" + fileName + ";";
解决方法:参数前后用双引号,转义字符后使用。
11、对字符串进行MD5加密
//要加密的字符串
String str="what";
//确定计算方法
MessageDigest md=MessageDigest.getInstance("MD5");
BASE64Encoder encode=new BASE64Encoder();
//加密后的字符串
String newStr=encode.encode(md.digest(str.getBytes()));
System.out.println(newStr);
12、导入zip压缩包,并且解压
try {
//filePath是要导入的压缩包地址;后面必须加Charset.forName("gbk");否则解压中文文件报错
ZipFile zipFile = new ZipFile(filePath, Charset.forName("gbk"));
// 获取ZIP文件里所有的entry
Enumeration entrys = zipFile.entries();
while (entrys.hasMoreElements()) {
entry = (ZipEntry) entrys.nextElement();
entryName = entry.getName();
String fileSize = String.valueOf(entry.getSize());
File targetFile = new File(target);
os = new FileOutputStream(targetFile);
byte[] buffer = new byte[4096];
int bytes_read = 0;
// 从ZipFile对象中打开entry的输入流
is = zipFile.getInputStream(entry);
while ((bytes_read = is.read(buffer)) != -1) {
os.write(buffer, 0, bytes_read);
}
}
} catch (IOException err) {
System.err.println("解压缩文件失败: " + err);
flag = false;
}
13、读取xml文件信息
xml文件内容:
<prop>
<propname>标题propname>
<propsign>Namepropsign>
<propvalue>发送测试propvalue>
prop>
<prop>
<propname>类型propname>
<propsign>Typepropsign>
<propvalue>12propvalue>
prop>
<prop>
<propname>编号propname>
<propsign>Nopropsign>
<propvalue>11propvalue>
prop>
<prop>
<propname>成为日期propname>
<propsign>sendDatepropsign>
<propvalue>2017-10-12propvalue>
prop>
<prop>
<propname>密级propname>
<propsign>secretpropsign>
<propvalue>40propvalue>
prop>
<prop>
<propname>密级年propname>
<propsign>secretYearpropsign>
<propvalue>12propvalue>
prop>
<prop>
<propname>缓急程度propname>
<propsign>rapIdpropsign>
<propvalue>急件propvalue>
prop>
获取到的都是propvalue的内容
SAXReader reader = new SAXReader();
List list = new ArrayList<>();
try {
Document doc = reader.read(new File(source));
Element root = doc.getRootElement();
for (Iterator i = root.elementIterator("prop"); i.hasNext();) {
Element foo = (Element) i.next();
for (Iterator j = foo.elementIterator("propvalue"); j.hasNext();) {
Element joo = (Element) j.next();
list.add(joo.getText());
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
//===================
//不使用循环一步步读下去
//===================
//内容:
<archman>
<DocSource>
<system>OAsystem>
<type>普通文件type>
<toDepts>
<dept>
<deptname>whatdeptname>
<system>
<name>阿斯蒂芬name>
<count>1count>
system>
dept>
<dept>
<deptname>whatdeptname>
<system>
<name>等等name>
<count>1count>
system>
dept>
toDepts>
DocSource>
//需要读取到阿斯蒂芬和等等
InputStream in=new FileInputStream(new File(source));
Document doc = reader.read(in);
Element root = doc.getRootElement();
Element DocSource=(Element) root.elements().get(0);
List toDepts=DocSource.element("toDepts").elements();
String deptName="";
for (Element e : toDepts) {
if(deptName=="") {
deptName=e.element("system").element("name").getText();
}else {
deptName+=","+e.element("system").element("name").getText();
}
}
14、导入之前想让用户下载模板
<a href="downXmlFileInfo.action" style="color:blue;text-decoration:underline;cursor: pointer;">点击这里下载xml模板a>
String path=Environment.getWebRootPath()+"imp\\template\\";
String fileName="fileInfo.xml";
try {
final HttpServletResponse response = getResonse();
response.setCharacterEncoding("UTF-8");
File file = new File(path, fileName);
String name = file.getName();
// 需要定义为变量,如果tomcat中定义了Connector port="8080" URIEncoding="UTF-8"则不用转此code
String code = "ISO_8859_1";
name = new String(name.getBytes("UTF-8"), code);
//关键代码片
response.setHeader("Content-disposition", "attachment;filename=" + name);
ServletOutputStream os = response.getOutputStream();
//关键代码片
InputStream is = new FileInputStream(file);
byte[] buff = new byte[10240];
int batch;
while ((batch = is.read(buff)) != -1) {
os.write(buff, 0, batch);
}
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
15、js对HTML页面table增删行
增加行:
//.rows.length表示现在已有多少行,可以确保新增行的时候加在最后
//添加行
var newTr = document.getElementById("fileUploadAttach").
insertRow(document.getElementById("fileUploadAttach").rows.length);
//添加行中的列
var newTd0 = newTr.insertCell();
newTd0.width="25px;";
newTd0.align="center";
var newTd1 = newTr.insertCell();
newTd1.width="300px;";
newTd1.align="left";
var newTd2 = newTr.insertCell();
newTd2.width="55px;";
//赋值
newTd0.innerHTML ="";
newTd1.innerHTML =" "+fileName;
newTd2.innerHTML ="";
删除所选行:
function deleteFile(obj,fileId){
var index=obj.parentNode.parentNode.rowIndex;
var table = document.getElementById("fileUploadAttach");
table.deleteRow(index);
}
删除增加的所有行:
var tab1 = document.getElementById("fileUploadText");
var rowsText=tab1.rows.length;
//只能倒着删
if(rowsText>1){
for(var i=rowsText-1;i>0;i--){
tab1.deleteRow(i);
}
}
16、使用ajax的时候加上alert就成功,去掉alert就走不通,数据错误
原因:因为alert给了系统赋值的时间,所以有了alert就对了。
解决:ajax加上async:false,就可以了,表示同步。
17、在js中对字符串进行替换
问题:只能替换第一个
解决:使用正则替换
var sendDate=$("[name='fileInfo.sendDate']").val();
//sendDate:2017-02-05 sendDateNum:20170205
var sendDateNum=Number(sendDate.replace(/-/g,""));
强转为数字,两个日期可以加减比较大小。
18、使用jQuery获取input的值获取不到
原因:字母写错了;命名出现重名,获取的不是你输入的那个;
19、js操作table,获取所选行的行号和某一格的值
function deleteFile(obj){
var index=obj.parentNode.parentNode.rowIndex;//获取行号
var fileId=$("table").find("tr").eq(2).find("td").eq(4).text();//获取第2行第4列的值
}
20、使用uploadServlet上传文件
response.setContentType("text/html;charset=UTF-8");
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
Iterator itr = items.iterator();
StringBuffer failMsg = new StringBuffer("");// 失败原因
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
fn = fileName.substring(fileName.lastIndexOf("/") + 1);
//扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
String newFileName = UUID.randomUUID().toString() + "." + fileExt;
try {
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
} catch (Exception e) {
failMsg.append(";系统错误,上传失败");
return;
}
}
JSONObject obj = new JSONObject();
response.getWriter().write(obj.toJSONString());
21、文件加密与解密
public static Key getKey() {
Key deskey = null;
try {
// 固定密钥
byte[] buffer = new byte[] { 0x47, 0x33, 0x43, 0x4D, 0x4F, 0x50, 0x31, 0x32 };
deskey = (Key) new SecretKeySpec(buffer, "DES");
} catch (Exception e) {
throw new RuntimeException("Error initializing SqlMap class. Cause: " + e);
}
return deskey;
}
/**
* 文件file进行加密并保存目标文件destFile中
*
* @param file 要加密的文件 如c:/test/srcFile.txt
* @param destFile 加密后存放的文件名 如c:/加密后文件.txt
*/
public static void encrypt(String file, String destFile) throws Exception {
Cipher cipher = Cipher.getInstance( "DES/ECB/PKCS5Padding ");
cipher.init(Cipher.ENCRYPT_MODE, getKey());
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(destFile);
CipherInputStream cis = new CipherInputStream(is, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = cis.read(buffer)) > 0) {
out.write(buffer, 0, r);
}
cis.close();
is.close();
out.close();
}
/**
* 文件采用DES算法解密文件
*
* @param file 已加密的文件 如c:/加密后文件.txt
* @param destFile
* 解密后存放的文件名 如c:/ test/解密后文件.txt
*/
public static void decrypt(String source){
InputStream is=null;
OutputStream out=null;
CipherOutputStream cos=null;
File file=new File(source);
File destFile=new File("D://12"+source.substring(source.lastIndexOf(".")));
try {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, getKey());
is = new FileInputStream(file);
out = new FileOutputStream(destFile);
cos = new CipherOutputStream(out, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = is.read(buffer)) >= 0) {
System.out.println();
cos.write(buffer, 0, r);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
cos.close();
out.close();
is.close();
file.delete();
destFile.renameTo(file);
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("解密完成");
}
22、在for循环中操作文件无效
解决:for循环采用倒序就可以了。
23、文件解压后文件持续占用
问题一:压缩包删除不了
解决:除了关闭流,还要关闭zipFile。zipFile.close();
问题二:解压好的文件操作时表示占用
解决:关闭流之后加上System.gc();
24、jedis使用
jedis.properties:
host=193.122.1.21
port=6379
maxTotal=20
maxIdle=10
JedisUtils.java:
public class JedisUtils {
private static int maxTotal = 0;
private static int maxIdle = 0;
private static String host = null;
private static int port = 0;
private static JedisPoolConfig config = new JedisPoolConfig();
static {
// 读取配置文件
InputStream in = JedisUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties pro = new Properties();
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
maxTotal = Integer.parseInt(pro.getProperty("maxTotal"));
maxIdle = Integer.parseInt(pro.getProperty("maxIdle"));
port = Integer.parseInt(pro.getProperty("port"));
host = pro.getProperty("host");
config.setMaxTotal(maxTotal);
config.setMaxIdle(maxIdle);
}
private static JedisPool pool = new JedisPool(config, host, port);
// 提供一个返回池子的方法
public static JedisPool getPool() {
return pool;
}
// 获得一个jedis资源方法
public static Jedis getJedis() {
return pool.getResource();
}
// 关闭的方法
public static void close(Jedis jedis) {
if (jedis != null) {
jedis.close();
}
}
}
25、Java实现控制打开网页链接及关闭
String site="http://mp.weixin.qq.com/s/5WDhPf1meNCZ4YVyXbJt2Q";
try {
Desktop desktop = Desktop.getDesktop();
URI url = new URI(site);
for (int i = 0; i < 10; i++) {
//执行这里就可以打开了
desktop.browse(url);
}
Thread.sleep(8000);
//用360chrome.exe打开,所以这里关闭这个。
Runtime.getRuntime().exec("taskkill /F /IM 360chrome.exe");
} catch (Exception e) {
e.printStackTrace();
}
26、oracle日期操作
//date转换成timestamp
SELECT CAST(SYSDATE AS TIMESTAMP) FROM DUAL;
//timestamp类型转换为date类型
SELECT CAST(CREATE_TIME AS DATE) FROM XTABLE;
//计算date类型之间相差天数
SELECT ROUND(DATE1-DATE2) FROM XTABLE;
//计算timestamp类型之间相差的天数
SELECT ROUND(CAST(TIMESTAMP1 AS DATE)-CAST(TIMESTAMP2 AS DATE)) FROM XTABLE;
27、存数据库前,转换date或String到timestamp类型
//date
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Timestamp.valueOf(sdf.format(new Date()));
//字符串
String str="2017-10-11";
Timestamp.valueOf(str+" 00:00:00");
28、项目添加定时器
//1、新建一个class类,实现servletContextListener接口,类中写定时器和调用的方法
//2、在web.XML中配置监听器就可以了
public class clearFileTimer implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
Runnable runnable = new Runnable() {
public void run() {
clearFile clear = new clearFile();
try {
while (true) {
// 10天执行一次删除操作
long sleep = 10 * 86400 * 1000;
Thread.sleep(sleep);
clear.clearIt();// 调用的方法
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
//=============
//web.xml文件
//=========
class>
com.test.what.impl.clearFileTimer
listener-class>
listener>
29、定时器第二种写法
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Timer;
import java.util.TimerTask;
public class updateStateTimer implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
updateState t = new updateState();//默认执行updateState这个类中的run方法
Timer timer=new Timer(true);
long period=24*60*60*1000;
timer.schedule(t, 20000, period); //t表示执行的类(中的run方法),20000表示延迟,period表示间隔
}
}
class updateState extends TimerTask {
@Override
public void run() {
new SendListMan().updateStateEveryday();
}
}
30、断点续传与非断电续传两端写法
//接收文件端:
public void wsReceive(String fileByte,String fileName) { //fileByte表示文件转换成的字符串
//文件名称和路径
String zipSource = "D:/"+fileName;
FileOutputStream fos = null;
try {
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(fileByte);
fos = new FileOutputStream(zipSource,true);//后面加true,表示文件存在时,内容叠加(断点续传)
fos = new FileOutputStream(zipSource);//表示产生新的文件,会覆盖之前的所有内容(非断点续传)
fos.write(bytes);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//非断点续传发送文件端:
FileInputStream fis = new FileInputStream(file);
StringBuffer sb = new StringBuffer();
byte[] buffer = new byte[(int) file.length()];
fis.read(buffer);//一次性将文件全部转换成字符串,然后执行发送
String ret = new BASE64Encoder().encode(buffer);
sb.append(ret);
String result = client.invoke(methodName, new Object[] { sb.toString() })[0].toString();
//断点续传发送文件端:
StringBuffer sb = new StringBuffer();
FileInputStream fis = new FileInputStream(file);
fis.skip(startIndex);// 发送之前先定位到文件的已有长度位置,如果是第一次发送那就是0
byte[] buffer = new byte[BUFFER_LENGTH];
byte[] bufferTemp;
int count;
String result = "";
//在while中,每读一次,就调一次接收端的方法
while ((count = fis.read(buffer)) > 0) {
String ret = "";
if (count < BUFFER_LENGTH) { //if方法是对最后一次不够一个buffer时的处理
bufferTemp = new byte[count];
for (int j = 0; j < count; j++) {
bufferTemp[j] = buffer[j];
}
} else {
bufferTemp = buffer;
}
ret = new BASE64Encoder().encode(bufferTemp);
sb = new StringBuffer();
sb.append(ret);
result = client.invoke(methodName, new Object[] { sb.toString(), orgFileName })[0].toString();
}
31、webService接口开发
//===============
//1、接口
//===============
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface wsReceiveFile {
@WebMethod
public String whatkk(String str);
}
//===============
//2、实现类
//===============
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService(endpointInterface = "com.as.dsf.wsReceiveFile")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class wsReceiveFileImpl implements wsReceiveFile {
@Override
public String whatkk(String str) {
// TODO Auto-generated method stub
return null;
}
}
//===============
//3、web.xml写法
//===============
class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
class>
wsReceiveFile
class>
com.sun.xml.ws.transport.http.servlet.WSServlet
class>
wsReceiveFile
/ws/receiveFile
//===============
//4、sun-jaxws.xml写法
//===============
version="1.0" encoding="UTF-8"?>
"http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
"wsSendFile" implementation="com.imp.wsSendFileImpl" url-pattern="/ws/sendFile"/>
"wsReceiveFile" implementation="com.imp.wsRFileImpl" url-pattern="/ws/receiveFile"/>
32、Linux系统简单操作
//进入cmd:Ctrl+Alt+T
//编辑系统文件:
sudu -s
gedit /etc/profile
//安装VMware tools:
进入文件目录 cd vmware-tools-distrib/
安装:./vmware-install.pl
//安装JDK:
解压:tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib/jvm
安装:./jdk-6u45-linux-i586.bin
//配置环境变量:
在etc/profile文件后面加入:
export JAVA_HOME=/home/adom/jdk1.8.0_151
export PATH=$PATH:/home/adom/jdk1.8.0_151/bin
export CLASSPATH=.:/home/adom/jdk1.8.0_151/jre/lib/rt.jar
//安装wine:
1、下载:https://sourceforge.net/projects/wine/
2、安装:sudo apt-get install wine
3、配置:winecfg 虚拟桌面选择。
//给系统分区:
1、下载gparted-live:https://sourceforge.net/projects/gparted/files/gparted-live- stable/0.25.0-3/gparted-live-0.25.0-3-i686.iso/download?use_mirror=ncu
2、加入CD启动
3、resize
//Linux系统下eclipse下载:http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/luna/SR2/eclipse-jee-
luna-SR2-linux-gtk-x86_64.tar.gz
//获取ip:
ifconfig
33、commons.fileupload附件上传断点续传
String savePath = "D:/test/";
File f = new File(savePath);
if (!f.exists()) {
f.mkdirs();
}
response.setContentType("text/html;charset=UTF-8");
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
if (!item.isFormField()) {
File uploadedFile = new File(savePath, fileName);
//断点续传start
FileOutputStream fos=null;
try {
InputStream in=item.getInputStream();
long startIndex=0;
if(uploadedFile.exists()) {
startIndex=uploadedFile.length();
}
int BUFFER_LENGTH=1024000;//一次1M
byte [] buffer=new byte[BUFFER_LENGTH];
byte [] bufferTemp;
BufferedInputStream bis=new BufferedInputStream(in);
bis.skip(startIndex);
int count=0;
while ((count = bis.read(buffer)) > 0) {
if (count < BUFFER_LENGTH) {
bufferTemp = new byte[count];
for (int j = 0; j < count; j++) {
bufferTemp[j] = buffer[j];
}
} else {
bufferTemp = buffer;
}
fos=new FileOutputStream(uploadedFile,true);
fos.write(bufferTemp);
fos.flush();
fos.close();
}
in.close();
bis.close();
//断点续传end
item.write(uploadedFile);//非断点续传方式
} catch (Exception e) {
failMsg.append(";系统错误,上传失败");
return;
}
}
}
34、