学习JSP&Servlet之前,我们需要对一些基本概念熟悉一下,方便以后的理解掌握。
一,关于HTTP。HTTP是一种基于请求/相应的通信协议,客户端发送一个取得资源的请求到服务器,服务器将相应返回给客户端。这里请求的资源是URL(统一资源定位符),也就是目标资源所在服务器的地址或者目录。客户端/服务器每次联机只做一次请求响应,是一种十分简单的连接机制,被称为无状态的通信协议。
二,关于web容器。web容器类似Java虚拟机JVM,Java必须执行在JVM虚拟机上,也就是Java只认识JVM这种虚拟的操作系统,先编译生成.class文件,.class文件是JVM的可执行文件。而JSP&Servlet也正是类似Java程序在JVM上运行,它们是运行在web容器上的程序,web容器负责它们的生命周期。从这种意义上来讲,JSP&Servlet正是继承了Java的移植性与方便性,采取了与平台无关的运行方式。
JSP是一种Servlet,也就是说,Servlet包含JSP。JSP在运行的时候,先被转译成为Servlet,继承自HttpJspBase,而HttpJspBase又继承自HttpServlet。从这种继承关系上也可以发现这种端倪(读者可以自己查阅一下编译之后的JSP源码文件)。
既然JSP是一种Servelt,为什么还需要JSP,直接用Servlet不久可以完成任务吗?理论上确实如此。但是,所有的创造发明都是为了解放,也就是说,JSP解放了Servlet以前的不方便与冗余。讲的更直白一点,JSP是HTML代码中嵌入Java代码,而Servlet是在Java代码中嵌入HTML。可以说两者是一种互补的关系,JSP+Servlet更好的完成了所需的操作。
最后,再讲一下form表单method方式中get和post的区别:
(1)post比get更加安全。get提交表单的信息会暴露在地址栏中,而post不会。
(2)post传送的数据量比get更大。get传送的数据量一般为2KB(取决于浏览器和操作系统,因为get会以明文形式发送数据,和浏览器地址栏所容纳长度有关),而post理论上不作限制。
(3)get是幂等的。也就是说,get不会改变服务器的状态,post可能会改变。
总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!