jsp: Java Server Pages
----java服务器端的页面技术
大白话:就是一个能写java代码的html页面 扩展名是.jsp
组成:html代码+jsp代码+java代码
2 jsp的作用?
使用servlet用来做页面的展示特别的麻烦
可以使用jsp让页面的展示更加的简单
一句话:用来接收servlet产生的数据,进行展示的
3 如何去使用jsp?
jsp本质上是一个servlet
jsp的执行原理:
tomcat的work目录:jsp转换成servlet的源码存放地址
1:当浏览器要访问一个jsp的时候,会去当前的web.xml文件中找匹配
如果在当前没有找到,回去tomcat下的conf/web.xml文件中去匹配
2:匹配成功之后,会执行提供的JspServlet,这个定义好的servlet会去
当前项目下找对应的jsp文件,如果找不到,返回404错误页面
如果找到了,会将jsp文件编译成.java文件,并生成.class文件存放在work目录下
然后继续加载执行.class,调用service方法,生成动态内容
做页面的响应输出
jsp的知识点:
1 jsp的脚本语法
2 jsp的注释
3 jsp的指令配置
4 jsp的内置对象
5 jsp的域对象
6 jsp的动作标签(动态包含)
jsp的脚本语法:
作用:就是用来定义java代码的
<% %> 定义java程序片段的(定义变量 判断 循环...)
写的代码在生成的servlet的service里面有一份
<%= %> 做输出java程序语句
写的代码在生成的servlet的service里面有一份 专门做输出的
<%! %> 定于java成员属性和成员方法的
jsp的注释:(了解)
作用:给程序员做提示功能使用
html注释
<!-- -->
java注释
//
/* */
/** */
jsp注释
<%-- --%>
jsp的指令配置:page指令 include指令 taglib指令
特点:可以出现多次 可以出现在任意地方
page指令:
作用:给当前jsp页面声明一些属性
格式:<%@ page 属性名1=属性值1 属性名2=属性值2 属性名3=属性值3 %>
属性:
language:当前页面支持的语言
contentType:response.setContentType("text/html;charset=utf-8"); 解决输出中文乱码问题
pageEncoding:当前jsp页面支持不支持写中文
contentType和pageEncoding之间有一些联系:
如果2个都出现,各自使用各自的
如果2个只出现一个,另一个就是用出现的那一个
如果2个都不出现,使用iso-8859-1
extends:继承 但是慎用
import:导包 快捷键:alt+/
errorPage:当前页面发生了错误,要跳转的地址
isErrorPage:默认是false true:代表当前页面是错误页面
好处:可以获取错误信息 条件:必须使用内置对象(exception)
exception:要想被使用,当前必须是错误页面
session:支持不支持当前的jsp页面使用session这个内置对象
默认是true 支持 false:不支持
include指令
静态包含
作用:用来包含其它jsp页面内容的
将被包含页面的内容全都整合到一个页面中(demo5.jsp)
最终只编译生成一个文件 demo5.java demo5.class
taglib指令
作用:导入外部标签的
明天玩jstl的时候,顺便使用一下
jsp的内置对象
内置对象:一访问jsp的时候,jsp就会生产出9个对象
,所以被称为内置/隐式对象
HttpServletRequest request
HttpSession session
ServletContext application
-----------servlet里面怎么用 jsp还怎么用
JspWriter(jsp的输出流) out
(PrintWriter:servlet的输出流)
HttpServletResponse response
Object page
ServletConfig config
Throwable exception 可以展示错误异常 但是当前页面必须得是错误页面 isErrorPage=true
PageContext pageContext
pageContext:jsp的域对象 但不是servlet的域对象
作用:也可以用来存储数据,但存储的数据只在当前页面有效,还不如一个变量好使
1 可以获取其他八大内置对象(了解)
GJL(request,response,out,application,page,exception,...)
{
request调用
response调用
...
}
GJL(PageContext pcon)
{
pcon.request调用
pcon.response调用
}
2 可以从别的作用域中查找数据(了解)
findAttribute("key")
作用:依次从作用域范围最小的开始查找 一直到最大的
如果都找不到 返回null
pageContext 4
作用范围:当前jsp页面
request 3
作用范围:请求转发中使用
session 2
作用范围:一次会话
ServletContext 1
作用范围:整个服务器不关闭
findAttribute方法的底层:
if(pageContext.getAttribute("msg")!=null)
{
return pageContext.getAttribute("msg");
}else if(request.getAttribute("msg")!=null)
{
return request.getAttribute("msg");
}else if(session.getAttribute("msg")!=null)
{
return session.getAttribute("msg");
}else if(ServletContext.getAttribute("msg")!=null)
{
return ServletContext.getAttribute("msg");
}else
{
return null;
}
3 pageContext可以操作其他作用域(了解)
request.setAttribute("msg", "aaa");
pageContext.setAttribute("msg", "aaa",PageContext.REQUEST_SCOPE);
参数:
PageContext.REQUEST_SCOPE request域
PageContext.SESSION_SCOPE session域
PageContext.PAGE_SCOPE pageContext域
PageContext.APPLICATION_SCOPE ServletContext域
总结域对象:
域对象:可以用来存储数据的对象,而存储的数据有一定的作用范围
作用:可以在多个servlet/jsp中进行数据的传递和共享
servlet:
request
session
ServletContext
-----------xxxAttribute方法
request
创建:请求一次 创建一次
销毁:响应结束 立刻销毁
作用范围:请求转发中request中的数据是可以共享的
session
创建:第一访问到request.getSession()
销毁:3种
1 主动销毁 invalidate()
2 默认销毁 30分钟
3 服务器非正常关闭销毁 服务器正常关闭session不销毁
作用范围:一次会话中使用的都是同一个对象
ServletContext:
创建:服务器启动的时候,只为当前项目创建唯一的一个
销毁:服务器正常关闭
作用范围:整个服务器所有人都是用的是同一个
jsp: 除了以上的3个是一样的,还多了一个自己的叫pageContext
pageContext:
创建:访问当前页面创建
销毁:关闭当前页面等待回收
作用范围:只在当前页面有效果
jsp的动作标签(了解)
jsp提供了一些标签,可以拿过来直接用
总结:
1 什么是jsp (重点)
能写java代码的html页面 由html代码+jsp代码+java代码组成 扩展名.jsp
jsp本质上还是一个servlet (jsp的整个执行流程原理)
2 jsp的作用 (重点)
一句话:接收servlet产生的数据(list,map,javabean,数组..),用来展示
3 jsp的知识点:
1 脚本
可以写java代码 <% %> <%= %> <%! %>
2 注释
给程序员做提示 可以写3种注释 <!-- --> <%-- --%> // /* */ /** */
3 指定
可以写多个,可以出现任意位置
page:设置当前页面的一些属性
支持的语言 编码 导包 错误页面 是否使用session
自动生成即可 单是注意修改模板
include指令
静态包含
作用:用来包含其它jsp页面内容的
将被包含页面的内容全都整合到一个页面中(demo5.jsp)生成
tablib指令
作用:引入第三方的标签(jstl)
4 jsp的内置对象 (面试题)
知道每个内置对象是谁,知道类型是谁
5 jsp的域对象总结(重点)
6 jsp的动作标签(了解)