JSP3个编译指令
page:针对当前页面,配置各种属性
<% @ page contentType="text/html" ; charset="gbk" language="java" isErrorPage="true"%>
include:用于指定包含另一个页面,可以将一个外部文件嵌入到当前JSP文件中,这个是个静态的include语句,它会把目标页面的其他编译指令也包含进来,适用于包含静态页面
<%@ include file="**.jsp"%>
taglib:用于定义和访问自定义标签
JSP的7个动作指令
forword指令
用于将页面的相应转发到另外的页面,既可以转发到静态HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的servlet。并没有重新向新页面发送请求,只是完全采用了新的页面来对用户生成响应-请求依然是一次请求,所以请求参数,请求属性都不会丢失。地址栏url不会改变
<jsp : forward page="***.jsp">
<jsp:param name="" value="" />
</jsp: forward>
include指令
动态的,用于包含某个页面,不会导入被include页面的编译指令,仅仅导入页面的body内容插入页面
<jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面。
静态导入将导入页面的代码完全融入,两个页面融合成一个整体servlet,动态导入在servlet中使用include方法来引入被导入的内容
useBean、setProperty、getProperty指令
3个都是也JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例,后面连个用于为bean实例的属性赋值、取值
<jsp : useBean id="name" class="classname" scope="page|request|session|application">
id : bean实例名
class:类路径
scope:bean作用范围
plugin指令
主要用于下载服务器端的JavaBean或Applet到客户端执行,由于程序在客户端运行,因此客户端必须安装虚拟机
param 指令
设置参数的值,不能单独使用 。可以和include、forward、plugin指令结合使用
JSP脚本中的9个内置对象
这9个对象都是在JSP被容器生成.java文件时加入的,可以直接使用
page:
代表该页面本身,通常没有太大用处,也就就是servlet中的this,其类型就是生成的servlet类,能用page的地方就可以用this
exception:
java.lang.Throwable的实例,该实例代表其他页面中的异常错误,只有当编译指令page的isErrorPage属性为true时,该对象才可以使用,常用方法getMessage() 和printStackTrace()
pageContext:
javax.servlet.jsp.PageContext的实例,带表JSP的上下文,是用该对象可以访问页面中的共享数据。可以得到下面的所有对象
appliction:
javax.servlet.ServletContext的实例,该实例代表JSP所属的web应用本身,可用于JSP页面,或者在Serblet之间交换信息
config:
javax.servlet.ServletConfig的实例,该实例代表JSP的配置信息,该对象更多的在servlet中有效
request:
javax.servlet.http.HttpServletRrquest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里
response:
javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的相应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。response常用于重定向,sendRedirect():与forward不同的是重定向会丢失所有的的请求参数和request范围的属性,重定向将生成第二次请求,与前一次请求不再同一个request范围内。放松一次请求的请求参数和request范围的属性全部丢失,地址栏的URL也会跟着改变
session:
javax.servlet.http.HttpSeesion的实例,该对象代表一次回话,当客户端浏览器与站点建立连接时,会话开始,当客户端关闭浏览器时回话结束。通常只应该把与用户会话状态相关的信息放入session范围内,不要仅仅为了两个页面之间交换信息,就使用session,如果为了两个页面信息页面交换信息,可以将该信息放入request范围,然后forword请求即可。
out:
javax.servlet.jsp.JspWriter的实例,该实例代表JSP的输出流,用于输出内容,形成HTML页面。
servlet 生命周期:
如果说servlet没有配置load-on-startup属性时,将在第一次被访问时创建(如果有配置,将在服务器启动时创建)
在应用程序运行过程中每个servlet类只会被创建一个对象
当对象被创建完毕时必须会执行init方法对对象的数据进行初始化,整个应用程度运行过程中该方法只会被执行一次
当有请求访问该对象时,servlet容器会调用该对象的service方法,service方法中对请求的类型进行判断
如果是get方法则调用重写的doGet方法,如果是post则会调用doPost方法
在doXXX方法中对请求进行处理及响应
响应后该对象将等待继续访问或者被销毁
再销毁之前,容器会调用该对象的destroy方法,然后该对象再被销毁. 请给分,很辛苦的
-----------------------
request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据