JSP运行原理和九大隐式对象
来源:互联网 发布:淘宝虚拟男友 编辑:程序博客网 时间:2024/05/18 01:50
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP九大隐式对象是:request
response
config
application
exception
Session
page
out
pageContext
1、out隐式对象:out隐式对象用于向客户端发送文本数据。
out.write("heyley");
response.getWriter().write("hi");
%>
JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
设置page指令的buffer属性关闭了out对象的缓存功能
out对象的缓冲区已满
整个JSP页面结束
同时使用out和response.getwriter()输出数据:
<%out.write("heyley");
response.getWriter().write("hi");
%>
会显示:hiheyley
用JSP实现文件下载:
<%@ page language="java" import="java.util.*,java.io.*,java.net.*" pageEncoding="UTF-8"%><%
String path=application.getRealPath("./images/1.jpg");
File file=new File(path);
InputStream is=new FileInputStream(file);
//response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(file.getName(),"UTF-8"));
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(),"UTF-8"));
OutputStream os=response.getOutputStream();
byte buffer[]=new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
os.write(buffer,0,len);
}
os.flush();
os.close();
is.close();
%>
String path=application.getRealPath("./images/1.jpg");
File file=new File(path);
InputStream is=new FileInputStream(file);
//response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(file.getName(),"UTF-8"));
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(),"UTF-8"));
OutputStream os=response.getOutputStream();
byte buffer[]=new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
os.write(buffer,0,len);
}
os.flush();
os.close();
is.close();
%>
注意:之前和之后都不能有空格!!!!!否则会出错!!!!!
2、pageContext作为域对象
pageContext对象的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
实现浏览器访问次数: <%
int n;
if(application.getAttribute("much")==null){
application.setAttribute("much","1");
}else{
n=Integer.parseInt(application.getAttribute("much").toString());
n++;
application.setAttribute("much",n+"");
System.out.println(n);
out.print("你是第"+n+"个访问");
}
%>
int n;
if(application.getAttribute("much")==null){
application.setAttribute("much","1");
}else{
n=Integer.parseInt(application.getAttribute("much").toString());
n++;
application.setAttribute("much",n+"");
System.out.println(n);
out.print("你是第"+n+"个访问");
}
%>
- JSP运行原理和九大隐式对象
- JSP运行原理和九大隐式对象01
- JSP运行原理和九大隐式对象
- JSP运行原理和九大隐式对象
- JSP运行原理和九大隐式对象:
- JSP运行原理和九大隐式对象1
- JSP运行原理和九大隐式对象
- JSP运行原理和九大隐式对象
- jsp运行原理和九大隐式对象
- JSP运行原理和九大隐式对象
- 【JavaWeb】JSP运行原理和九大隐式对象
- JSP简单运行原理----------九大隐式对象和四大域对象
- JSP简单运行原理----------九大隐式对象和四大域对象
- JSP简单运行原理----------九大隐式对象和四大域对象
- JSP运行原理与九大隐式对象
- JSP技术(三)——JSP运行原理和九大隐式对象
- 【JSP开发】JSP原理和九大隐式对象
- JSP运行原理和九大隐式对象(又称内置对象)的说明
- CHOGM
- 模拟QQ-Socket通信线程项目总结
- 多些时间能少写些代码
- In App Purchase实现简介
- mysql安装配置时apply security setting报错
- JSP运行原理和九大隐式对象
- PowerDesigner技巧集6 ---- 用vbscript获取每个汉字中的首字母
- js身份证验证超强脚本
- 什么是 rail-to-rail运算放大器?
- 指定路径表达式步骤中的谓词
- hello,blog
- [IT 男人帮 10/31] TC Disrupt 系列:马化腾谈创业经验和困难
- 聚合拼接字符串的方法
- 强烈推荐没事都看看.