JSP的数据交互
1.application内置对象
application实现用户之间的数据共享
void setAttribute(String key,Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
String getRealPath(String path) 返回相对路径的真实路径
统计网站访问次数:
<%
//获取当前网站的访问次数
Integer count=(Integer)application.getAttribute("count");
if(count!=null){
count++;
}else{
count=1;
}
application.setAttribute("count", count);
%>
<%
out.print("当前网站访问次数:"+application.getAttribute("count"));
%>
2.作用域
从小到大:page(pageContext)--->request---->session---->application
page对象作用域只在当前页面有效
request作用域是在当前请求内有效
session作用域是在当前会话内有效
application对象的作用域是在应用上下文
3.cookie默认会存放一个session的id值
一、jsp中java小脚本
1.<% java代码段%>
2.<% =java表达式%>不能有分号
3.<%!成员变量和函数声明%>
二、注释
1.<!--html注释-->客户端可以看到
2.<%--jsp注释--%>客户端不能看到
三、jsp页面的的执行过程
1.客户端请求(输入URL)
2.服务器
(1)现将jsp翻译成.java文件(第一次请求)
如果是第二次请求,并且jsp页面内容未改变
(2)将java文件编译成.class文件
(3)执行.class文件
3.将执行后的结果和html静态内容发送到客户端
4.断开连接
四、jsp内置对象
是由web容器创建的对象,可以直接用,不用再new
1.out:方法print(文本)向客户端输出内容
2.request:客户端请求内容
方法:
getParameter(“键”),获取客户端提交的单个数据
getParameterValues(“键”)获取客户端提交的多个数据
setCharacterEncoding("编码")解决post提交方式的乱码
getRequestDispatcher("页面"):进行页面转发
3.response:响应客户端的请求,向客户端输出内容
方法
sendRedirect("页面");//进行页面重定向
五、转发和重定向的区别
1.转发
a.服务器行为
b.客户端只发送了一次请求
c.保留请求数据,页面间可以共享数据
d.地址栏不改变
2.重定向
a.客户端行为
b.客户端发出了2次请求
c.不能保留数据,页面间不能共享数据
d.地址栏改变
六、会话:session
浏览器与服务器的一次通话(类似一次打电话)
1.会话跟浏览器是一一对应的
2.同一个浏览器不同请求是一次会话
3.不同浏览器就是不同会话
4.一般用于保存客户端特定的信息(临时)
session失效:
1.原则上,浏览器关闭,session就失效(实际过程中不一定)
2.超过有效期失效
3.调用invalidate(),立即失效
方法:
setAttribute(String key,object value),向session保存数据
object getAttribute(String key)向session读取数据
setMaxInactiveIntervals设置有效期
invalidate()使session失效
removeAttribute(String key)移除指定的session
七、inlude指令:将页面信息包含到另一个页面(静态包含)
<%@ include file="页面"%>
八、application:应用程序级别的对象
各个客户端共享的数据
方法:
setAttribute(String key ,object value)
getAttribute(String key)
getRealPath("虚拟路径");根据虚拟路径获取物理路径
九、Cookie: 保存特定客户端的信息
用法:
1.创建
Cookie ck=new Cookie(String key,String value)
ck.setMaxAge("时间"),设置有效时间,不设置默认浏览器关闭时失效
2.保存
response.addCookie(ck);
3.读取cookie
a.Cookie[]cks=request.getCookies();
b.遍历
getName():获取当前cookie的名字(键名)
getValue():获取当前cookie的值
十、session与cookie的区别
session cookie
保存在服务器的内存中 保存在客户端的硬盘上
保存object类型 保存String类型
保存临时数据 保存永久数据
安全性高 安全性差
十一、JavaBean
是一个java类
从功能上来说,java类分为:业务类和数据类
一个java类符合以下要求才是JavaBean:
1.是一个公有类
2.有无参的公共的构造方法
3.属性私有:第一个字母小写
4.有getter和setter方法
(方法名格式:get属性名(大写),set属性名(大写))
十二、内置对象补充
1.pageContext:当前页面执行期间的信息
2.page:当前jsp页面
3.config:配置jsp页面初始化数据
4.exception:异常
十三、四大作用域(作用范围)
1.page:当前页面
2.request:一次请求同一个请求
3.session:同一个客户端
4.application:整个应用程序
十四、文件包含
1.include指令:<%@ include file="页面"%>
静态包含:将指定页面的内容复制到另一个页面,然后执行
2.include方法:pageContext.include("页面")
动态包含:先执行页面动态代码,然后将结果和静态代码包含到另一个页面
十五、页面之间的传值
1.form表单传值
2.session传值
3.通过超链接(类似form表单 get提交)
url?keyname=值1 &keyname=值 2