JSP

作者: 虫儿飞ZLEI | 来源:发表于2018-08-10 11:25 被阅读0次

    layout: post
    title: JSP
    subtitle: 用法
    date: 2018-04-22
    author: ZL
    header-img: img/20180422.jpg
    catalog: true
    tags:
    - JSP


    JSP和Servlet

    Jsp就像是html文件,但是不同的是,在jsp中可以写java的代码。
    就像这样:

    image
    servlet是java代码,但是可以在里面写html代码,但是非常麻烦。
    就像这样:
    image

    jsp的本质就是servlet。jsp在第一次被访问时会被Web容器翻译成servlet

    第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行


    jsp脚本和注释

    • jsp脚本:

      • <%java代码%> ----- 内部的java代码翻译到servlet的service方法的内部
      • <%=java变量或表达式> ----- 会被翻译成servlet的service方法内部out.print(java变量或表达式)
      • <%!java代码%> ---- 会被翻译成servlet的成员的内容
    • jsp注释:

      • Html注释: ---可见范围 jsp源码、翻译后的servlet、页面 显示html源码
      • java注释://单行注释 /多行注释/ --可见范围 jsp源码 翻译后的servlet
      • jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见

    jsp指令

    • page指令
      这个指令就是在jsp的头部的一些信息。

      • 就像这样:
        image
      • 常用属性说明
        language:jsp脚本中可以嵌入的语言种类
        pageEncoding:当前jsp文件的本身编码---内部可以包含contentType
        contentType:response.setContentType(text/html;charset=UTF-8)
        session:是否jsp在翻译时自动创建session对象
        import:导入java的包
        errorPage:当 当前页面出错后跳转到哪个页面
        isErrorPage:当前页面是否是一个处理错误的页面
    • include指令
      页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中。就像Android的xml里面的include,把别的的内容包含到本页面中去。
      格式:<%@ include file="被包含的文件地址"%>

    • taglib指令
      在jsp页面中引入标签库(jstl标签库、struts2标签库)
      格式:<%@ taglib uri="标签库地址" prefix="前缀"%>


    jsp内置/隐式对象(9个)

    jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp 脚本中可以不用获取,直接使用这9个对象。

    • 内容

      名称 类型 描述
      out javax.servlet.jsp.JspWriter 用于页面输出
      request javax.servlet.http.HttpServletRequest 得到用户请求信息
      response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
      config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
      session javax.servlet.http.HttpSession 用来保存用户的信息
      application javax.servlet.ServletContext 所有用户的共享信息
      page java.lang.Object 指当前页面转换后的Servlet类的实例
      pageContext javax.servlet.jsp.PageContext JSP的页面容器
      exception java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用
    • 部分内容附加说明
      • out
        out作用就是想客户端输出内容----out.write()
        通过out.write()写内容就是先把内容写到out缓冲区,然后再放到response缓冲区。
        out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲器。

      • pageContext

        pageContext对象和page对象并不是一回事。

        • 通过pageContext可以获取到其他8个隐式对象。
          比如:

          pageContext.getRequest()
          pageContext.getSession()
          pageContext.getRequest();
          pageContext.getOut();
          
        • pageContext是一个域对象

          setAttribute(String name,Object obj)
          getAttribute(String name)
          removeAttrbute(String name)
          
          pageContext可以向指定的其他域中存和取数据
          setAttribute(String name,Object obj,int scope)
          getAttribute(String name,int scope)
          removeAttrbute(String name,int scope)
          findAttribute(String name)
          ---依次从pageContext域,request域,session域,application域中获   取属性,在某个域中获取后将不在向后寻找
          
          

    四大作用域

    • page域:当前jsp页面范围
    • request域:一次请求
    • session域:一次会话
    • application域:整个web应用

      page<request<session<application


    jsp标签

    • 请求转发:
      <jsp:forward page="要转发的资源" />

    • 页面包含:
      <jsp:include page="被包含的页面"/>

      前面的include是静态包含,这里的是动态包含。

      image

    部分代码实例

    • 利用pageContext向page域、request域、session域、application域存数据

      pageContext.setAttribute("name", "sunba");
      pageContext.setAttribute("name", "lisi", PageContext.REQUEST_SCOPE);
      pageContext.setAttribute("name", "wangwu", PageContext.SESSION_SCOPE);
      pageContext.setAttribute("name", "tianqi", PageContext.APPLICATION_SCOPE);
      
    • 引入jstl核心库

      <!-- 引入jstl核心库 -->
      <%@ taglib uri="http://" prefix="c"%> 
      <%@ taglib uri="http://" prefix="fmt"%>
      
    • 静态包含

      <%@ include file="/demo.jsp" %>
      
    • 动态包含

      <jsp:include page="/include2.jsp"></jsp:include>
      
    • 请求转发(和request的请求转发功能一样)

      <jsp:forward page="/forward2.jsp"></jsp:forward>
      

    相关文章

      网友评论

          本文标题:JSP

          本文链接:https://www.haomeiwen.com/subject/dyjkbftx.html