Web基础上
一、基础概念理解
本地变量、成员变量、类变量?
本地变量:local variable,还叫局部变量
哪些是本地变量?方法中的变量以及方法的参数
本地变量作用范围?方法的形参在整个方法体中;变量从方法定义开始到方法结束。
生命周期?运行到本地变量时,为其分配内存空间,超过其作用范围时,被回收。
成员变量:实例变量
哪些是成员变量:类中定义的属性
作用范围?在整个类中
生命周期?创建对象时(new)分配内存空间,当没有引用时,被GC回收
类变量:static修饰的属性
哪些是类变量:静态的属性
作用范围:在类中任何地方都可以使用。
生命周期:类一旦被加载,就为其分配内存空间(先于实例变量),程序终止或JVM退出。
二、代码示例: Socket、SocketServer实现服务器客户端之间通信
index.html
<HTML> <HEAD> <TITLE>MY PAGE</TITLE> </HEAD> <BODY> <H1>HELLO WORLD</H1> </BODY> </HTML>
server.java(服务器端)
public class Server { public static void main(String[] args) { ServerSocket server = null; Socket socket = null; String basePath = "E:\\webapps"; try { server = new ServerSocket(8080); System.out.println("服务器已启动...."); while(true){ socket = server.accept(); service(socket.getInputStream(), socket.getOutputStream(), basePath); } } catch (IOException e) { e.printStackTrace(); } } //"/hello/index.html" //提供服务的方法 private static void service(InputStream in, OutputStream out, String basePath) throws IOException { //读取本地index.html文件的流对象 BufferedReader br = null; try{ //1- 接收并解析客户端发来的请求信息 int len = in.available(); byte[] buffer = new byte[len]; in.read(buffer);//以上三行,得到客户端的请求信息 String request = new String(buffer); //2- 得到客户端想要的文件路径,从本地文件系统,读取该文件 File reqFile = new File(basePath, request); // if(!reqFile.exists()){//判断请求文件是否存在。 // return; // } //3- 将读取的信息,发送给客户端 br = new BufferedReader(new FileReader(reqFile)); //边读取index.html文件,边向客户端发送。 String line = null; while((line = br.readLine()) != null){ out.write((line + "\r\n").getBytes()); } }catch(FileNotFoundException e){ out.write("404".getBytes()); out.flush(); }finally{ if(out != null){ out.close(); } if(in != null){ in.close(); } if(br != null){ br.close(); } } } }
Client.java(客户端)
public class Client { public static void main(String[] args) { Socket client = null; try { //1- 连接服务器 client = new Socket("127.0.0.1", 8080); //2- 向服务器发送请求信息 OutputStream out = client.getOutputStream(); out.write("\\hello\\index.html".getBytes()); out.flush();//刷新给服务器端文件路径 Thread.sleep(1000);//此处休眠很重要 //3- 接收服务器发送的信息,并打印输出到控制台 InputStream in = client.getInputStream(); // int len = in.available(); byte[] buffer = new byte[1024]; int len = -1; while((len = in.read(buffer)) != -1){ System.out.println(new String(buffer, 0, len)); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(client != null){ try { client.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
三、分析BS结构访问网站过程及Web结构
- 客户端
在bs结构,所谓的客户端就是浏览器(HTTP客户端)。
常用的浏览器?IE, FireFox, Chrome
浏览器作用?将请求发送给服务器端;接收服务器的响应信息(HTML和脚本),并显示。
- 服务器(WEB服务器,HTTP服务器)
- HTTP协议
超文本传输协议。就是规定web的基本运行过程以及浏览器和服务器之间通信细节。
HTTP协议关于如何在网络上传输HTML文档的协议。
HTTPS协议。 http over ssl
- Web应用
web application, 一般都是由程序员编写的,可以发布到web服务器上,浏览器就可以访问web应用及资源。
- URL
Uniform Resource Locator: 统一资源定位符。用于标识网络上的资源位置,互联网上任何一个文件或资源
都有一个唯一的URL。
都有一个唯一的URL。
- HTML
hypertext markup language: 主要用于向用户进行信息表达。浏览器解析并展示。
四、什么是Web及Web运行原理
Web就是一种分布式的应用架构,目的分享在网络上的各个web服务器中所有互相连接的信息。
web采用的是客户端/服务器通信模式,HTTP协议规范浏览器和Web服务器之间的通信过程;使用HTML表达
信息,以及建立信息与信息之间的链接;使用URL实现网络上的信息精确定位。
注意:www world wide web.全球范围内的web。
五、Web各部分详解
1- HTML、JS、CSS
2- 浏览器
3-
URL
获得网络上的资源,首先根据URL找到网络资源。URL一般有三部分组成
应用层协议, 主机IP地址或域名, 资源所在的路径。
应用程序协议://IP地址或域名:端口号/xxx/xxx
http://image.baidu.com/search/index
URI Uniform Resource Identifier 统一资源标识符
4- Web服务器
Web服务器是由专门的服务器开发商开发。对于Web而言,除了需要Web服务器,还需要 JSP/Servlet容器(Web服务器)。JSP/Servelt容器基本功能,把动态资源转换成静态资源。通常web服务器和JSP/Servlet容器集于一身。
常见的Web服务器(也称中间件):
Tomcat apache开发
Apusic 金蝶
WebSphere IBM
JBOSS RedHat开发 支持JavaEE,EJB容器
WebLogic Oracle开发 支持JavaEE, 收费
IIS 微软
为什么使用Tomcat服务器?
1- Tomcat由apache组织提供的一款开源的免费的软件。
2- Tomcat完全有Java编写,运行未定,可靠,高效。
3- Tomcat因为SUN公司参与研发,最新的JSP/Servlet规范总能够及时体现。
4- Tomcat可以运行在任何操作系统上
5- Java官方推荐使用Web服务器
6- Tomcat除了包含Servlet容器,还提供了其他功能。tomcat管理和控制平台,安全域管理等
一般不建议使用最新版本。
tomcat7.0支持servlet3.0, tomcat6.0支持servlet2.5。
下载Tomcat? 官网下载
http://tomcat.apache.org/
Tomcat安装:
安装版和解压缩版
安装版:注意安装路径。
解压缩:解压缩的过程就是安装的过程。
配置环境变量:
JAVA_HOME:JDK安装目录。让tomcat在启动时,找到JDK,使用其中JVM运行tomcat
CATALINA_HOME: 可配置可不配置。
Tomcat目录分析:
- bin: binary, 该目录下存放的都是命令(可执行文件)。启动tomcat(startup.bat),关闭tomcat(shutdown.bat)
- conf: config,该目录存放的是tomcat配置文件,非常重要。
- server.xml:配置整个Tomcat服务器。配置端口号,配置虚拟主机。
- tomcat-users.xml:通过网页,管理控制tomcat服务器。存放的是用户名,密码。
- context.xml: 一个context表示一个web应用,tomcat中的context.xml对所有web应用进行统一设置,很少配置。
- web.xml: 部署描述符文件,该文件被tomcat中的Web应用中的web.xml文件直接继承。 web.xml中保存了很多MIME类型。
MIME(Multipurpose Internet Mail Extension)多用途的网络邮件扩展协议。HTTP协议中请求正文和响应正文都可以看做是邮件。MIME规定了邮件标准格式,只要遵守MIME协议的数据类型,都统称为MIME类型。让接收方看得懂发送方发送的邮件。text/html; Content-type: text/html
- lib: library ,tomcat的类库,其中存放了大量的JAR文件。在所有的web应用中,可共享。
- logs: 是日志目录,记录了tomcat启动,关闭,使用中相关的信息。
- temp: temporary 临时目录,该目录存放tomcat临时文件。一旦停止tomcat,该目录中内容清空。
- webapps: web applications :存放web应用的目录。可以存放多个Web应用。ROOT是默认的Web应用。
- work: tomcat在运行时生成的文件。此文件夹中的文件可以删除。
Tomcat组成结构:
Tomcat本身有一些列可配置的组件构成。一个Server可以有多个Service;一个Service有多个Connector及一个Engine,多个connector共享一个引擎。一个Engine包含多个虚拟主机,每个虚拟主机都可以包含多个Context。一个Context可以理解为一个Web项目(Web应用)
案例:1- webapps中发布静态项目
2- 在webapps外部发布静态项目
将hello放在c:\hello中;
在server.xml中的<host>元素内,配置<Context path="hao" docBase="c:\hello">
path:浏览器访问的入口,Web项目的别名。
docBase:Web项目在文件系统中的真实路径。
在conf\catalina\localhost 创建hao.xml文件,在文件中配置
<Context docBase="c:\hello2">
文件名hao表示浏览器访问的入口
docBase:web项目在文件系统中真实的路径。
案例:配置虚拟主机。
step01- server.xml中修改connector端口为80;
step02- server.xml中配置虚拟主机
<Host name="www.hao.com" appBase="c:\haoapps"
unpackWARs="true" autoDeploy="true">
</Host>
name: 虚拟主机的名称
appBase:该虚拟主机存放web项目的默认目录。
autoDeploy: 当一个Context也就说web项目放到该目录时,tomcat自动部署
step03- 在c:\windows\system32\drivers\etc\hosts,配置dns解析
step04- 在c:\haoapps中创建ROOT目录,该目录中创建index.html。
step05- 打开浏览器,输入http://www.hao.com即可访问index.html文件。
一般web项目都是在虚拟主机的webapps中发布,也可以不在该文件夹中发布项目。此时就需要配置。(了解)