JavaWeb基础知识day11——JSP知识点

版权声明:版权本人所有,转载请标明出处,谢谢合作! https://blog.csdn.net/qq_36326332/article/details/88135697

JSP

jsp概述:

jsp:
    java server pages(java服务器页面)
        运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的work目录下.
    作用:
        将内容的生成和信息的展示相分离
    后缀名 .jsp
    
    执行流程:
        1.浏览器发送请求,访问jsp页面
        2.服务器接受请求,jspSerlvet会帮我们查找对应的jsp文件
        3.服务器将jsp页面翻译成java文件.
        4.jvm会将java编译成.class文件
        5.服务器运行class文件,生成动态的内容.
        6.将内容发送给服务器,
        7.服务器组成响应信息,发送给浏览器
        8.浏览器接受数据,解析展示
jsp脚本:
    <%...%> java代码片段  生成在jsp的service方法中【jsp的_jspService()方法中】
    <%=...%> 输出表达式  生成在jsp的service方法中,相当于在java中调用out.print(..)
    <%!代码%> 声明成员


jsp指令

jsp的指令
    作用:声明jsp页面的一些属性和动作
    格式:
        <%@指令名称 属性="值" 属性="值"%>
    jsp指令的分类:
        page:主要声明jsp页面的一些属性
        include:静态包含.
        taglib:导入标签库
    注意:
        一个页面中可以出现多个指令
        指令可以放在任意位置,一般都放在jsp页面最上面.    
    
page指令:
    重要属性:3个
        contentType:设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype
        pageEncoding:设置页面的编码
        import:导入所需要的包
        contentType和pageEncoding联系:
            若两者都出现的时候,各自使用各自的编码
            若只出现一者,两个都使用出现的这个编码
            若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1
    了解属性:
        language:当前jsp页面里面可以嵌套的语言
        buffer:设置jsp页面的流的缓冲区的大小
        autoFlush:是否自动刷新
        extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类
        session:设置jsp页面是否可以使用session内置对象
        isELIgnored:是否忽略el表达式
        errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
        isErrorPage:当前jsp页面是否是一个错误页面
            若值为true,可以使用jsp页面的一个内置对象 exception        

include指令:
    静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件.【既是把包含的页面复制进来,一起进行编译】
    格式:
        <%@include file="相对路径或者是内部路径" %>
    例如:
        <%@include file="/jsp/include/i1.jsp" %>
        
    路径:
        相对路径:
            ./或者什么都不写 当前路径
            上一级路径  ../
        绝对路径:
            带协议和主机的绝对路径
            不带协议和主机的绝对路径
                /项目名/资源
                
        内部路径:
            不带协议和主机的绝对路径去掉项目名
                请求转发 静态包含 动态包含
        
taglib指令:导入标签库    
    格式:
         <%@taglib prefix="前缀名" uri="名称空间" %>
    若导入之后
        <前缀名:标签 .. >
    例如:
        <c:if test="${el表达式}">输出内容</c:if>


jsp内置对象【9大内置对象】

jsp的内置对象:★★★(9大内置对象;4大域对象)
    在jsp页面上可以直接使用的对象
        内置对象        类型
        out            JspWriter
        request            HttpServletRequest
        response        HttpServletResponse
        session            HttpSession        
        exception        Throwable        
        page            Servlet(this)
        config            ServletConfig
        application        ServletContext        
        pageContext        PageContext


    jsp的域4个对象:  
        application        整个项目
        session            一次会话
        request            一次请求
        pageContext        一个页面


Java中的三个域对象:ServletContext【ServletContext】、Session【HttpSession】、Request【HttpServletRequest】   


pagecontext作用:理解
    1.域对象
        xxxAttribute()【setAttribute/getAttribute/removeAttribute()方法】
    2.操作其他域对象
        方法:
            xxxAttribute(...,int scope);
                scope取值:
                    APPLICATION_SCOPE 
                    SESSION_SCOPE 
                    REQUEST_SCOPE 
                    PAGE_SCOPE 
    3.获取其他的内置对象
        getXxx()
        注意:
            getRequest():获取request内置对象
    4.便捷查找,
        findAttribute(String key):
        依次从pagecontext,request,session,application四个域中,查找相应的属性,
        若查找到了返回值,且结束该次查找。若查找不到,返回一个null

 


jsp动作

jsp的动作标签
    <jsp:forward>:请求转发  相当于java中  request.getRequestDispatcher(..).forward(request,response);
        <jsp:forward page="内部路径"></jsp:forward>
    <jsp:include>:动态包含
        就是将被包含页面或者servlet的运行结果包含到当前页面中.格式:
    <jsp:include page="内部路径"></jsp:include>

静态包含和动态包含的区别?
 静态包含相当于代码的copy,最终被翻译成一个Servlet(只生成一个java文件)解释执行的.动态包含,包含其他页面的运行的结果.最终翻译成多个Servlet(生成多个java文件)解释执行的.

jsp注释:

    html注释 <!--  -->
        注释的内容只在页面上看不到  java代码和html源代码都有
    java注释 //...和/*...*/和/**...*/
        只在java代码中存在
    jsp注释 <%--  --%>
        只在jsp页面中存在,翻译成java文件之后就没有了

猜你喜欢

转载自blog.csdn.net/qq_36326332/article/details/88135697
今日推荐