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>
    

相关文章

  • java基础-day43-JSP

    JSP 1. JSP 1.1 JSP概述 1.2 为什么要用JSP 1.3 JSP语法 1.3.1 JSP语法格式...

  • jsp学习 EL JSTL C标签

    JSP 第一个JSP程序 JSP对比servlet JSP中java脚本元素 JSP原理 JSP的翻译规则 JSP...

  • JSP基础学习笔记(3)--JavaBean

    JSP动作标签:

  • 用session对象实现用户登录

    index.jsp deal.jsp main.jsp exit.jsp

  • JavaWeb之JSP

    八、JSP 目录:什么是JSP、JSP原理、JSP基础语法、JSP指令、9大内置对象、JSP标签 JSTL标签 E...

  • jsp语法

    Jsp语法包含:注释、jsp指令、jsp脚本元素、jsp动作元素。 Jsp注释: Htm...

  • jsp

    jsp介绍 jsp语法 jsp指令 EL表达式 自定义标签 jsp指令 - page jsp指令 - includ...

  • JSP入门

    JSP的基本语法:1.JSP声明语法。2、JSP程序脚本。3、JSP脚本注释。4、JSP内容输出表达式。5、JSP...

  • jsp的内置标签

    jsp:forward 重定向标签

  • Java面试问题

    1、JSP: jsp和servlet的区别 jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时...

网友评论

      本文标题:JSP

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