jsp知识点
标记: Java server page
基本特性
declaration 声明
expression 表达式
directives 指令
scriptlet 小程序段
comment 注释
action 动作指令
! 运行方式 先编译为 .java 文件 再转换为 servlet编译文件运行 (.class)
1.只有客户端在第一次请求jsp时,才需要对其转换 编译
优点
优良的性能 (忧于CGI php ASP)
平台无关性 (只要符合j2ee规范就可在该平台运行)
可扩展性强 (tga扩展,简化开发)
补充知识
反射时类里必须有无参构造函数 不然容易报错
操作部分
指令 <%@ %>
include 指令
file =“路径”
导入文件命令 将指定的jsp程序或HTML文件包含在当前页面
<%@ include file ="/a.jsp"%>
可以导入另一个jsp文件 应用于网站的头部等网页的公共部分
page 指令
import =“包名.类名” 引入的包和类
可以导入多个包 中间用逗号分开
extends =“包名.类名” 继承的类
buffer=“none/kb size” 不缓冲 或 指定缓冲大小 (默认8kb)
autoFlush="true/false" 是否自动清除缓冲
info =“描述” jsp文件的描述信息
isErrorPage=“true/false” 当前页面是否发生错误
errorPage="url" 如果页面错误,显示的页面
contentType="contenTypeInfo" 页面的属性信息
<% @page session=“true”%>(默认)--表示session功能已经在jsp页面中启动
pageEncoding="gb23123" 设置编码格式
taglib 指令
导入指令标签
<%@ taglib prefix="c" uri="选择"%>
“c” 为别名 (jsp指令在用的时候标记名) “选择”是由快捷键生成 一般为 http://java.sun.com/jsp/jstl/core 该标签库为标准标签库 可以实现判断 循环 等操作
可以使用taglib标签导入jsp其他标签,实现一些特殊功能
<c:if test="" var="" scope=""> 标签体
</c:if> test属性值为true时,执行标签体的内容(可以是html,java代码)。
test属性:使用el表达式来赋值。
var属性:指定一个绑订名称
scope属性:指定一个绑订范围(page,request,session,application)。
<c:choose>,<c:when>,<c:otherwise>
when表示一个分支,可以出现多次;
otherwise表示例外,只能出现一次;
test属性值为true时,执行标签体的内容(可以是html,java代码)。
<c:forEach var="" items="" varStatus="">
</c:forEach>遍历集合 items属性:指定要遍历的集合,一般使用
el表达式来指定。
var属性:指定绑订名称,绑订范围是pageContext。
varStatus属性:指定绑订名称,该绑订名称对应了一个特殊的对象,该对象封装了当前遍历的状态。
动作 <jsp: 动作名 属性=“值” />
forward 动作
<jsp: forward page="a.jsp"/>
跳转到别的页面 用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)
useBean 动作
<jsp:useBean id="bj" class="包名.类名"/>
使用Javabean类 ID为别名
<jsp:setProperty property="a" name="b" value="c"/> a 类的属性名 b javaBean的名字 (bj) c 属性值
为使用的Javabean设置属性值
<jsp:getProperty property="a" name="bj"> a 属性的名字 bj 使用的Javabean的别名
得到Javabean属性值
<jsp:param value="apple" name="key"/> jsp页面传参用到的 name="key" 相当于key值 value="apple" 相当value值
include 动作
<jsp: include page="a..jsp" />
动态组合两个页面
注释
<!-- --> 该注释客户端可以在源码中看到
<%-- --%> 该注释客户端在源码中看不到
表达式 <%= Java属性/变量 %>
可以引用Java代码中的值
Java脚本 <% Java代码 %>
可以执行Java代码(预Java保持一致 注意导包)
声明 <%! 方法 %>
理论部分
命令的include 和动作的include (合并页面)的区别
标记: 蓝色
静态导入
1.用<[email protected] include file="a.jsp" /> 指令
2. 把b页面的内容复制到a页面,然后编译为Java文件 ,在转换为 .class 文件 ,放到work目录中去
3.产生文件 a.java a.class
动态导入
1.用<jsp:include page="b.jsp" /> 动作
2.独立编译 由服务器在访问时动态组合为一个页面
3.产生文件 a.java a.class b.java b.class
jsp 九大内置对象(可以直接调用方法)
pageContext jsp中特有的对象 (jsp上下文对象,作用于当前页面)
request 同servlet中的request 对象 来源于httpservletrequest
session 来源servlet中的httpsession
application 来源 servletcontext
response 来源 httpservletresponse
out 来源 servlet中的printwriter
page jsp编译后生成的servlet对象
config servletconfig 获得servlet配置参数
exception throwble 页面的异常类
标签的运行过程
标签的运行过程:
容器依据命名空间找到标签的描述文件(.tld文件),
依据标签的名称找到标签类,接下来创建标签类的实例,执行对应的方法。
web 存储状态 ----参考html 补充知识总结
EL 表达式 (expression language)
从所有作用域取出值的一个简单方法
基本语法 ${值}
${key} 代表从四大作用域中查找有没有“key”
${sessionScope.key} 代表从session中查找有没有“key”
同样还有 pageScope requestScope sessionScope applicationScope
可以对运算符进行运算 如 ${10+2*8}
${user.name} 代表从Java类user中取出name的值
el表达式不能循环
cookie 浏览器小文本信息
服务端写入cookie信息
在servlet中一个cookie对象只能存贮一个字符串信息 如果要存多个 则需要多个cookie
*response的addCookie方法 得到cookie对象
-- 最后把cookie发送到浏览器去,浏览器自动写到客户端相应位置
cookie 服务器写到客户端的小文本信息(文本的map集合) 多用于登录时记录用户名 密码 等信息 实现自动登录功能 信息不安全
jsp取出cookie中的值
%java脚本%>
Cookie[] cs=request.getCookies() 得到cookies对象数组
foreach循环 调用getName/getValue方法 得到key和value 把文本输入框默认设置为刚才得到的值
标记: 实现自动填写账号的功能