今天和大家來聊聊jsp的一些知識,算是自己的一個總結吧。
jsp的英文全稱是(java server page)是由sun公司主導,多個公司聯合一起開發的一個服務器的網頁技術。jsp具有簡介的特點更加的容易的使用
jsp的語法介紹:
jsp的語法都是以<%开始%结尾>来进行设计和表示的。首先我们来看看jsp的编译过程,jsp最终会被编译成为一个servelt实例,然后去调用对应的方法。jsp是运行在我们的web服务器上面的,最基本的,最常见的web服务器就是我们的tomcat服务器,是开源免费的。是Apache旗下的,最后被sun公司收购。
下面我们来看看jsp的运行机制
1.首先我们的浏览器发送一个http请求。
2.web服务器识别一个jsp请求,并且将该请求传递给jsp引擎。和我们的web容器协同工作.
3.jsp引擎载入我们的jsp文件,并且将我们的jsp文件转化为一个servelt类
4.将上面的servelt类进行编译,并且生成一个servelt实例。该实例调用httpservelt的相对应的方法 ,生成相对应的html文件。并且
将其嵌入到我们的HTTP response中交给我们的web服务器
5.web服务器最终以静态的html文件输出到我们的浏览器。就是我们最终看到的。
前面的博客我们提到了Servelt。Servelt本质上就是我们的 一段可以在jsp页面执行的一段java代码。jsp和我们的javabean和很相似。javabean编写的java组件可以实现重用。然而我们的servelt是更加的 容易编写,大大的简化了我们的java代码的开发。
今天我们主要学习下我们的jsp。关于servert的知识,可以去看看我之前写的博客。这里我就多说了。
下面来说说我们的 jsp的生命周期和我们的servelt的生命周期是非常的相似的,下面我们来看看jsp的 生命周期分为以下几个阶段
1.编译阶段。
将我们的jsp文件编译成为servert文件的。Servelt容器容器编译servelt文件生成我们的servelt类
2.初始化阶段
加载和jsp相关的文件,生成想对应的servelt实例。
3.运行阶段
调用与jsp相对应的Servelt的相关的方法
4.销毁阶段
调用和jsp相对应的Servelt的相关的 销毁方法,由jvm释放该内存资源。最后将我们的结果潜入到我们的http Response里面,并且以静态的html的格式返回给我们的浏览器。
大家可以看到这个过程还是非常的复杂的,我们要编写一大堆java代码,也就是我们的servelt相关的业务逻辑的处理代码。
后面我们将介绍JSTL标签库,让我们的开发变得更加的简单。还有我们后面介绍的el表达式都是为了简化Servelt开发儿设计的
但是我们今天主要是讲述我们的jsp的相关东西,jsp页面可以嵌入我们的el表达式,以及我们的jstl标签。后者才是i更加的强大的。直接使用标签就可以实现很多复杂的操作。
jsp里面的脚本程序必须写在<%%>之间,任何文本。html代码必须写在它的外面。
<%
java代码片段。
%>
jsp 2.0里面包含了很多的指令,具体的有多少个,我也记不住了。最主要的就是以下几个指令
page指令;用来指定页面的属性。比如脚本语言的属性,指定整个wen域的属性。
include指令:包含其他的文件,
taglib指令没在后面引入我们的JSTL标签库的时候,必须使用到它。是引入我们的标签库的时候必须使用的。
jsp的动作标签:
jsp:include在页面被请求的时候载入另外的一个文件。这里可以是静态的文件或者是动态的文件。这里要注意的就是和前面介绍的include指令有点不同,前者是在将我我们的jsp编译成为servelt类的时候加载的。
jsp:forward将我们的请求跳转另外的一个页面。
这几个使用的比较常见,其他的大家了解,遇到问题的时候知道怎么使用就可以了。
下面我们来看看jsp里面隐藏的对象,一共是以下几个,可以直接的使用。
1. request对象:它是HttpServerRequest的实例对象,封装了和用户请求相关的信息,它的作用于是整个web域名。
2.response对象:它是HttpServerResponse的实例对象。
3.out对象;它是jspWriter的实例对象,主要是将一些东西输出到网页上面。
4.session:它是httpSession的实例。主要是浏览器的缓冲。
5.application:ServeltContext上下文相关的东西。
6.page:类似java的this指针。
表单处理:
我们在浏览网页的时候,经常会向服务器提交表单的信息,在表单的提交过程里面,我们经常使用get和post两种方式。但是
也还有其他的请求方法,比如delete push等等
下面我们就这两种方式来总结下他们的区别。
1.get方式请求的数据的参数一般是跟在请求的地址的后面。一般是?的后面,数据直接暴露出来,这个是非常的不安全的。
2.post方式更好的保护了请求的数据,是一种安全的请求方式。jsp通过getParterm来获取参数。一些敏感的数据我们使用post
来进行传递。
通过通过request,response的一些方法来获取。
cookie的设置。
(1)创建一个Cookie对象: 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。
Cookie cookie = new Cookie("key","value");
通过request的方法来获取cookie数值。包含三个步骤
1.(1)创建一个Cookie对象: 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。
2.设置有效期:调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时
3.将cookie发送至HTTP响应头中:调用response.addCookie()函数来向HTTP响应头中添加cookie。
想要读取cookie,您就需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值。
文件的上传
jsp页面还可以支持文件的上传。在文件的上传过程里面,我们必须要导入外部的包的支持。这里就不多说了。很简单。
后续补充一i个例子,大家就知道了。
页面重定向:
当需要将文档移动到一个新的位置时,就需要使用JSP重定向了。
最简单的重定向方式就是使用response对象的sendRedirect()方法。这个方法的签名如下:
代码如下;
// 重定向到新地址 String site = new String("http://www.runoob.com"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site);
jsp有很多的东西,如果要一个一个完全的掌握。需要大量的实践,这里就不再多说了。当正真的项目有这个需求的时候,
直接看看就可以了。