什么是jsp?
jsp(Java sever page),Java服务器页面技术
可以在jsp页面中编写Java代码
为什么会出现jsp?
因为在Servlet中编写HTML标签比较麻烦,为了使Servlet尽量简洁和专注于处理业务逻辑,sun公司开发了新的技术 jsp技术。
jsp在哪里运行?
jsp运行在jsp容器中,Servlet运行在Servlet容器中
tomcat是动态网站服务器 jsp运行在tomcat的work目录下
jsp在jsp容器中被翻译成Servlet运行。
在jsp页面上可以编写HTML代码和Java代码
修改jsp页面后,不需要重启服务器
第一次访问jsp页面时,jsp页面被jsp容器翻译为java文件,然后把Java文件 编译成字节码文件,然后通过反射机制构造对象,执行服务。之后的访问不回去翻译和编译jsp文件,也不会去构造编译后的对象,而是直接调用第一次创建好的方法来进行服务
如果修改过jsp文件,则会重新翻译jsp页面,编字节码和构建对象
如果修改过jsp文件,则会重新翻译jsp页面,编字节码和构建对象
HTML代码会利用out.write()方法写到Servlet的service方法中
在jsp中写的Java代码会原样翻译到Servlet的service方法中
在jsp中写的Java代码会原样翻译到Servlet的service方法中
jsp其实就是一个Servlet
jsp最大的作用是展示数据 Servlet作为控制器
jsp概述
jsp概述
jsp模板元素:
在jsp中写的HTML代码就是模板元素
jsp表达式:
作用: 通常用来想浏览器输出内容
格式: <%=变量或者表达式%>
结果直接输出在浏览器上
表达式里面的内容被翻译为out.print(),然后网浏览器输出;
jsp脚本片段
作用: 编写Java代码
多个jsp脚本片段的变量是共享的
在jsp脚本片段中不能定义同名变量
脚本片段可以拆开来写,中间可以夹杂HTML代码,动态控制HTML的效果
在jsp脚本中不能申明方法
jsp申明:
作用:在jsp页面中声明Java代码的成员变量和成员函数
格式:<%!Java代码 %>
申明的方法不能与jsp翻译后的Java文件自动生成的方法相同名称的方法
jsp注释<%-- --%>
jsp的page指令:告诉引擎怎样去解析处理jsp页面中的其余部分,并不产生任何直接课件的输出内容
tablib:用于jsp的标准标签库或者自定义标签库的时候导入标签库。
include:包含页面
希望在当前页面把其他页面包含进来时,可以使用include指令
page指令:导入使用的Java类和设定编码格式
servlet:实现业务逻辑代码
jsp:负责页面的显示
在jsp页面中可以直接使用隐式变量的名称来完成隐式变量的调用
jsp九大隐式对象
1.request 对应类:HttpServletRequest
作用: 请求信息对象
创建时间: 用户发出请求的时候
2.response 对应类:HttpServletResponse
作用: 响应信息对象
创建时间: 服务器响应用户请求的时候
3.session 对应类:HttpSession
作用: 会话对象
创建时间 request调用getSession(true);
4.application 对应类:ServletContext
作用: 当前web应用信息对象
创建时间 web应用启动的时候
5.exception 对应类:Throwable
作用: 异常信息对象
创建时间: 异常合作伙伴
6.page 对应类:this
作用: 当前页面对象
创建时间: 访问当前页面的时候
7.config 对应类:ServletConfig
作用: Servlet配置信息对象
创建时间: 够早Servlet对象之后,创建Config对象,通过init方法传入Servlet
8.out 对应类:jspWriter jspWriter 类有缓存功能,缓存区满了或者fluse
或者页面结束,才会输出内容 PrintWriter类没有缓存功能。
作用: 输出对象
//当前页面缓存区大小
out.getBufferSize();
//当前缓存区剩余大小
out.getRemaining();
//当前缓冲区使用大小
out.getBufferSize() - out.getRemaining();
//刷新缓冲区
out.fluse();
jspWrite的效率比printwrite的高
创建时间: 调用_jspService方法的时候创建
9.pageContext 对应类:PageContext
代表: 页面上下文对象 在当前页面中有效
1).可以通过pageContext获取其他八个隐式对象
//通过pageContext获取其他八个隐式对象的引用
//获取request对象
pageContext.getRequest();
//获取response对象
pageContext.getResponse();
//获取session
pageContext.getSession();
//获取context对象
pageContext.getServletContext();
//获取从Config对象
pageContext.getServletConfig();
//获取page对象
pageContext.getPage();
//获取out对象jspWriter
pageContext.getOut();
//获取异常对象
pageContext.getException();
使用场景:自定义标签
2).可以向pageContext中保存和获取数据
pageContext.setAttribute(arg0, arg1);
pageContext.getAttribute(arg0);
pageContext.setAttribute(arg0, arg1, arg2);
第一个参数,存储的数据获取是的name,第二个参数,存储的数据的值,第三个参数,数值存储的域。
默认保存的域是PAGE_SCOPE,在哪个域保存进去的数据,就得从这个域中取出。
pageContext.getAttribute(arg0, arg1)
第一个参数是保存时的获取数据的name,第二个参数是数据存储的域
pageContext.findAttribute(arg0);在四个域中查找数据,从小到大的方式匹配
如果查找到了,则返回数据,如果没有找到,则返回空值,不是null。
创建时间: 调用_jspService方法的时候创建
在jsp页面中可以直接使用隐式变量的名称来完成隐式变量的调用
在jsp中写的HTML代码就是模板元素
jsp表达式:
作用: 通常用来想浏览器输出内容
格式: <%=变量或者表达式%>
结果直接输出在浏览器上
表达式里面的内容被翻译为out.print(),然后网浏览器输出;
jsp脚本片段
作用: 编写Java代码
多个jsp脚本片段的变量是共享的
在jsp脚本片段中不能定义同名变量
脚本片段可以拆开来写,中间可以夹杂HTML代码,动态控制HTML的效果
在jsp脚本中不能申明方法
jsp申明:
作用:在jsp页面中声明Java代码的成员变量和成员函数
格式:<%!Java代码 %>
申明的方法不能与jsp翻译后的Java文件自动生成的方法相同名称的方法
jsp注释<%-- --%>
jsp的page指令:告诉引擎怎样去解析处理jsp页面中的其余部分,并不产生任何直接课件的输出内容
tablib:用于jsp的标准标签库或者自定义标签库的时候导入标签库。
include:包含页面
希望在当前页面把其他页面包含进来时,可以使用include指令
page指令:导入使用的Java类和设定编码格式
servlet:实现业务逻辑代码
jsp:负责页面的显示
在jsp页面中可以直接使用隐式变量的名称来完成隐式变量的调用
jsp九大隐式对象
1.request 对应类:HttpServletRequest
作用: 请求信息对象
创建时间: 用户发出请求的时候
2.response 对应类:HttpServletResponse
作用: 响应信息对象
创建时间: 服务器响应用户请求的时候
3.session 对应类:HttpSession
作用: 会话对象
创建时间 request调用getSession(true);
4.application 对应类:ServletContext
作用: 当前web应用信息对象
创建时间 web应用启动的时候
5.exception 对应类:Throwable
作用: 异常信息对象
创建时间: 异常合作伙伴
6.page 对应类:this
作用: 当前页面对象
创建时间: 访问当前页面的时候
7.config 对应类:ServletConfig
作用: Servlet配置信息对象
创建时间: 够早Servlet对象之后,创建Config对象,通过init方法传入Servlet
8.out 对应类:jspWriter jspWriter 类有缓存功能,缓存区满了或者fluse
或者页面结束,才会输出内容 PrintWriter类没有缓存功能。
作用: 输出对象
//当前页面缓存区大小
out.getBufferSize();
//当前缓存区剩余大小
out.getRemaining();
//当前缓冲区使用大小
out.getBufferSize() - out.getRemaining();
//刷新缓冲区
out.fluse();
jspWrite的效率比printwrite的高
创建时间: 调用_jspService方法的时候创建
9.pageContext 对应类:PageContext
代表: 页面上下文对象 在当前页面中有效
1).可以通过pageContext获取其他八个隐式对象
//通过pageContext获取其他八个隐式对象的引用
//获取request对象
pageContext.getRequest();
//获取response对象
pageContext.getResponse();
//获取session
pageContext.getSession();
//获取context对象
pageContext.getServletContext();
//获取从Config对象
pageContext.getServletConfig();
//获取page对象
pageContext.getPage();
//获取out对象jspWriter
pageContext.getOut();
//获取异常对象
pageContext.getException();
使用场景:自定义标签
2).可以向pageContext中保存和获取数据
pageContext.setAttribute(arg0, arg1);
pageContext.getAttribute(arg0);
pageContext.setAttribute(arg0, arg1, arg2);
第一个参数,存储的数据获取是的name,第二个参数,存储的数据的值,第三个参数,数值存储的域。
默认保存的域是PAGE_SCOPE,在哪个域保存进去的数据,就得从这个域中取出。
pageContext.getAttribute(arg0, arg1)
第一个参数是保存时的获取数据的name,第二个参数是数据存储的域
pageContext.findAttribute(arg0);在四个域中查找数据,从小到大的方式匹配
如果查找到了,则返回数据,如果没有找到,则返回空值,不是null。
创建时间: 调用_jspService方法的时候创建
在jsp页面中可以直接使用隐式变量的名称来完成隐式变量的调用