`
god_sky
  • 浏览: 140112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat启动时自动加载Servlet

    博客分类:
  • java
 
阅读更多
[align=center]
[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]
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);

}
}
分享到:
评论

相关推荐

    Java Tomcat面试题

    1. 利用 Tomcat 的自动部署,将 web 应用拷贝到 webapps 目录下,Tomcat 在启动时会加载目录下的应用,并将编译后的结果放入 work 目录下。 2. 使用 Manager App 控制台部署,在 Tomcat 主页点击“Manager App” ...

    springboot参考指南

    启动时执行Liquibase数据库迁移 viii. 69. 批处理应用 i. 69.1. 在启动时执行Spring Batch作业 ix. 70. 执行器(Actuator) i. 70.1. 改变HTTP端口或执行器端点的地址 ii. 70.2. 自定义'白标'(whitelabel,可以...

    cms后台管理

    将解压后得到的jeecms-3.0.2-final文件夹下的root文件夹更名为jeecms拷贝到tomcat 安装目录下的webapps 文件夹下(例如: D:\Tomcat 6.0\webapps\),启动tomcat,在地址栏中输入http://localhost:8080/jeecms, 您...

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    java面试题

    答:servlet实例化时调用init方法,得到请求时调用service方法,service方法自动派遣doget或dopost方法,最后当实例销毁时调用destroy方法。 error和exception有什么区别? 答:error是指错误,通常程序员不能通过...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    JSP动态网页制作基础培训教程源代码.rar

    读者应该确保计算机上安装有SQL Server 2000服务器,启动SQL Server服务后,打开查询分析器,然后执行本章目录下的db.sql文件自动生成并初始化数据库。 2.将本章的代码(文件夹news)拷贝到Tomcat服务器安装目录的...

    Java面试宝典2020修订版V1.0.1.doc

    3、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储。 31 4、解释一下什么是servlet;什么是servlet容器; 32 5、说一说Servlet的生命周期,执行过程? 32 6、实例化servlet有几种方式 32 7、谈谈你对http协议的...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.2.5 如何加载多个Spring配置文件 210 10.3 开发Spring 1.2 AOP应用 211 10.3.1 开发Man对象 211 10.3.2 开发前置通知(Before advice)对象:FBI 212 10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 ...

    单点登录源码

    微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理、消息群发等基础功能外,还有二维码推广、营销活动、微网站、会员卡、优惠券等。 &gt; zheng-wechat-app 微信小程序后台 ## 环境搭建...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    Spring.3.x企业应用开发实战(完整版).part2

    16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要...

    Spring3.x企业应用开发实战(完整版) part1

    16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要...

    Java开发技术大全 电子版

    9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 9.5使用关键字instanceof判断所属类292 9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取...

Global site tag (gtag.js) - Google Analytics