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。