网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 服务器教程 > 使用Java开发一个HTTP服务器,能够处理POST,GET,PUT,DELETE请求。
商业源码 服务器教程 2024-01-21 9:42:02

使用Java开发一个HTTP服务器,能够处理POST,GET,PUT,DELETE请求。

使用Java开发一个HTTP服务器,能够处理POST,GET,PUT,DELETE请求。,第1张

使用Java开发一个HTTP服务器,能够处理POST,GET,PUT,DELETE请求。

1 监听端口可以配置;

2 可以配置的一个工作目录;

3 GET请求可以获得相对于该工作目录的静态文件的内容,内容格式限定为html,css,js,json,xml,txt,jpg,gif,png,ico;

a) 例如 GET /f/test1html返回工作目录下f文件夹下test1html内容;

b) 在GET请求的的应答中尽可能多的在HTTP头中返回些能获得的到的标准的头信息;

4 POST请求可以在工作目录中创建请求路径对应的文件,文件内容为POST请求的内容;

a) 例如 POST /f/test2html,在工作目录下f文件夹下创建test2html文件,并将POST内容作为test2html的内容。

5 PUT请求可以替换对应路径的文件,修改的内容为PUT请求的内容。注意与POST不同。

a) 例如 PUT /f/test2html,在工作目录下f文件夹替换test2html文件的内容,并将PUT内容作为test2html的内容。

6 DELET请求可以删除对应路径的文件。

a) 例如 PUT /f/test2html,在工作目录下f文件夹删除test2html文件。

7 POST,PUT,DELETE成功后返回200,出现找不到文件的情况返回404错误,出现读写文件错误返回500错误。

8 特别的处理~路径下的GET请求,其包含2个参数,一个是类名,一个是方法名,这些方法都是些无参数并且以字符串为返回值的方法,GET请求应返回这些方法的返回值。

a) 例如 GET /~class=comtestTest&method=getTIme,则调用comtestTest类中String getTIme()方法,将返回值作为GET请求的返回;

b) 若找不到类或方法返回404错误;

c) 若出错返回500错误;

9 特别的处理$路径下的GET请求,能够为浏览器添加cookie,key为sid,值为UUID的随机字符串。

注意:不是在tomcat之类servlet容器上开发,而是要开发个类似servlet容器的东西。

tomcat就是web服务器,我也是今年刚刚毕业的,不过我现在在学习java web开发,一般情况下b/s结构是要用tomcat的,如果你只是单机应用程序连接数据库的话不用也可以哈,但是可能需要你的一些servlet的技术才行哟。

下面是我自己写的一个读取并显示txt文件的demo,希望对您有帮助。

public class Client {

public static void main(String[] args) {

ClientFrame f = new ClientFrame();

}

}

import javaawtBorderLayout;

import javaawtContainer;

import javaawtDimension;

import javaawtGridLayout;

import javaawtToolkit;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaioDataInputStream;

import javaioDataOutputStream;

import javaioIOException;

import javanetSocket;

import javanetUnknownHostException;

import javautilVector;

import javaxswingBorderFactory;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJList;

import javaxswingJScrollPane;

import javaxswingJTextArea;

import javaxswingeventListSelectionEvent;

import javaxswingeventListSelectionListener;

public class ClientFrame extends JFrame implements ActionListener, ListSelectionListener{

private JList list = null;

private JButton sbtn = null;

private JButton cbtn = null;

private Vector v = null;

private JTextArea txt = null;

private Container control = null;

private Container btn = null;

private Socket client = null;

private DataInputStream reader = null;

private DataOutputStream writer = null;

public ClientFrame(){

thislist = new JList();

thislistsetBorder(BorderFactorycreateTitledBorder("文件列表"));

thislistaddListSelectionListener(this);

thissbtn = new JButton("显示");

thissbtnaddActionListener(this);

thiscbtn = new JButton("清除");

thiscbtnaddActionListener(this);

thiscontrol = new Container();

thiscontrolsetPreferredSize(new Dimension(150, 400));

thiscontrolsetLayout(new BorderLayout());

thiscontroladd(new JScrollPane(thislist),BorderLayoutCENTER);

thisbtn = new Container();

thisbtnsetLayout(new GridLayout(1,2));

btnadd(sbtn);

btnadd(cbtn);

thiscontroladd(thisbtn,BorderLayoutSOUTH);

thistxt = new JTextArea();

thistxtsetEditable(false);

thistxtsetSize(350, 400);

thissetTitle("客户端");

thissetSize(500, 400);

thissetVisible(true);

Dimension displaySize = ToolkitgetDefaultToolkit()getScreenSize();

thissetLocation((displaySizewidth - thisgetWidth()) / 2, (displaySizeheight - thisgetHeight()) / 2);

thissetLayout(new BorderLayout());

thisadd(thiscontrol,BorderLayoutWEST);

thisadd(new JScrollPane(thistxt),BorderLayoutCENTER);

thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

try {

//thisclient = new Socket("1921683234",6666);

thisclient = new Socket("1921681100",6666);

thisreader = new DataInputStream(clientgetInputStream());

thiswriter = new DataOutputStream(clientgetOutputStream());

} catch (UnknownHostException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

}

public void actionPerformed(ActionEvent event){

if(eventgetSource() == sbtn){

if(v == null){

v = new Vector();

}

else{

vclear();

}

try {

writerwriteUTF("getfilelist");

writerflush();

String t = readerreadUTF();

while( t != null && !tequals("")){

vadd(t);

t = readerreadUTF();

}

} catch (UnknownHostException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

thislistsetListData(v);

}

if(eventgetSource() == cbtn){

thistxtsetText("");

}

}

public void valueChanged(ListSelectionEvent e) {

int i = thislistgetSelectedIndex();

if (! thislistgetValueIsAdjusting() && i != -1) {

try {

writerwriteUTF("getfilecontent_" + i);

writerflush();

String tmp = readerreadUTF();

thistxtsetText(tmp);

} catch (IOException e1) {

e1printStackTrace();

}

}

}

}

import javaioDataInputStream;

import javaioDataOutputStream;

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStreamReader;

import javaioReader;

import javanetServerSocket;

import javanetSocket;

import javautilArrayList;

import javautilIterator;

public class Server {

static ArrayList<File> fileArray = new ArrayList<File>();

public static void main(String args[]) {

ServerSocket server = null;

Socket client = null;

String cmd = "";

try {

server = new ServerSocket(6666);

client = serveraccept();

DataInputStream reader = new DataInputStream(clientgetInputStream());

DataOutputStream writer = new DataOutputStream(clientgetOutputStream());

while(true){

cmd = readerreadUTF();

Systemoutprintln(cmd);

if(cmdequals("getfilelist")){

fileArrayclear();

//fileArray = getFile(new File("D:/tmp"));

fileArray = getFile(new File("D:/学习/教程/学习笔记"));

String fn = "";

for(int k = 0; k < fileArraysize(); k ++){

fn = fileArrayget(k)getName();

writerwriteUTF(fn);

writerflush();

}

writerwriteUTF("");

}

if(cmdstartsWith("getfilecontent_")){

int i = IntegerparseInt(cmdsplit("_")[1]);

File f = fileArrayget(i);

Reader in = new InputStreamReader(new FileInputStream(f));

int tempbyte;

String str = "";

while ((tempbyte = inread()) != -1) {

str += (char)tempbyte;

//Systemoutprintln(str);

}

inclose();

writerwriteUTF(str);

}

}

} catch (IOException e) {

eprintStackTrace();

}

}

private static ArrayList<File> getFile(File f) {

File[] ff = flistFiles();

for (File child : ff) {

if (childisDirectory()) {

getFile(child);

} else {

fileArrayadd(child);

}

}

return fileArray;

}

}

Java是一门编程语言,可以用来编写各种类型的程序,包括Web应用程序。而Tomcat是一个Web应用程序服务器,可以用来运行Java Web应用程序。

尽管使用Tomcat可以轻松地创建和部署Java Web应用程序,但是Java语言本身也有内置的HTTP服务器,可以用来创建和运行Web应用程序,而不需要使用Tomcat这样的第三方服务器。

Java内置的HTTP服务器主要包括两个:HttpURLConnection和HttpServer。HttpURLConnection可以用来创建HTTP客户端,发送HTTP请求和接收HTTP响应。而HttpServer则是一个简单的HTTP服务器,可以用来创建和运行Web应用程序。

使用Java内置的HTTP服务器来创建Web应用程序的好处是,不需要依赖第三方服务器,可以在运行程序的同时,轻松地创建和运行Web应用程序。另外,使用Java内置的HTTP服务器还可以减少程序的依赖,降低程序的复杂性和维护成本。

当然,如果需要创建更为复杂的Web应用程序,使用Tomcat等第三方服务器仍然是一种不错的选择,因为这些服务器提供了更多的功能和扩展性,可以满足更加复杂的需求。

服务器端(注意要先启动服务器端)

import javaio;

import javanet;

import javaawt;

import javaawtevent;

public class server extends Frame implements ActionListener {

Label label = new Label("交谈内容");

Panel panel = new Panel();

TextField tf = new TextField(10);

TextArea ta = new TextArea();

ServerSocket server;

Socket client;

InputStream in;

OutputStream out;

public server() {

super("服务器");

setSize(250, 250);

paneladd(label);

paneladd(tf);

tfaddActionListener(this);

add("North", panel);

add("Center", ta);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

Systemexit(0);

}

});

show();

try {

server = new ServerSocket(4000);

client = serveraccept();

taappend("客户机是:" + clientgetInetAddress()getHostName() + "\n\n");

in =clientgetInputStream();

out= clientgetOutputStream();

} catch (IOException ioe) {

}

while (true) {

try {

byte[] buf = new byte[256];

inread(buf);

String str = new String(buf);

taappend("客户机说:" + str + "\n\n");

} catch (IOException e) {

}

}

}

public void actionPerformed(ActionEvent e) {

try {

String str = tfgetText();

byte[] buf = strgetBytes();

tfsetText(null);

outwrite(buf);

taappend("我说:" + str + "\n");

} catch (IOException ioe) {

}

}

public static void main(String[] args) {

new server();

}

}

客户端

import javaio;

import javanet;

import javaawt;

import javaawtevent;

public class client extends Frame implements ActionListener {

Label label = new Label("交谈内容");

Panel panel = new Panel();

TextField tf = new TextField(10);

TextArea ta = new TextArea();

Socket client;

InputStream in;

OutputStream out;

public client() {

super("客户机");

setSize(250, 250);

paneladd(label);

paneladd(tf);

tfaddActionListener(this);

add("North", panel);

add("Center", ta);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

Systemexit(0);

}

});

show();

try {

client = new Socket(InetAddressgetLocalHost(), 4000);

taappend("服务器是:" + clientgetInetAddress()getHostName() + "\n\n");

in = clientgetInputStream();

out = clientgetOutputStream();

} catch (IOException ioe) {

}

while (true) {

try {

byte[] buf = new byte[256];

inread(buf);

String str = new String(buf);

taappend("服务器说:" + str + "\n");

} catch (IOException e) {

}

}

}

public void actionPerformed(ActionEvent e) {

try {

String str = tfgetText();

byte[] buf = strgetBytes();

tfsetText(null);

outwrite(buf);

taappend("我说:" + str + "\n");

} catch (IOException iOE) {

}

}

public static void main(String args[]) {

new client();

}

}

这个只能在自己一台电脑上先启动服务器再启动客户端才行,要想一台机子启动服务器端一台机子启动客户端需要把客户端的 client = new Socket(InetAddressgetLocalHost(), 4000);改成 client = new Socket("服务器Ip", 4000);(前提是两台机子连在局域网里面的)

服务器 内容 应用程序 文件 客户端
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 使用Java开发一个HTTP服务器,能够处理POST,GET,PUT,DELETE请求。

商业源码 钻石

分享到:
上一篇
戴尔服务器更换硬盘
下一篇
什么叫堡垒服务器?

相关推荐

联想服务器怎么样?

联想服务器怎么样?

如何用自己的电脑做一个WEB服务器

如何用自己的电脑做一个WEB服务器

oppo登录云服务器

oppo登录云服务器

为什么我的《古剑奇谭》DLC激活时他说我网络通讯不顺,建议我查网络状态,但是我的网络没有问题啊!!!求助

为什么我的《古剑奇谭》DLC激活时他说我网络通讯不顺,建议我查网络状态,但是我的网络没有问题啊!!!求助

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...