一.三个编译指令
常见的编译指令:
(1)page 针对当前页面的指令
(2)include 制定包含另一个页面
(3)taglib 定义和访问自定义标签
1. page指令
2. include指令
使用这个指令,将一个外部文件嵌入到当前JSP页面中,同时解析这个页面的JSP语法这是个静态的include语句,他会把目标页面的其他便以指令也包含进来,但动态include则不会
注意:两个页面的编译指令不能相同,会报错
3. taglib指令
目前常用的有两个,一个是c标签库,一个是s标签库
动作指令与编译指令不同,编译指令是通知servlet引擎的处理消息,而动作指令仅仅是运行时的动作,编译指令在将JSP编译成servlet时起作用,而处理指令通常可替换成JSP脚本,他只是JSP脚本的标准化写法。
JSP动作指令如下:
1. forword指令
将页面响应转发到另外一个页面,既可以是静态页面又可以是动态页面,甚至是servlet。
执行此操作不会导致请求参数丢失,使用request.getParameter("###")接收。页面地址并未改变,只是采用了新页面来响应它。
2. include指令
他也用户导入其他页面,只不过不会导入编译指令,只会导入页面body部分插入到当前页面。
##动态导入和静态导入的区别:
静态导入是一种全部导入,合成一个servlet,而动态导入是Servlet中使用include方法来引入被导入页面的内容,动态导入后编译指令失效,只是插入了body部分。动态包含可以增加额外的参数
3. userBean setProperty getProperty
其实就是创建一个页面版本的javaBean,最好是直接去创建类,这样好一些,这里给出这个标签用法:
4. plugin指令
略
5. param指令
结合之前学的使用:
对象名称 | 实例所属 | 含义 | 作用范围 | 常用方法 |
application | javax.servlet.ServletContext | 代表jsp所属应用,可用于JSP页面或servlet之间交换信息 | Application |
get/setAttribute(String attName) getInitParameter(String paramName) |
config | javax.servlet.ServletConfig | 代表jsp的配置信息,基本在servlet中发挥作用 | Page |
getInitParameter(String paramName) getInitParameternames() |
exception | javax.lang.Throwable | 只有当前页面为编译指令page中isError=true时才有用 | Page | getMessage(),printStackTrace() |
out | javax.servlet.jsp.JspWriter | jsp页面输出流用于输出内容形成html页面 | Page | |
page | 页面本身,也是servlet中的this,能用page的地方就可以用this | Page | ||
pageContext | javax.servlet.jsp.PageContext | jsp上下文,可以访问页面中的共享数据 | Page | getServletContext();getServletConfig() |
request | javax.servlet.http.HttpServletRequest | 该对象封装一次客户端请求参数发送到服务器端 | Request |
getParaqameter(String name); getParameterValues(String name); setAttribute("key","value");getAttribute(key); setCharacterEncoding(String env); |
response | javax.servlet.http.HttpServletResponse | 代表服务器端对客户端的响应 | Page |
getOutputStream(); sendRedirect(java.lang.String Location); |
session | javax.servlet.http.HttpSession | 代表一次通话(从建立连接到浏览器关闭) | Session |
setAttribute("key","value"); getAttribute(key); |
注意,所有jsp页面编译后都有如下信息可以查询:
1. application对象
application对象实现了用户间数据的共享,可存放全局变量。与session对象不同的是,所有客户的application对象都是同一个,即所有客户共享application对象,这样application对象就可以起到一个全局变量的作用
application开始于服务器的启动,终止于服务器的关闭。在用户的前后链接或不同用户之间的连接中,可以对application对象的同一属性进行操作。
在任何地方对application对象属性的操作,都将影响到其他用户对此的访问服务器的启动和关闭决定了application对象的生命。application对象是ServletContext类的实例。
application对象的常用方法如下:
(1)public void setAttribute(String name,Object value)使用指定名称将对象绑定到此会话。
(2)public Object getAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
(3)Enumeration getAttributeNames()返回所有可用属性名的枚举。
(4)String getServerInfo():返回JSP(Servlet)引擎名及版本号。
application开始于服务器的启动,终止于服务器的关闭。在用户的前后链接或不同用户之间的连接中,可以对application对象的同一属性进行操作。
在任何地方对application对象属性的操作,都将影响到其他用户对此的访问服务器的启动和关闭决定了application对象的生命。application对象是ServletContext类的实例。
application对象的常用方法如下:
(1)public void setAttribute(String name,Object value)使用指定名称将对象绑定到此会话。
(2)public Object getAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
(3)Enumeration getAttributeNames()返回所有可用属性名的枚举。
(4)String getServerInfo():返回JSP(Servlet)引擎名及版本号。
主要两个地方有用到:
(1)在多个jsp、servlet共享数据,比如:
(2)获得web应用配置参数
比如在web.xml中这样写:
在jsp中获得:
2. config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象),简单点就是你在web.xml中写的init-params都可以用它接收
常用的方法如下:
(1)ServletContext getServletContext():返回含有服务器相关信息的ServletContext对象。
(1)ServletContext getServletContext():返回含有服务器相关信息的ServletContext对象。
(2)String
getInitParameter(String name()):返回初始化参数的值。
(3)Enumeration
getInitParameterNames():返回Servlet初始化所需所有参数的枚举。
比如在web.xml中这样写:
通常在jsp中这样写:
与application区别:
这里实在每个servlet里面的初始化配置,二application使用的是在全局web.xml的配置
3. exception对象
仅在当前页是错误页才起作用
页面输出流
5. pageContext对象
pageContext是页面上下文的意思,也就是说和页面相关的都可以在这里面找到,我们知道数据存放有四大域,范围分别叫做page、reuqest、session、application,这个对象可以取到这些里面的任意属性或者添加任意属性,主要如下:
试验一下看看详情:
得出的结果是:
除此之外pageContext对象还可以获得其他内置对象:
6.request对象
先粘贴一些方法吧,因为这个太常用了,所以最好都掌握了
GET和POST方式的区别:
get方式显式的将参数放在了url的后面并且对数据量大小有限制,而post方式会放入到HTML HEADER中,传输数据可以无限大,安全性相对较高。
通常解决乱码诀窍:
当我们用其进行页面跳转时:forward会传递请求参数。还有,下面这个path必须以"/"开头
记得要在response中加入cookie,才能在request中去提取出来显示!
cookie存取中文比较麻烦,需要借助一些东西,比如:
主要方法:
8. session对象
session里面存放的数据可以保留到浏览器关闭为止。