一. JSP 页面书写Java代码的三种方法
1. 声明表达式<%! %>
声明变量和函数,可以由java代码调用。例如<%! String name=“yvwenting”%>
注意:
- <%!%>中可以出现分号
- 声明脚本可以放在页面的下方,也可以放在页面的上方。
- 不建议在声明脚本中声明变量,这样会导致线程不安全。
2. 普通脚本<% %>
用于在jsp页面执行java语句如实例化对象,调用方法等,在这里面也可以定义变量,但要想输出就得使用out.println()方法。
3. 表达式标签<%= %>
用于在jsp页面显示(向页面输出,现在在页面上)某个变量值,或方法调用的返回值。
二. JSP 编译指令
定义了三个指令:page指令,include指令,taglib指令。
- 关于 page 指令:<%@ page%>定义网页依赖属性。
- language 定义jsp页面使用的脚本语言,默认为Java
- import 导入要使用的Java类
- contentType 指定jsp页面的MIME类型和字符编码
- pageEncoding jsp文件本身的编码
- isELignored 指定el表达式能否被执行
- session 指定session能否被使用
- isScriptingEnabled 指定脚本元素能否被使用
- 关于 include 指令:<%@ include%>,用于引入其他jsp页面,jsp引擎会将两个jsp翻译成一个servlet,所以也称为静态引入。
- file指定被包含文件相对于当前jsp页面的相对url
- 关于 taglib 指令:<%@ taglib%>,是定义一个标签库以及其自定义标签的前缀。
- uri指定该标签库的存放位置
- prefix指定该标签库的引用前缀
三. JSP 动作指令
- jsp:forward:执行页面转向,将请求的处理转发到下一个页面。
- forward指令:转向的作用,既可以转发到静态的HTML页面,也可以转发到动态的JSP,或者转发到容器的Servlet。
- jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。
- param指令:用于设置参数,不能单独使用,与三个指令结合使用(jsp:forward,jsp:include,jsp:plugin),与forward一起使用时,param指令用于将参数值传入被转向的页面;与include一起使用时,用于将参数值传入被导入的页面;与plugin一起使用时,用于将参数传入页面中的JavaBean实例或Applet实例。
- jsp:include:用于动态引入一个JSP页面。
- include指令:这是一个动态指令,也用于包含某一个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入页面。
- jsp:plugin:用于下载JavaBean或Applet到客户端执行。
- plugin指令:主要用于下载服务端的JavaBean或Applet到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。使用不多。
- jsp:useBean:创建一个JavaBean实例。
- jsp:setProperty:设置JavaBean实例的属性值。
- jsp:getProperty:输出JavaBean实例的属性值。
- useBean用于在JSP页面中初始化一个Java实例;setProperty指令用于JavaBean实例的属性设置值;getProperty指令用于输出JavaBean实例的属性。若多个JSP页面需要重复使用某段代码,可以把这段代码定义成Java类的方法,然后让多个JSP页面调用该方法即可。
四. JSP 脚本中的9个内置对象
-
application
jsp、servlet之间不能相互调用。为了解决jsp和servlet之间数据交换的问题,webserver提供了四个对象,各自是application、session、request、page。
放入application对象中的数据对整个Web应用有效,一旦jsp、servlet将数据放入application对象之中,该数据能够被该应用下其他jsp、servlet访问。 -
config
config对象代表当前jsp配置信息,但jsp页面通常无需配置,该对象在jsp页面中较少使用。在servlet中使用较多。 -
exception
exception对象是Throwable的实例。代表jsp脚本中产生的错误和异常,是jsp页面异常机制的一部分。把page指令的isErrowPage属性设置为true时能够訪问exception内置对象。 -
out
out对象是javax.servlet.jsp.JspWriter的实例,代表jsp的输出流,永于输出内容形成html页面。
out对象一些方法:
- out.println():输出完毕后会换行,换行效果在页面中不显示仅仅在源代码中显示
- out.print():输出后不换行
- out.getBufferSize() :输出缓冲区大小
- out.getRemaining() :输出剩余缓冲区大小
- out.clear():清空缓冲区,不将数据发送至client
- out.clearBuffer():将数据发送至client,再清空缓冲区
- out.flush():输出缓冲区内容
- out.close():关闭输出流
-
page
代表该页面本身。通常没有太大用处。 -
pageContext
代表页面上下文,主要用于jsp之间的共享数据,使用pageContext对象能够訪问page、request、session、application范围的变量。 -
request
request对象是jsp中的重要对象,每一个对象封装着一次用户请求。而且所有对请求參数都被封装在request对象中,request对象是获取用户请求參数的重要途径。
request对象的一些方法:
- request.getMethod():获取请求的方法名。如:get,post.
- request.getRequestURI():获取请求资源名.如:请求訪问:/jspstudy/08/request.jsp
- request.getProtocol():获取请求使用的协议.如:HTTP/1.1
- request.getServerName():获取请求使用的server,如:localhost.
- request.getServerPort():获取请求使用的serverport。如:8080
- request.getRemoteAddr():获取client的ip地址.
- request.getRemoteHost():获取client主机.
- request.getParameter():获取传递过来的參数值.
- request.getParameterValues():请求參数有多个值时。该方法返回多个值组成的数组.
- request.setAttribute():
-
response
response对象用于server对client的响应,大部分时候使用out对象向页面输出。可是out对象时JspWriter对象的实例,JapWriter时Writer的字类。Writer是字符流,因此out对象无法输出非字符内容。jsp页面须要输出图片、pdf文档、excel等非字符对象时须要使用response作为响应输出.response还能够用于重定向。向client添加cookie. -
session
session对象代表一次用户会话。一次用户会话的含义是:从client连接server開始。到client与server断开为止,这个过程就是一次会话。
session通经常使用于跟踪用户的会话信息,如推断用户是否登录。购物车中跟踪用户购买的商品。
session范围的属性能够在多个页面点跳转之间共享。一旦关闭浏览器,session结束。session范围内的属性就会所有丢失。