JavaWeb学习笔记(一)

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。
  • 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
         ftp://ip/
         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">
                             重启tomcat,通过浏览器访问   http://localhost:8080/hao/a.html
                             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解析
               127.0.0.1           www.hao.com
                step04-  在c:\haoapps中创建ROOT目录,该目录中创建index.html。
                step05-  打开浏览器,输入http://www.hao.com即可访问index.html文件。

一般web项目都是在虚拟主机的webapps中发布,也可以不在该文件夹中发布项目。此时就需要配置。(了解)
 

猜你喜欢

转载自blog.csdn.net/zqq3436/article/details/80306812