Tomcat启动时自动加载Servlet

[color=blue][align=center][align=center][/align][size=small][/size][color=blue]<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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-app_2_4.xsd">

<servlet>
<servlet-name>SocketInitServlet</servlet-name>
<servlet-class>com.sky.socket.servlet.SocketInitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>SocketInitServlet</servlet-name>
<url-pattern>/SocketInitServlet</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


package com.sky.socket.servlet;

import javax.servlet.http.HttpServlet;

public class SocketInitServlet extends HttpServlet{
public SocketInitServlet(){
super();
}

public void init(){
System.out.println("=========启动文件上传下载服务开始========");
Uploadservce.getInstance().start();
Downloadservce.getInstance().start();
System.out.println("=========启动文件上传下载服务结束========");
}
}


package com.sky.socket.servlet;


import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

import javax.swing.JFileChooser;


public class Downloadservce implements Runnable{

private final static int port = 8899;

public static Downloadservce downloadservce = null;

public boolean running = false;

/**
*
*/
protected Downloadservce() {
super();
}

public static Downloadservce getInstance() {
if(downloadservce==null) {
downloadservce = new Downloadservce();
}
return downloadservce;
}

public void start() {
if(!running) {
running = true;
(new Thread(this)).start();
}
}

//String information;
// public static void main(String[] args) {
// ServerSocket server=null;
// Socket you=null;
// try{
// server=new ServerSocket(port);
// }catch(IOException ex){
// System.out.println("建里服务器:"+ex.getMessage());
// }
// while(true){
// try{
// you=server.accept();
// }catch(IOException ee){
// System.out.println("正在等待客户:"+ee.getMessage());
// }
// if(you!=null)
// new DownServer_Thread(you).start();
// else
// continue;
// }
// }
public void run() {

ServerSocket server=null;
Socket you=null;
try{
server=new ServerSocket(port);
}catch(IOException ex){
System.out.println("建里服务器:"+ex.getMessage());
}
while(true){
try{
you=server.accept();
}catch(IOException ee){
System.out.println("正在等待客户:"+ee.getMessage());
}
if(you!=null)
new DownServer_Thread(you).start();
else
continue;
}


}
}
class DownServer_Thread extends Thread{
// MyButton myButton;
Socket socket=null;
DataInputStream in=null;
RandomAccessFile out=null;
String filename=null;
DownServer_Thread(Socket c){
socket=c;
try{
in=new DataInputStream(socket.getInputStream());
}catch(IOException ex){
ex.printStackTrace();
}
}
public void run(){
while(true){
int n;
byte b[] = new byte[102400];
try{
JFileChooser fileChooser = new JFileChooser();//选择要下载目录;
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int i = fileChooser.showSaveDialog(null);//showDialog(myButton);// 1表示取消,0确定
fileChooser.setFocusable(true);//获得焦点
fileChooser.setRequestFocusEnabled(true);
fileChooser.setVisible(true);
fileChooser.requestDefaultFocus();
fileChooser.requestFocusInWindow();
// fileChooser.
if(i==JFileChooser.APPROVE_OPTION){
filename=in.readUTF();
File file=fileChooser.getSelectedFile();
String path=file.getAbsolutePath();
// String str=fileChooser.getSelectedFile().getParent();

// //获取当前路径
// File directory = new File("");
// //获得当前工程根目录
// String folderPath = directory.getCanonicalPath();
System.out.println(path+"===========================不知道哦===================");
//文件路径
String filepath = path + "//" + filename;
System.out.println(filepath+"===========================不知道哦===================");
out=new RandomAccessFile(filepath,"rw");//"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
while((n=in.read(b,0,102400))!=-1){
System.out.println(filepath);
System.out.println("正在下载数据...");
out.write(b,0,n);
out.skipBytes(102400);
}
System.out.println("下载完毕!");
in.close();
out.close();
socket.close();
break;
}

}catch(Exception ee){
System.out.println("客户端走了!");
break;
}
}
}
}


package com.sky.socket.servlet;


import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

import com.sky.socket.tools.FileTools;


public class Uploadservce implements Runnable {

private final static int port = 7889;


public static Uploadservce uploadservce = null;

public boolean running = false;

protected Uploadservce() {
super();
}
public void start() {
if(!running) {
running = true;
(new Thread(this)).start();
}
}

public static Uploadservce getInstance() {
if(uploadservce==null) {
uploadservce = new Uploadservce();
}
return uploadservce;
}
public void run() {

ServerSocket server=null;
Socket you=null;
try{
server=new ServerSocket(port);
}catch(IOException ex){
System.out.println("建里服务器:"+ex.getMessage());
}
while(true){
try
{
you=server.accept();
}catch(IOException ee){
System.out.println("正在等待客户:"+ee.getMessage());
}
if(you!=null)
new Server_Thread(you).start();
else
continue;
}

}
}
class Server_Thread extends Thread{
Socket socket=null;
DataInputStream in=null;
RandomAccessFile out=null;
String filename=null;
Server_Thread(Socket c){
socket=c;
try{
in=new DataInputStream(socket.getInputStream());
}catch(IOException ex){
ex.printStackTrace();
}
}
public void run()
{
while(true)
{
int n;
byte b[] = new byte[102400];
try{
filename=in.readUTF();
//获取当前路径
File directory = new File("");
//获得当前工程根目录
String folderPath = directory.getCanonicalPath();
// 创建文件夹路径

// F:\java\socketItem//upload//20110804 ;E:\o\pkb
folderPath += "//upload//"+FileTools.getStringByDate(new Date(),"yyyyMMdd");
// String folderPath= "E://o//pkb//upload//"+FileTools.getStringByDate(new Date(),"yyyyMMdd");

System.out.println("folderPath:"+folderPath);

//创建文件夹
FileTools.createFolder(folderPath);

String filename1 = folderPath + "//" + filename;
out=new RandomAccessFile(filename1,"rw");
while((n=in.read(b,0,102400))!=-1)
{
System.out.println(filename1);
System.out.println("正在上传数据...");
out.write(b,0,n);
out.skipBytes(102400);
}
[color=blue][/color] System.out.println("写入完毕!");
in.close();
out.close();
socket.close();
break;

//文件路径

}catch(Exception ee){
System.out.println("客户端走了!");
break;
}
}
}
}[/color][/align][/color]


package com.sky.socket.button;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.ProgressMonitor;
import javax.swing.ProgressMonitorInputStream;

import com.sky.socket.thread.DownloadThread;
import com.sky.socket.thread.MyDownloadservce;
import com.sky.socket.thread.UploadThread;

public class MyButton extends JFrame {

/**
* @param args
*/
public JButton send;
public JButton down;
public JPanel panel;

public MyButton() {
panel = new JPanel();
panel.setLayout(null);
this.add(panel);

send = new JButton("上传");
send.setBounds(20, 30, 60, 40);
ButtonEvent butEvent = new ButtonEvent();
send.addActionListener(butEvent);
panel.add(send);

down = new JButton("下载");
down.setBounds(100, 30, 60, 40);
ButtonDown butDown = new ButtonDown();
down.addActionListener(butDown);
panel.add(down);
}

public class ButtonEvent implements ActionListener {
public void actionPerformed(ActionEvent e4) {
JFileChooser fileChooser = new JFileChooser();
int i = fileChooser.showOpenDialog(MyButton.this);// 1表示取消上传,0确定上传
if (i == JFileChooser.APPROVE_OPTION) {
fileChooser.getFileSelectionMode();
String hostname = "127.0.0.1";
int port = 7889;
File file = new File(fileChooser.getSelectedFile().getAbsolutePath());
FileInputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Socket socket = null;
try {
socket = new Socket(hostname, port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
new UploadThread(socket, in, fileChooser.getSelectedFile().getName()).start();

}
}
}

public class ButtonDown implements ActionListener {
public void actionPerformed(ActionEvent e4) {
String name = "1234.txt";
// 要下载的文件;
String hostname1 = "127.0.0.1";
int port1 = 8899;
Socket socket = null;
FileInputStream in = null;
try {
// //获取当前路径
// File directory = new File("");
// //获得当前工程根目录
// String folderPath = directory.getCanonicalPath();
String str="F://java//socketItem//upload//20110729//1234.txt";//这是已知的下载文件
File fs=new File(str);
in = new FileInputStream(fs);
socket = new Socket(hostname1, port1);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
new DownloadThread(socket, in, name).start();
}
}

public static void main(String[] args) {
MyButton mybtn = new MyButton();
mybtn.setSize(200, 120);
mybtn.setVisible(true);
mybtn.setLocation(200, 120);
mybtn.setTitle("测试");
mybtn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值