什么jsp

1 什么是jsp?
    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的动作标签(了解)


你可能感兴趣的:(什么jsp)