JSP的介绍和基本语法

来源:互联网 发布:软件培训 成都 骗局 编辑:程序博客网 时间:2024/05/04 06:27

JSP的介绍和基本语法

jsp概述

JSP全称Java Server Pages,是SUN公司定义的一种用于开发动态WEB资源的技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头 %>结束。

jsp适合编写输出动态内容,但不适合编写java逻辑。

jsp的本质

JSP本质是Servlet,jsp页面先经过翻译阶段,把jsp文件翻译成Java文件(这个Java文件其实就是Servlet),再由系统编译成Java类文件(.class文件)。

如图:
image

以Tomcat为例,我们编写好一个jsp文件,会在Tomcat的work文件夹对应的web应用下生成 名称_jsp.java和名称_jsp.class的文件。
而生成的Java文件,打开就是一个Servlet。

如下图:

image

image

jsp的基本语法

  • jsp模板元素

    网页静态内容,HTML的标签

  • jsp的脚本

    • 小脚本<% Java代码%>:这个代码是写在service()中。变量也是service()中的局部变量。
    • 表达式<%= %>:相当于out.print();
    • 声明<%! %>:声明的是全局变量。
  • jsp注释

    • jsp形式的注释:<%–注释内容–%> (在html页面不会留下注释,安全)

    • html形式的注释:(不安全,会嵌入html页面中)。

  • jsp三大指令

    语法:

    <%@ 指令名称 属性1="属性名称" 属性2="属性名称" ...%>或者将属性分开单独成句<%@指令名称 属性1="属性名称" %><%@指令名称 属性2="属性名称" %>
    • page指令

      作用:用于定义jsp页面的各种属性

      属性:

      • import:和Java代码中的import是一样的

        如:<%@ page import="java.util.*"%>jsp会自动导入一下包:    import.java.lang.*;    import.javax.servlet.*;    import.javax.servlet.http.*;    import.javax.servlet.jsp.*;
      • session:是否会自动创建session对象。默认值是true。如:<%@ page session=”true”%>

      • buffer:jsp中有javax。servlet.jsp.JspWriter输出字符流,buffer是设置缓冲区大小,默认8kb。(建议使用默认值)

      • errorPage:设置错误页面,如果页面有错误,跳转到指定的页面。
      • isErrorPage:是否创建throwable对象。默认false。
      • contextType:等同于response.setContextType(“text/html;charset=utf-8”);
      • pageEncoding:告诉jsp引擎要翻译的文件使用的编码。如<%@ page pageEncoding=”utf-8”%>
      • isELIgnored:是否忽略EL表达式。默认false。
      • isThreadSafe:是否支持线程安全。默认false。
      • extends:指定 JSP 页面所生成的 servlet 的超类。
      • language:指定语言,默认Java。目前只支持Java。
    • include指令:把其他资源包含到当前页面中

      • 静态包含语法:

        <%@ include file="/*.jsp"%>
      • 动态包含语法:

        <jsp:include include page="/*.jsp"></jsp:include>

      二者的区别:翻译的时间段不同
      前者:在翻译的时就把两个文件合并。
      后者:不会合并文件,当执行include代码时,才会包含另外一个文件的内容。

      原则:能使用静态include,就不要使用动态include。

    • taglib指令

      作用:在jsp页面中导入JSTL标签库。替换jsp中的Java代码片段。

      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="core" %> prefix:别名
  • jsp六个动作

    • jsp:include:动态包含
    • jsp:forword:转发相当于request.getRequestDispatch(“”).forword();
    • jsp:param:设置请求参数
    • jsp:userBean:创建一个对象
    • jsp:setProperty:给指定的对象赋值
    • jsp:getProperty:取出指定对象的属性值

    用法:

    <jsp:userBean id="user" class="User"></jsp:userBean>
  • jsp九大内置对象

    • request:类型HttpServletRequest

    • response:类型HttpServletResponse

    • session:类型HttpSession,有session=”true”开关控制。
    • application:类型ServletConfig
    • exception:类型Throwable,由isErrorPage=”false”开关控制。
    • page:类型Object,当前对象this,代表当前servlet实例
    • config:类型ServletConfig
    • out:类型JspWriter,字符输出流,相当于printWriter对象。
    • pageContext:类型PageContext

PageContext

  • PageContext是一个Page域对象,它可以操作其他三个域对象(request session application)的数据。

    API介绍:

    • void setAttribute(String name,Object o)

    • Object getAttribute(String name)

    • void removeAttribute(String name)

    • Object findAttribute(String name)
      自动从page request session application依次查找,找到了就取值,结束查找。

    其他操作方法

    • void setAttribute(String name,Object o,int Scope)

    • Object getAttribute(String name,int Scope)

    • void removeAttribute(String name,int Scope)

      Scope的取值:

      • PageContext.PAGE_SCOPE
      • PageContext.REQUEST_SCOPE
      • PageContext.SESSION_SCOPE
      • PageContext.APPLICATION_SCOPE
  • 它可以创建其他8个隐式对象

    在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时使用。

  • 提供了简易方法:

    • pageContext.forward(“”);

    • pageContext.include(“”);


四大作用域对象

  • PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。

  • ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。

  • HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。

  • ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

0 0
原创粉丝点击