jsp学习小结



什么是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页面,编字节码和构建对象
HTML代码会利用out.write()方法写到Servlet的service方法中
在jsp中写的Java代码会原样翻译到Servlet的service方法中
jsp其实就是一个Servlet

 
jsp最大的作用是展示数据    Servlet作为控制器
 
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,技术,Web应用)