Java基础知识(八)

1.      Java Web 页面请求的工作流程是怎样的

浏览器是一个工具软件:1)完成与服务器端的交互;2)完成HTML(超文本语言)的解析。从而实现把用户需要查看的资源信息以直观的形式展现出来。

上述流程中2浏览器把请求组装成指定的格式发送给服务器,客户端与服务器端之间通过HTTP来完成具体的交互。其中请求的数据流主要包含HTTP(超文本传输协议,建立在TCP/IP基础上的一个协议,主要用来实现客户端与服务器端之间的通信),请求方法(GET或POST)、请求网址(URL,统一资源定位符)以及请求的一些参数。5服务器通过HTTP把响应消息组装成特定的消息格式后返回给客户端,响应的数据流主要包括含状态编码(代表请求成功或失败),Content-type(text、picture、HTML等),响应消息的内容(图片或HTML格式的内容)。

2.      HTTP中GET与POST方法的区别

HTTP请求的方法有很多种类:GET、POST、HEAD、TRACE、OPTIONS等,其中:

GET是最简单的一种请求方法,其主要功能是从服务器端获取用户所需资源,将其作为响应返回给客户端,这些资源可以是HTML页面、图片、文档等内容,GET如同数据库查询操作一样不会改变资源自身的状态。

POST除了GET的功能外还可以向服务器上传数据,传递数据是通过HTTP请求的附件进行的,传送的数据量更大一些,一般默认不受限制。而且它向服务器提交的内容在URL中并没有明文显示,对用户都是不可见的,安全性更好一些。

3.      什么是Servlet

动态页面就是根据不同时间、不同用户而显示不同内容的页面。生成动态页面的方法1)采用公共网关接口(CGI,是一种用Perl脚本编写的程序)。2)采用Servlet方法。它是采用java语言编写的服务器端程序,它运行于Web服务器中的Servlet容器中,其主要功能是提供请求/响应的Web服务模式可以生成动态的Web内容,这正是HTML所不具备的功能。

Servlet优势:1.较好的可移植性;2.执行率高,由于CGI针对每个请求都会创建一个进程来处理,而Servlet针对每个请求创建一个线程来执行,而创建线程比创建进程的开销小;3.功能强大,Servlet可以与Web服务器进行交互,而CGI不能;4.使用方便,Servlet提供了许多非常有用的接口用来读取或设置HTTP头消息,处理Cookie和跟踪会话状态;5. 可扩展性强。

Servlet处理客户端请求的步骤:

1)  用户通过单击一个链接来向Servlet发起请求。

2)  Web服务器接收到该请求后,会把请求交给相应的容器来处理,当容器发现这是对Servlet发起的请求后,容器此时会创建两个对象:HttpServletResponse和HttpServletRequest。

3)  容器可以根据请求消息中的URL消息找到对应的Servlet,然后针对该请求创建一个单独的线程,同时把2)中创建的两个对象以参数的形式传递到新创建的线程中。

4)  容器调用Servlet的service()方法来完成对用户请求的响应。Service()方法会调用doPost()或doGet()方法来完成具体响应任务,同时把生成的动态页面返回给容器。

5)  容器把响应消息组装成Http格式返回给客户端,此时这个线程结束,同时删除2)创建的两个对象。

4.      doPost()方法与doGet()方法的选择

当Http请求中的method属性为get()时调用doGet()方法,当为post属性时调用doPost()方法。

5.      Servlet的生命周期

整个生命周期都由容器控制的。有两个状态:未创建状态和初始化状态,主要由init()、service()和destroy()方法控制的。init()方法用于创建或打开任何与Servlet相关的资源以及执行初始化工作; service()方法是Servlet中真正处理客户端传来的请求的方法;destroy()方法释放任何在init()方法中打开的与Servlet相关的资源。具体地,Servlet生命周期可以分为加载、创建、初始化、处理客户请求和卸载。其中init()和destroy()方法只会被调用一次,而service()方法法在新的客户请求到来时都会创建一个新的线程来处理请求。

6.      JSP(Java ServerPages)的优点

是一种动态技术标准,也就是嵌入了Java代码的HTML文件。由于Servlet实现时存在较大的缺陷:必须把给用户响应的视图组装成一个很长的HTML格式的字符串写入println()方法中。JSP的理念是让每个Servlet只负责其对应的业务逻辑的处理,让JSP来负责用户的HTML显示。

JSP和Servlet的异同:JSP是对Servlet的扩展,由于JSP页面最终要被转换成Servlet来运行,因此处理请求实际上是编译后的Servlet。

7.      使用JSP与Servlet实现MVC(Model、View、Controller)模型

时间: 2024-08-27 14:27:41

Java基础知识(八)的相关文章

Java基础知识(八)

一.HashMap<K,V>集合 1.概述(1)本身基于哈希表,可以保证键的唯一性.(2)Map集合只针对键有效,当集合中出现两个键一样时,后者所对应的值会覆盖掉前者所对应的值存储.2.常见存储类型(1)HashMap<String,String>:(2)HashMap<Inreger,Inreger>(3)HashMap<Student,String>:(4)HashMap<String,Student>3.当键的类型不同时(1)键为自定义类型

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

Java基础知识梳理《一》

一.Java数据类型(简单称之为“四类八种”) java 基本的数据类型长度都是固定的,好处是在实现跨平台时就统一了. 1.整型 byte short int long (分别是1,2,4,8个字节) 类型 存储需求 位数 取值范围 byte 1字节 8位 -128~127 short 2字节 16位 -2^15 ~2^15-1 int 4字节 32位 -2^31~2^31-1 long 8字节 64位 -2^63~2^63-1 当超出int表示范围时,应该使用long型,添加后缀一大写的L 注

Java基础知识陷阱系列

Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四) Java基础知识陷阱(五) Java基础知识陷阱(六) Java基础知识陷阱(七) Java基础知识陷阱(八)

java基础知识文章汇总

将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) String性质深入解析 java基础(六) switch语句的深入解析 java基础(七) java四种访问权限 java基础(八) 深入解析常量池与装拆箱机制 java

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

第1天:了解Java基础知识

Java的优势 1. 简单 不像C或者C++语言,Java中省去了对指针的操作.但是,Java中并没有省去指针,代替指针的是一种新的变量--引用,引用也是保存一个对象的内存地址. 2.方便 Java虚拟机自带垃圾回收器,能够自动回收内存资源.而C和C++语言,需要开发人员手动进行内存资源回收. 3.安全 不支持指针操作 4.平台无关性 Java语言是跨平台的,一次编译,到处运行. 而且,不同平台,C语言中数据类型所占的位数是不同的,而Java语言中,数据类型所占的位数是固定的. 5.面向对象 J

JAVA基础知识-java文化基础和运行环境

JAVA基础知识 1,java是95年sun公司推出的开发语言,发展很快,09年被oracle公司收购.至今分为SE.ME.EE三个发展方向和软件版本. 2,运行java的环境主要是通过JVM(java virtual machine)实现的.首先编写.java结尾的源文件,通过编译器编译成.class结尾的字节码文件,然后通过解释器实现在不同平台上一致运行的效果. 3,jvm,jre和jdk的区别:jvm,java虚拟机:jre,java运行环境,jdk:java开发工具包. 4,jdk的下载

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程