如何用Java实现Web服务器

如何用Java实现Web服务器,第1张

如何用Java实现Web服务器 一、HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:

GET 路径/文件名 HTTP/1.0

文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

public class MysqlProxyServer {

private static final Logger logger = LoggerFactory.getLogger(MysqlProxyServer.class)

public static void main(String[] args) {

Vertx.vertx().deployVerticle(new MysqlProxyServerVerticle())

}

public static class MysqlProxyServerVerticle extends AbstractVerticle {

private final int port = 3306

private final String mysqlHost = "10.10.0.6"

@Override

public void start() throws Exception {

NetServer netServer = vertx.createNetServer()//创建代理服务器

NetClient netClient = vertx.createNetClient()//创建连接mysql客户端

netServer.connectHandler(socket ->netClient.connect(port, mysqlHost, result ->{

//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接

if (result.succeeded()) {

//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法

new MysqlProxyConnection(socket, result.result()).proxy()

} else {

logger.error(result.cause().getMessage(), result.cause())

socket.close()

}

})).listen(port, listenResult ->{//代理服务器的监听端口

if (listenResult.succeeded()) {

//成功启动代理服务器

logger.info("Mysql proxy server start up.")

} else {

//启动代理服务器失败

logger.error("Mysql proxy exit. because: " + listenResult.cause().getMessage(), listenResult.cause())

System.exit(1)

}

})

}

}

public static class MysqlProxyConnection {

private final NetSocket clientSocket

private final NetSocket serverSocket

public MysqlProxyConnection(NetSocket clientSocket, NetSocket serverSocket) {

this.clientSocket = clientSocket

this.serverSocket = serverSocket

}

private void proxy() {

//当代理与mysql服务器连接关闭时,关闭client与代理的连接

serverSocket.closeHandler(v ->clientSocket.close())

//反之亦然

clientSocket.closeHandler(v ->serverSocket.close())

//不管那端的连接出现异常时,关闭两端的连接

serverSocket.exceptionHandler(e ->{

logger.error(e.getMessage(), e)

close()

})

clientSocket.exceptionHandler(e ->{

logger.error(e.getMessage(), e)

close()

})

//当收到来自客户端的数据包时,转发给mysql目标服务器

clientSocket.handler(buffer ->serverSocket.write(buffer))

//当收到来自mysql目标服务器的数据包时,转发给客户端

serverSocket.handler(buffer ->clientSocket.write(buffer))

}

private void close() {

clientSocket.close()

serverSocket.close()

}

}

}

测试一下

try {

Class.forName(name)//指定连接类型

Connection conn = DriverManager.getConnection(url, user, password)//url为代理服务器的地址

PreparedStatement pst = conn.prepareStatement("select * from test")//准备执行语句

ResultSet resultSet = pst.executeQuery()

while (resultSet.next()) {

System.out.println(resultSet.getLong(1) + ": " + resultSet.getString(2))

}

} catch (Exception e) {

e.printStackTrace()

}

1.由于服务器配置比较低综合考虑,选择ubuntu系统进行搭建

2. 登陆阿里云服务器:

方法一:使用xshell软件登陆服务器

主机填写ip地址

端口号选择22

连接登陆服务器

方法二:使用阿里云管理终端

ssh root@服务器ip地址

password:输入密码

3.如何上传文件

方法一:windows和linux上传或下载某个文件可以使用rz,sz

sudo apt-get install lrzsz

安装完成后进入准备存放改文件的文件夹输入rz,就会跳出文件选择框

例如:#cd apache-tomcat-7.0.69/bin  rz

cd后有空格

cd ~:返回最上层

cd ..:返回上一层

cd -:返回最近操作

方法二:使用xshell中的插件Xftp

4.安装及配置环境

安装lsb指令

ubunu快捷安装需要的命令,更新一下:

自带源在大陆不好,更新即可解决

1.sudo apt-get update  

2.apt-get install yum  yum install -y redhat-lsb

输入lsb指令查看当前版本

查看版本号

lsb_release -a查看当前位数

getconf LONG_BIT

安装jdk:

方法一:ubuntu自动安装jdk

sudo apt-get install jdk

安装完成后配置环境:

使用vim指定编辑etc目录下profile文件,添加export

#vim /etc/profile

添加进profile文件

JAVA_HOME=/home/java/jdk1.6.0_12

export JRE_HOME=/home/liujicheng/java/jdk1.6.0_12/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

//java存放位置请自行更改

//使用 which java 查看jdk所在文件夹

方法二:本地下载jdk上传

下载对应系统32位或64位的tar.gz文件

建议:经过还几次对服务器进行环境搭建,已经有了一点小小的见解,建议不要使用过低版本的JDK,例如服务器JDK版本为1.5而项目JDK版本为1.8的情况,就会出现无法服务器无法运行.war文件的情况,建议版本为1.7

上传tar.gz文件有两种方法

11.输入命令行 rz 选择安装包上传 1使用rz时,注意安装 2.通过xftp将上传

创建一个java文件夹

mkdir java

输入安装命令,将上传的.tar.gz文件解压到创建为java文件夹中

sudo tar -zxvf jdk-7u80-linux-x64.tar.gz -C /root/java

设置环境变量

使用vim指定编辑etc目录下profile文件,添加export

#vim /etc/profile添加进profile文件

JAVA_HOME=/root/java/jdk1.7.0_80

export JRE_HOME=/root/java/jdk1.7.0_80/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

//java存放位置请自行更改//使用 which java 查看jdk所在文件夹

选择E,然后输入i 进行写操作

最后 :x退出并保存

设置默认JDK

12345sudo update-alternatives --install /usr/bin/java java /root/java/jdk1.7.0_80/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /root/java/jdk1.7.0_80/bin/javac 300 sudo update-alternatives --install /usr/bin/jar jar /root/java/jdk1.7.0_80/bin/jar 300  sudo update-alternatives --install /usr/bin/javah javah /root/java/jdk1.7.0_80/bin/javah 300  sudo update-alternatives --install /usr/bin/javap javap /root/java/jdk1.7.0_80/bin/javap 300

如果之后一个版本显示: 

There is only one alternative in link group java (providing /usr/bin/java):

/usr/lib/jvm/jdk1.7.0_60/bin/java

否者,选择合适的jdk

检查jdk是否安装成功,输出版本号及对应信息即安装成功

#java

#javac

#java -version

安装tomcat

方法一:ubuntu自动安装tomcat

sudo apt-get install tomcat

添加jdk和jre环境变量

JAVA_HOME=/home/java/jdk1.6.0_12

JRE_HOME=/home/homer/eclipse/jdk1.6.0_12/jre  

PATH=$JAVA_HOME/bin:$JRE_HOME:$PATH  

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  

TOMCAT_HOME=/opt/apache-tomcat-7.0.29  

启动tomcat

cd apache-tomcat-7.0.69/bin ./startup.sh

出现提示说明配置成功

方法二:上传tomcat并解压

通过上述上传文件方法上传后

使用tar指令解压

tar -zxvf apache-tomcat-8.0.24.tar.gz

然后进入apache-tomcat-7.0.69文件夹

# cd apache-tomcat-8.0.24 /bin/

启动tomcat

cd apache-tomcat-8.0.24 /bin/ ./startup.sh

显示如下说明成功

最后输入:http://x.x.x.x:8080/   (x代表ip地址),显示tomcat首页说明配置成功

安装Mysql

ubuntu下自动安装

sudo apt-get install mysql-server

apt-get install mysql-client

sudo apt-get install libmysqlclient-dev

设置数据库密码:

检查Mysql是否安装成功

sudo netstat -tap | grep mysql

登陆Mysql

mysql -uroot -p密码

成功:

查看数据库

show databases

将.sql文件导入

//先选定数据库

use iswust        

source /root/test.sql//source /文件夹/sql文件名

select * from score

5.java工程打包上传并运行

右键选中java项目,WAR Export 将文件以war格式导出

(注意:java工程的jdk一定要先降低到与服务器的jdk版本相同,例如java工程为1.8而服务器为1.6则会报错)

降低jdk方法:

并通过XFTP或上述的上传文件方法,上传至apache-tomcat-7.0.69/webapps中


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/493332.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-14
下一篇2023-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存