jsp简介

 

JSP

1. 概念:Java Server Pages:java服务器端页面
        Servlet的作用:用java语言开发动态资源的技术
        Jsp的作用:用java语言(+html语言)开发动态资源的技术
        Jsp本质就是servlet
2. Jsp的特点
        1)jsp的运行必须交给tomcat服务器来运行
            tomcat的work目录:tomcat服务器存放jsp运行时的临时文件
        2)jsp页面既可以写html代码,也可以写java代码。
            html页面不能写java代码 。而jsp页面可以写java代码
3. 体验jsp页面作用
        需求:显示当前时间到浏览器上
        创建01.hello.jsp页面
        <body>
            <%
            //写java代码
            //获取当前时间
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss E");
            String currTime = sdf.format(new Date());
            //输出内容到浏览器
            //response.getWriter().write("");
            out.write("当前时间为:"+currTime);
            %>
        </body>
4.  Jsp的执行过程
​
    问题: 访问http://localhost:8080/jsp_01/01.hello.jsp  如何显示效果?
​
    1)访问到01.hello.jsp页面,tomcat扫描到jsp文件,在%tomcat%/work把jsp文件翻译成java源文件
            (01.hello.jsp   ->   _01_hello_jsp.java) (翻译)
    2)tomcat服务器把java源文件编译成class字节码文件 
            (_01_hello_jsp.java  ->  _01_hello_jsp.class)(编译)
    3)tomcat服务器构造_01_hello_jsp类对象
    4)tomcat服务器调用_01_hello_jsp类里面方法,返回内容显示到浏览器。
​
    第1次访问jsp:走(1)(2)(3)(4)
    第n次访问jsp:走(4)
​
    注:jsp文件修改了或jsp的临时文件被删除了,要重新走翻译(1)和编译(2)的过程
5.  问题: 为什么Jsp就是servlet!!!
    jsp翻译的java文件:
        public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {
​
    HttpJspBase类(在jasper.jar\org\apache\jasper\runtime下):
        public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {
​
    结论: Jsp就是一个servlet程序!!!
            servlet的技术可以用在jsp程序中
            jsp的技术并不是全部适用于servlet程序!
​
    Servlet的生命周期:
        1)构造方法(第1次访问)
        2)init方法(第1次访问)
        3)service方法
        4)destroy方法     
    Jsp的生命周期
        1)翻译: jsp->java文件
        2)编译: java文件->class文件(servlet程序)
        3)构造方法(第1次访问)
        4)init方法(第1次访问):_jspInit()
        5)service方法:_jspService()
        6)destroy方法:_jspDestroy()
6. Jsp语法
    1. Jsp模板
        jsp页面中的html代码就是jsp的模板
    2. Jsp表达式
        语法:<%=变量或表达式%>
        作用:向浏览器输出变量的值或表达式计算的结果
    注意:     
        1)表达式的原理就是翻译成out.print(“变量” );通过该方法向浏览器写出内容
        2)表达式后面不需要带分号结束。
    3. Jsp的脚本
        语法:<%java代码 %>
        作用:执行java代码 
        注意:脚本中java代码原封不动拷贝到_jspService方法中执行。
    4. Jsp的声明
        语法:<%! 变量或方法 %>
        作用:声明jsp的变量或方法
        注意:变量翻译成成员变量,方法翻译成成员方法。
    5. Jsp的注释
        语法:<%--  jsp注释  --%>
        注意:html的注释会被翻译和执行。而jsp的注释不能被翻译和执行。
7. Jsp的三大指令
        1. include指令
            作用: 在当前页面用于包含其他页面
            语法: <%@include file="common/header.jsp"%>
            注意:
            1)原理是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp)中,合并成翻译成一个java源文件,再编译运行,这种包含叫静态包含(源码包含)
            2)如果使用静态包含,被包含页面中不需要出现全局的html标签了(如html、head、body)
        
        2.  page指令
        作用:告诉tomcat服务器如何翻译jsp文件
        <%@ page 
            language="java"   --告诉服务器使用什么动态语言来翻译jsp文件
            import="java.util.*,java.text.*"    --导入包,多个包之间用逗号分割
            pageEncoding="utf-8"    --告诉服务器使用什么编码翻译jsp文件(成java文件)
            contentType="text/html; charset=utf-8" 服务器发送浏览器的数据类型和内容编码
            errorPage="error.jsp"   --指定当前jsp页面的错误处理页面。
            isErrorPage="false"     --指定当前页面是否为错误处理页面。false:不是错误处理页面,则不能使用,exception内置对象;true:是错误处理页面,可以使用exception内置对象。                            session="true" --是否开启session功能。false:不开启session;true:开启session
            buffer="8kb" --jsp页面的缓存区大小。
            isELIgnored="false"  --是否忽略EL表达式。
        %>
        
        3.  taglib指令 (讲JSTL标签的时候会用到)    
            作用:允许页面使用用户定制的标签。
            taglib指令属性
                uri:该属性唯一的标识和前缀相关的标签库描述符
                prefix:标签名前缀,用于区分多个自定义标签
8. Jsp的内置对象(重点)
    什么是内置对象?
        在jsp开发中,会频繁使用到一些对象
            例如HttpSession,ServletContext,ServletConfig,HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象!!!
            
 jsp中一共有9个:
    变量名           真实类型                 作用
    pageContext     PageContext             当前页面共享数据,还可以获取其他八个内置对象
    request         HttpServletRequest      一次请求访问的多个资源(转发)
    session         HttpSession             一次会话的多个请求间
    application     ServletContext          所有用户间共享数据
    response        HttpServletResponse     响应对象
    page            Object                  当前页面(Servlet)的对象  this
    out             JspWriter               输出对象,数据输出到页面上
    config          ServletConfig           Servlet的配置对象
    exception       Throwable               异常对象        
            
Out对象
        out对象类型,JspWriter类,相当于带缓存的PrintWriter
​
PrintWriter
        wrier(内容): 直接向浏览器写出内容。
​
JspWriter
        writer(内容): 向jsp缓冲区写出内容
        Buffer:设置缓冲区内容
    当满足以下条件之一,缓冲区内容写出:
        1)缓冲区满了
        2)刷新缓存区
        3)关闭缓存区
        4)执行完毕jsp页面
pageContext对象
        pageContext对象的类型是PageContext,叫jsp的上下文对象
        本身是一个域对象
                域对象作用: 保存数据和获取数据,用于共享数据
​
                保存数据
                    1)默认情况下,保存到page域
                            pageContext.setAttribute("name");
                    2)可以向四个域对象保存数据
                            pageContext.setAttribute("name",域范围常量)
​
                获取数据
                    1)默认情况下,从page域获取
                            pageContext.getAttribute("name")
                    2)可以从四个域中获取数据
                            pageContext.getAttribute("name",域范围常量)
​
                        域范围常量:
                            PageContext.PAGE_SCOPE
                            PageContext.REQUEST_SCOPE
                            PageContext..SESSION_SCOPE
                            PageContext.APPLICATION_SCOPE
                    3)自动在四个域中搜索数据
                            pageContext.findAttribute("name");
                    顺序: page域 -> request域 -> session域- > context域(application域)
9. Jsp中的四个域对象
        pageContext      page域              
        request          request域
        session          session域
        application      context域
​
    1)域对象作用:
        保存数据  和 获取数据 ,用于数据共享。
​
    2)域对象方法:
        setAttribute("name",Object) 保存数据
        getAttribute("name")  获取数据
        removeAttribute("name") 清除数据
​
    3)域对象作用范围:
        page域: 只能在当前jsp页面中使用(当前页面)
        request域: 只能在同一个请求中使用(转发)
        session域: 只能在同一个会话(session对象)中使用(私有的)
        context域: 只能在同一个web应用中使用。(全局的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值