`
god_sky
  • 浏览: 141771 次
  • 性别: 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);

}
}
分享到:
评论

相关推荐

    Web服务启动时自动加载Servlet,并读取数据库内容

    在Web服务启动时自动加载Servlet是一种常见的优化策略,目的是在应用程序启动时就准备好Servlet实例,以便快速响应用户请求。本例中,我们将讨论如何配置Web服务以在启动时加载Servlet,并利用Spring框架来读取和...

    tomcat启动时,在后台自动执行一线程

    在Tomcat中,我们可以通过编写一个Servlet类并将其配置在web.xml文件中,使得在Tomcat服务器启动时自动加载并初始化这个Servlet。 要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加...

    tomcat启动原理解析

    **Tomcat启动原理解析** Tomcat作为一款广泛使用的开源Java应用服务器,其启动过程涉及了众多关键步骤和组件的协同工作。理解Tomcat的启动原理对于开发者来说至关重要,不仅有助于提升性能优化的能力,还能在遇到...

    Tomcat下Servlet的配置

    完成这些步骤后,Tomcat启动时会自动加载并注册Servlet,你可以通过浏览器访问`http://localhost:8080/yourapp/hello`来调用这个Servlet。 在Editplus中,可以配置用户工具,使得编译和运行Servlet更加便捷。在...

    Tomcat启动停止脚本

    "Tomcat启动停止脚本"提供了这样的便利,使得操作过程自动化,特别是当需要将这些操作集成到服务器的计划任务中时。 一、Tomcat启动脚本 启动脚本通常名为`startup.sh`(在Unix/Linux环境)或`startup.bat`(在...

    tomcat类加载器

    通常,开发者希望在不重启服务器的情况下更新代码,这时DevLoader可能会有热部署功能,即在代码更改后,能自动或手动重新加载修改过的类,而无需停止和重新启动Tomcat服务。这大大提高了开发效率。 类加载器在...

    Linux 部署jenkins war包直接tomcat启动

    6. **等待Jenkins初始化**:当Tomcat启动并加载WAR包后,Jenkins会开始初始化过程。这个过程可能需要几分钟,取决于服务器性能和网络速度。 7. **访问Jenkins**:打开浏览器,输入`...

    Tomcat的配置及出现问题的解决方法

    3.Tomcat启动时加载信息提示界面停留几秒钟就消失了 在Tomcat启动时,可能会出现加载信息提示界面停留几秒钟就消失了的问题。这可能是由于server.xml文件中的配置问题所致。 4.Tomcat启动时自动关闭 在Tomcat启动...

    myeclipse下tomcat动态加载

    在这里,可以选择“ Automatically publish when resources change ”,这样每当源代码有更改时,MyEclipse会自动将更新推送到Tomcat,实现动态加载。 3. **热部署与热更新**:热部署是指在不中断服务的情况下更新...

    Tomcat停止与启动shell

    标题 "Tomcat停止与启动shell" 指的是一个用于管理Tomcat服务器的脚本,通常这个`restart.sh`文件是用来自动化Tomcat服务的启动和停止操作的。Tomcat是Apache软件基金会的一个开源项目,是一个广泛使用的Java ...

    servlet第一个例子(工程+tomcat)

    然后启动Tomcat服务器,它会自动解压并部署你的应用。 6. **访问Servlet**:在浏览器中输入`http://localhost:8080/servlet_example/hello`(假设Tomcat默认端口为8080,且项目名为`servlet_example`)。你应该能...

    tomcat启动脚本

    Tomcat启动时会扫描这个目录,寻找WAR文件或已解压的目录并自动部署应用。 7. **`test.vbs`文件**:在这个场景下,这个文件可能是用来自动化或者测试Tomcat启动的VBScript脚本。VBScript可以调用命令行执行`...

    20211210tomcat2.zip Servlet简单例子

    当服务器启动或第一次接收到对Servlet的请求时,Servlet会被加载和初始化。然后,每当有新的请求到来,Servlet容器(如Tomcat)都会调用Servlet的`service()`方法来处理请求。最后,当服务器关闭或者Servlet不再需要...

    Tomcat配置servlet(可以参考).pdf

    要使Tomcat能够识别和加载Servlet,需要在Web应用的WEB-INF目录下的web.xml文件中进行配置,示例如下: ```xml &lt;servlet&gt; &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;MyServlet&lt;/servlet-class&gt; &lt;/...

    servlet+tomcat面试题及答案解析.zip

    在服务器启动时,Servlet容器会加载并初始化Servlet,然后处理请求,最后在服务器关闭或不再需要Servlet时销毁。 2. **Servlet配置**:Servlet可以通过在web.xml文件中声明来配置,或者使用Java注解`@WebServlet`...

    tomcat 部署java项目 jar

    - 将JAR文件放入`$CATALINA_HOME/lib`目录,这样Tomcat会自动加载其中的Servlet和过滤器。 - 将JAR文件放入`$CATALINA_HOME/webapps/WEB-INF/lib`目录,适合小型独立应用。 - 创建WAR(Web ARchive)文件,然后将...

    tomcat7.0下载

    4. **部署工具**:Tomcat提供自动部署和热部署功能,开发者只需将应用的WAR文件放入特定目录,Tomcat会自动解析并启动应用。 5. **安全管理**:Tomcat支持多种认证机制和角色基础的访问控制,确保应用的安全性。 6...

    servlet+tomcat面试题及答案解析.rar

    部署后,Tomcat会自动解压WAR文件并启动应用。 5. **解释一下Servlet的配置文件web.xml的作用?** web.xml是Web应用的部署描述符,用于配置Servlet、过滤器、监听器等组件,定义它们的映射路径、初始化参数和会话...

    bootstrap开启与关闭tomcat

    1. **初始化**: Bootstrap类是Tomcat启动的起点,它通过main方法开始执行。在main方法中,Bootstrap会加载服务器的全局配置文件,如`catalina.properties`,并创建`Catalina`实例,这是Tomcat的主要容器。 2. **...

    tomcat-7.0.68

    10. **热部署**:Tomcat支持Web应用的热部署,当检测到`webapps`目录下的应用文件发生改变时,会自动重新加载应用。 总的来说,Apache Tomcat 7.0.68是一个强大且灵活的Java Web服务器,适用于开发和部署中小型Web...

Global site tag (gtag.js) - Google Analytics