Jsp页面元素构成
静态内容
Jsp指令
page指令:指明页面的语言,编码,引用的类
<%@page [属性="属性值"]... %> 常用属性:language:指定JSP页面脚本语言,默认java import:引用脚本语言中用到的类文件 contentType:jsp页面的编码方式,默认:text/html,ISO-8859-1
include指令:嵌入外部文件
<%@include file="URL" %>
taglib指令:使用标签库定义新的自定义标签
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %> 属性 uri(Uniform Resource Identifier ):根据标签的前缀对自定义的标签进行唯一的命名, URI可以是以下的内容: Uniform Resource Locator (URL), 由 RFC 2396 定义 Uniform Resource Name (URN), 由 RFC 2396定义 prefix="tagPrefix":在自定义标签之前的前缀
注释
<!- -html注释- -> //客户端可见
<%- -jsp注释- -%> //客户端不可见
//单行注释 客户端不可见
- /**/多行注释 客户端不可见
声明:在Jsp页面中定义变量或方法
<%!Java代码%>
表达式:在JSP页面中执行的表达式
<%=表达式%>//注意:表达式不以分号结束
脚本:在JSP页面中执行的Java代码
<%Java代码%>
Javabean
Javabean就是符合某种特定规范的Java类。解决代码重复编写问题,减少代码冗余;功能区分明确,提高代码可维护性。
原则:公有类(public class),无参构造函数,属性私有(private attribute),get&set方法
Javabean的四个作用域范围(scope属性):
page 仅当前页面有效
request 一次请求有效,可通过HttpRequest.getAttribute()方法获取JavaBean对象
session 一次会话有效,可通过HttpSession.getAttribute()方法获取JavaBean对象
application 整个服务器一次运行期间全局有效,可通过application.getAttribute()方法获取JavaBean对象
Jsp动作:为请求处理阶段提供信息,遵循xml元素语法(5大类)
第一类:与存取JavaBean有关:
<jsp:useBean> 用法:
<jsp:useBean id="标示符" class="java类名" scope="作用范围"/>
<jsp:setProperty> 用法:
<jsp:setProperty name="JavaBean实例名" property="*"/>//自动匹配所有class属性(表单绑定) <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名"/>//匹配指定属性(表单绑定) <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue"/>//直接指定属性值(如果同时与表单绑定,覆盖表单) <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" param="request对象中的参数名"/>//与request参数绑定
<jsp:getProperty> 用法:
<jsp:getProperty name="JavaBean实例名" property="JavaBean属性名"/>
第二类:Jsp1.2增添:
<jsp:include> 用法:
<jsp:include page="URL" flush="true|false"/> page:要包含的页面 flush:被包含的页面是否从缓冲区读取
<jsp:forward> 用法:
<jsp:forward page="URL"/>//等同于 request.getRequestDispatcher("/url").forward(request,response);
<jsp:param> 用法:
<jsp:param name="参数名" value="参数值"/>
<jsp:params>
<jsp:fallback>:当不能启动Applet 或Bean 时,那么浏览器会有一段错误信息。
第三类:Jsp2.0增添,与Document有关:
<jsp:root>
<jsp:declaration>
<jsp:scriptlet>
<jsp:expression>
<jsp:text>
<jsp:output>
第四类:Jsp2.0增添,用于动态生成XML元素标签的值
<jsp:attribute>
<jsp:body>
<jsp:element>
第五类:Jsp2.0增添,用于Tag File中
<jsp:invoke>
<jsp:dobody>
Jsp状态管理
http协议无状态性:协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
保存用户状态的两大机制
Cookie:保存在客户端的交互数据,保存String类型
使用:
Cookie cookie=new Cookie(String key,Object value);//新建Cookie
response.addCookie(cookie);//向客户端写入Cookie
Cookie[] cookies=request.getCookies();//获取客户端发送来的Cookie
常用方法:
void setMaxAge(int expiry)设置cookie有效期,单位:秒
int getMaxAge()返回cookie有效时间
void setValue(String value)对cookie赋值
String getName()返回cookie名称
String getValue()返回cookie的值
Session:保存在服务器端,保存Object类型对象
include指令和jsp:include动作的区别
include指令 | jsp:include动作 | |
---|---|---|
语法格式 | <%@ include file=”“%> | <jsp:include page=”” flush=”true|false”/> |
发生作用的时间 | 页面转换期间(转换成Servlet) | 请求期间 |
包含的内容 | 被包含文件的实际内容 | 被包含文件的输出结果 |
转换成的Servlet | 主页面和被包含页面转换为一个Servlet | 主页面和被包含页面分别转换成两个相对独立的Servlet |
编译时间 | 较慢—解析被包含文件 | 较快 |
执行时间 | 稍快 | 较慢—执行主页面时间+被包含文件时间 |