JSP基础

1JSP基础:

2.1简介:

        jsp全称java Server Pag java服务页面,能提供java服务页面

    jsp vs HTML
    HTML 有HTML标签组成的 输出静态内容,
    jsp可以写HTML标签,还可以java代码


    2.2特点
        1)既可以写HTML代码,也可以写java代码
        2)jsp页面需要交给Tomcat服务器运行
    2.3Jsp运行目录
        Tomcat的work目录这个目录下存放的jsp页面运行过程中产生的临时文件。
    2.4体验jsp页面如何编写和运行
        向浏览器输出当前的系统时间。
        如何访问jsp页面?
        直接通过浏览器访问即可!!(把它成HTML页面访问)      
    2.5JSP页面是如何被运行
        第一次访问jsp
            1)Tomcat服务器把jsp页面翻译成java源文件。hello..jsp-》hello_jsp.java
            2)Tomcat服务器把java源文件编译成class文件  hello_jsp.java-》hello_jsp.class
            3)读取class文件:创建类的对象。 hello_jsp
            4)执行类中的方法。  hello_jsp类文件的方法 
        第N次访问
            4)执行类中的方法。  hello_jsp类文件的方法 
        注意:
            修改了jsp页面时,重新走翻译和编译的过程

        问题:运行的class类是什么类
            jsp的源文件是一个servlet
            结论:jsp就是一个servlet!!!
            servlet的技术可以用在jsp上

            servlet生命周期:
                构造方法
                init方法
                service方法
                destroy方法
            jsp的生命周期
                翻译(java文件)
                编译(class文件)
                构造方法
                _jspInit()方法
                _jspService方法
                _jspDestroy()方法

3.jsp的语法

    3.1)jsp摸版
        jsp页面的HTML代码就是摸版

    3.2)jsp表达式
        语法“ <%=变量或表达式%>
        作用:向浏览器输出变量的值或表达式技术的结构
        <% 
            String  name="eric";
         %>
        <%=name%>
        1)原理是使用了out.print()方法向浏览器输出内容

    3.3)jsp脚本
        语法:<% java语句 %>
        作用:执行java语句
        out.write("输出内容“)
        原理:脚本就是原封不动的翻译到java文件的JSPService方法中执行
        <% for(int i=1;i<=6;i++){
        %>
            <h<%=i>h<%=i%></h<%=i>
            <%
        }
        %>
    3.4)声明
        语法<%!变量或方法%>
        作用:用于声明变量或方法
        原理:声明的变量是成员变量,声明的方法是成员方法
        注意:
            不要声明和翻译后的java文件相同的方法名
            jsp脚本不能声明方法
    3.6)jsp注解
        语法<% --jsp注解--%>
        作用: 注解jsp页面内容
        注意:
            HTML会被翻译和执行,而jsp的注释不会被翻译和执行。

4.jsp的三大指令:

    语法:<%@指令%>
    4.1;taglib指令
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        uri:表示需要导入的标签库的URL名称,每个标签库都会有一个tld后缀名声明文件,在tld文件中都有唯一
            的URi名称,这个URi名称就是当前标签库的名称http://java.sun.com/jsp/jstl/core
            prefix:使用标签库的前缀,通常和tld文件的short-name名称相同

    4.2include指令
        作用:用于包含其他页面
        <%@ include file="" %>
        <%@ include file="/common/header.jsp" %>
        原理:
            直接把包含与被包含页面的内容先合并在一起,然后翻译成一个java源文件,最后编译执行
            (先合并再翻译)(源码包含,也叫做静态包含)
    4.3page指令   
        作用:告诉浏览器如何翻译jsp文件
        <%@ page 
            language="java" 使用什么语言来翻译jsp文件
             import="java.util.*"   导包,导入多个使用逗号

            jsp文件的编码相关的
             pageEncoding="UTF-8"   使用什么编码翻译jsp文件               
            contentType="text/html; charset=utf-8"  服务器发送给浏览器的数据类型和内容编码格式

            异常页面相关的:
            出错页面
            errorPage="/common/error.jsp" ----指定jsp的错误处理页面 
            错误处理页面 
            isErrorPage="true"  默认false:指定当前页面为错误处理页面,如果是错误处理页面
            ,就可以使用exception内置对象,使用exception对象可以查看错误信息
            <%=exception.getLocalizedMessage() %>
            配置全局的错误处理页面
            WebRoot/common
                在web.xml
            <error-page>
                <srror-code>404</error-code>
                <location>/common/404.html</location>
            </error-page>               
            <error-page>
                <srror-code>500</error-code>
                <location>/common/500.jsp</location>
            </error-page>   


            session="true" 是否打开session的功能,true 打开  false 关闭
             buffer="8kb"   --jsp页面的缓冲区大小
            isELIgnored=“false” --是否忽略EL表达式 true :忽略  false 不忽略

5.jsp的最佳实践

        servlet:使用java语言开发动态网页,功能,写java代码输出HTML代码
        jsp技术:使用java语言开发动态网页,功能:写java代码:输出HTML代码
        分工问题:
            servlet技术:写java代码(写普通java代码)
            jsp技术:输出HTML代码(类似于HTML页面)
        项目中涉及的功能:
            1)接受参数的信息:  (servlet做)
            2)执行业务逻辑(CURD)(servlet);
            3)返回结果。输出结果:(jsp做)
            4)跳转页面      (servlet做)

    案例:
        显示用户的信息:
        1)查询用户的数据(servlet)
            List<User> list
            把用户数据保存到域对象,再发送到jsp页面
        2)显示用户数据(jsp)

6.jsp的内置对象

        6.1简介:
            在jsp开发中有些对象的使用频率比较(例如:request,response,servletcontext..)如果每次要使用
        这些对象都自己去获取对象才能使用,会显得太麻烦了,jsp把这些对象都创建或获取好了,我们开发者之间
        使用这些对象即可!!!这些对象就叫做内置对象

        6.2 九大内置对象
                jsp对象               类型
            1)  request         HttpServletRequest  请求对象
            2)response          HttpServletResponse 响应对象
            3)config                ServletConfig       配置对象    
            4)applocation           ServletContext      servlet上下文对象
            5)session           HTTPSession     会话对象
            6)exception         Throwable       异常信息对象
            jsp里自己特有的
            7)page              Object  代表jsp文件翻译后的java类
            8)out               JspWriter   代表输出对象,response.getWriter().PrintWriter
                                        相当于代缓存功能的PrintWriter
            9)pageContext       PageContext:代表jsp的上下文对象

        6.3out对象
            out 对象的类型JspWriter类:相当于带缓存功能的PrintWriter类
            out.flush()手动刷新
            out.getBufferSize()当前缓存区大小
            out.getRemaining()剩余缓存区的大小
        6.4pageContext对象
            作用:
                1)通过pageContext对象获取其他八个内置对象
                    场景:使用自定义标签的对象
                2)作为域对象
                    保存数据:(默认情况 保存到page域)只能在同一个页面
                        pageContext.setAttribute("message","mesaage");
                    保存到其他三个域(request,session,applocation)
                    pageC.setAttribut(“message”,“ request's message”,PageContext. REQUEST_SCOPE);
                    保存到request域中
                    等价于:request.setA("meeeage","request's message");

                    注意:
                        1)在那个域中保存,就必须在那个域中去取
                    获取数据:
                        从page域中取
                        pageContext.getAttribute("message");
                        从其他域中取出
                        pageContext.getAttribute(“message”,PageContext.REQUEST_SCOPE);
                总结:
                    2)作为域对象去使用:
                        2.1保存到page域
                            pageContext.setAttribute(“name”,Object);
                        2.2保存到其他域
                            pageContext.setAttribute(”name“,Object,PageContext.PAGE_SCOPE);
                            PAGE_SCOPE
                            REQUEST_SCOPE
                            SESSION_SCOPE
                            APPLICATION_SCOPE
                        2.3获取page域
                            pageContext.getAttribute("message");
                        2.4从其他的域中获取
                            pageContext.getAttribute(“message”,PageContext.REQUEST_SCOPE);
                            PAGE_SCOPE
                            REQUEST_SCOPE
                            SESSION_SCOPE
                            APPLICATION_SCOPE
                        2.5自动搜索四个域数据
                            pageContext.findAttribute("name");
                            从小到大依次查找
                            page-》request-》session-》applocation

7.jsp的四个域对象

                    request域:           HttpServletRequest  
                    applocation域            ServletContext
                    session域                HTTPSession 
                    page 域              PageContext
                7.1域对象的作用:
                    共享数据,保存数据,获取数据
                7.2域对象的方法
                    setAttribute();
                    getAttribute();
                    removeAttribute();
                7.3域的作用范围
                    从小到大
                        page域:在同一个页面数据有效
                        request域:在同一个请求中数据有效
                        session域在同一个会话中数据有效
                        applocation域:在同一个网站中数据有效

        总结:
            jsp基础:
                1)jsp执行原理:(翻译+编译+servlet)
                2)jsp语法  jsp表达式+jsp脚本+jsp声明
                3)jsp三大指令(include指令+page指令)
                4)jsp的九大内置对象
                    (out对象+pageContext对象)
                5)jsp的最佳实践
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值