千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:千锋视频教程 >  Java视频教程  >  Java学习之JavaWeb的服务器基础

Java学习之JavaWeb的服务器基础

时间:2018-05-07 14:34     来源:千锋视频教程 作者:千锋老师

本章内容:

Web项目简介

主流服务器介绍

Tomcat的安装和配置

自定义Web服务器

什么B/S和C/S结构?

B/S 浏览器/服务器

服务器一般是性能强大PC或工作站,安装应用程序服务器软件,如:Tomcat、JBoss,和DBMS如:MySQL、Oracle等。

浏览器去访问服务器,不需要安装客户端软件,如:网银、淘宝。

优点:软件安装服务器端,省去客户端更新、维护时间,目前管理系统一般是BS的。

缺点:服务器压力比较大,浏览器不能呈现太复杂的特效。

JavaWEB项目都属于BS结构程序。

C/S 客户端/服务器

需要安装客户端软件,如:QQ、微信、网游。

优点:客户端分担大量工作,可以呈现复杂特效。

缺点:更新和维护比较麻烦。

主流Web服务器简介

Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等

Tomcat 服务器

目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。

Resin 服务器

Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建

JBoss服务器

JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合

WebSphere 服务器

WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。

WebLogic 服务器

WebLogic 是BEA公司的产品(现在已经被Oracle收购),可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择

Tomcat的安装和配置

0、安装JDK

1、配置JAVA_HOME

JAVA_HOME的值为JDK安装目录

2、下载Tomcat

3、配置环境变量

系统变量添加:

CATALINA_HOME 值: Tomcat安装路径

在Path添加: ;%CATALINA_HOME %\bin;

4、测试,打开cmd,输入startup

打开浏览器输入:http://localhost:8080,出现类似下面的页面

服务器基础-1

Tomcat目录介绍

bin 命令执行文件

conf 配置文件目录

server.xml 核心配置,如:端口、连接池

tomcat-user.xml 用户配置

web.xml web请求配置

lib tomcat运行需要的jar包

logs 日志目录

webapps web项目部署目录

work 存放项目中的java字节码文件

Tomcat和Eclipse的配置

1、打开Server面板

Window > Show View > Other > Server > Servers

2、双击create new server

选择服务器版本,下一步

服务器基础-2

设置Tomcat安装目录

服务器基础-3

3、双击创建的服务器,设置项目部署路径

服务器基础-4

4、创建Web项目

new > dynamic web project

服务器基础-5

下一步到最后,勾中复选框,点击完成

服务器基础-6

5、在WebContent新建HTML页面,右键点击run as server运行。

Web项目的目录介绍:

服务器基础-7

src Java源代码

build 字节码目录

WebContent 网页内容(JSP、HTML、JS、CSS、图片)

META-INF 元信息

WEB-INF

web.xml 项目重要组件配置文件

lib 项目需要的jar包(拷贝后会自动导入项目)

Web服务器的原理

我们将网站部署到Web服务器上,用户通过浏览器就可以访问服务器上的页面,这个过程是如何实现的呢?

Web服务器都是基于HTTP协议的,当浏览器访问页面时,首先会发送HTTP的请求头给服务器,服务器接受请求后会在web项目的目录中查找浏览器需要的页面文件,然后服务器依次发送响应状态和响应头给浏览器,最后发送网页的HTML代码给浏览器,浏览器接受服务器的数据后会解析HTML文件并显示出来。

服务器基础-8

下面的案例是通过Socket模拟Web服务器,实现浏览器访问服务器上的页面。

/**

* 自定义Web服务器

* @author chenheng

*

*/

public class MyTomcat {

private static final int PORT = 8888;

private ExecutorService threadPool = Executors.newFixedThreadPool(10); //创建线程池

/**

* 启动服务器

*/

public void start(){

System.out.println("服务器启动了");

try {

//创建服务器Socket,监听8888端口

ServerSocket server = new ServerSocket(PORT);

while(true){

//获得客户端的连接Socket

Socket socket = server.accept();

//启动线程对客户端进行服务

threadPool.execute(new ServiceThread(socket));

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new MyTomcat().start();

}

}

/**

* 为客户端服务的线程

* @author chenheng

*

*/

public class ServiceThread implements Runnable{

public static final String DIR = "C:/java_code/web/";

private Socket socket = null; // 客户端连接

public ServiceThread(Socket socket) {

this.socket = socket;

}

@Override

public void run() {

//获得客户端的输入流

try(BufferedReader br = new BufferedReader(

new InputStreamReader(socket.getInputStream()))){

//读取客户端的请求信息

String line = br.readLine();

//截取出请求头中客户请求的网页地址

String url = line.split(" ")[1];

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

if(!url.endsWith(".html")){

return;

}

//在服务器的磁盘上读取该页面文件的内容

BufferedReader br2 = new BufferedReader(

new InputStreamReader(new FileInputStream(DIR+url)));

StringBuilder strb2 = new StringBuilder();

while((line = br2.readLine()) != null){

strb2.append(line);

}

br2.close();

System.out.println("HTML:"+strb2.toString());

//获得客户端的输出流

OutputStream out = socket.getOutputStream();

//定义响应状态

String status = "HTTP/1.1 200 OK\r\n";

byte[] b_status = status.getBytes("UTF-8");

//发送响应状态

out.write(b_status, 0, b_status.length);

//将HTML正文转为字节

byte[] html = strb2.toString().getBytes("UTF-8");

//定义响应头

String response_headers = "Content-Type:text/html;charset=utf-8\r\n"

+ "Content-Length:"+html.length+"\r\n";

byte[] headers = response_headers.getBytes("UTF-8");

//发送响应头

out.write(headers);

//发送字节作为响应头和正文的分隔

out.write(new byte[]{13,10},0,2);

//发送正文

out.write(html,0,html.length);

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 北京天丰利校区(总部)地址:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2、3层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619
    深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋3楼
    咨询电话: 0755-23015275/23015546-801(硅谷) 0755-86660670-801(大学城)
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-811-9990 021-65233829-609
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 郑州校区地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55191750
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 广州校区地址:广州市天河区元岗路200号慧通产业园B9三层
    咨询电话:020-38035223 020-38035220
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 大连校区地址:辽宁省大连市高新园区爱贤街10号大连设计城A座901
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 武汉金融港校区地址:武汉市东湖高新技术开发区光谷大道77号金融港B18栋3楼
    武汉智慧园校区地址:武汉市东湖高新技术开发区光谷大道61号智慧园21栋2楼
    咨询电话:027-59313371
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、360网络安全、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    咨询电话:400-811-9990 028-83178771
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:029-85363390
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 杭州旺田校区:浙江省杭州市江干区九堡旺田书画城A座4层
    杭州龙驰校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层
    咨询电话:400-811-9990 0571-86893632/0571-86094032
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 青岛校区地址:青岛市市北区龙城路卓越世纪中心3号楼8层801
    咨询电话:0532-80911190
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
    咨询电话:400-811-9990 023-68883009
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:0731-85513210
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 哈尔滨校区地址:哈尔滨市松北区创新一路699号 科技创新城19号楼B座五楼
    咨询电话:400-811-9990/0451-87173191
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 南京校区地址:南京市建邺区应天大街780号应天智汇产业园弘辉园1幢2楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、物联网+嵌入式培训、360网络安全、大数据+人工智能培训、全栈软件测试培训、PHP全栈+服务器集群培训、云计算+信息安全培训、Unity游戏开发培训、区块链、红帽RHCE认证、好程序员
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋教育移动站

    扫一扫快速进入
    千锋移动端页面

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱