web-servlet-jsp

本文介绍了JSP的基本概念、运行原理、脚本元素、指令元素、内置对象及其作用范围等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 
                                                     
    JSP

    JSP:Java Server Pages (Java服务器端页面),其实就在HTML中嵌入Java代码。


    一、jsp运行原理:

        1、在创建jsp页面后,需要将它发布到tomcat服务器上,启动服务后,才可以访问jsp页面。

        2、当向服务器上发送请求访问页面时,会将服务器上的jsp文件(xxx.jsp),翻译成java文件(xxx_jsp.java),

           然后,将java文件编译成class文件(xxx_jsp.class),运行class文件。

    二、jsp脚本元素:
    
        1、概述:

            JSP = HTML + Java代码 + JSP自身东西
            
            JSP的脚本元素就是在JSP中嵌入Java代码。    
            
        2、jsp脚本元素分类:
        
            1、声明标签:
            
            <%! 变量或方法声明 %>
            写在这个脚本中的代码,翻译成Servlet内部的成员变量或成员方法。
            
            例如:<%! 
                        //声明变量
                         int i = 3;
                  %>
                  
            2、表达式标签:
            
            <%= 表达式 %>
            写在这个脚本中的代码,翻译成方法内部的out.print();当中的内容
            
            例如:<%= i %>
            
            也就是在页面中展示出来的数据内容;
            
            3、程序代码标签:
            
            <% 程序代码 %>
            写在这个脚本中的代码,翻译成方法内部的局部变量或方法内部代码片段。
            
            例如:  <%
                        int x = 5;
                    %>
            也就是在jsp页面中插入java代码;可以在里面写一些如:if/else 或 遍历集合的操作。
            
        3、关于路径问题:

            1、相对路径(相对路径不是以 / 开头的。)
            
                例如:
                
                1、在根路径的页面访问:
                
                    <a href="xxx">访问xxx页面</a>
                    或者
                    <a href="./xxx">访问xxx页面</a>
                    
                    访问路径:localhsot:8080/工程名/xxx
                    
                2、访问根目录下的某个yyy目录下的文件
                
                    <a href="../yyy/xxx">访问xxx页面</a>
                    
                    访问路径:localhsot:8080/工程名/yyy/xxx
                    
            2、绝对路径(通常以 / 开始的路径)
            
                绝对路径分成服务器端路径和客户端路径
                
                1、客户端路径  需要带工程名
                
                    <a href="/工程名/xxx">访问xxx页面</a>
                    或者
                    <a href="http://localhost:8080/工程名/xxx">访问xxx页面</a>

                 
    三、jsp的模板修改和注释

        1、创建jsp模板时自动修改字符集:

             

        2、jsp注释:

            <%-- JSP的注释 --%>
            
            存在时机:
            
            存在JSP的源码中,翻译Servlet后注释就没有了。
            
            注意:Java代码注释的话不要使用HTML的注释!!!
            
    四、jsp指令元素
    
        作用:用于指示JSP执行的某些步骤和变现特定行为
        
        语法:<%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>
        
        指令元素的分类:
        
            1、page指令:指示JSP的页面设置属性和行为;
            2、include指令:指示JSP包含哪些其他页面;
            3、taglib指令:指示JSP页面包含哪些标签库。
            
        1、page指令:
        
            <%@ page 属性名=属性值 %>
            
            Page指令用来定义JSP文件的全局属性。
            这些属性可以单独使用,也可以几个或多个同时使用。
            在JSP页面中,只有import属性可以出现多次,其他属性都只能出现一次。
            
            page指令属性:
            
                language属性:        声明使用脚本的语言。只能是java。
                extends属性:        标明JSP编译成Servlet的时候继承的类。默认值:HttpJspBase。
                session属性:        标明JSP中是否可以直接使用session对象。默认值是true。
                buffer属性:        标明JSP对客户端输出缓冲区大小。默认值8kb。
                autoFlush属性:        如果缓冲区大小溢出,是否自动刷出。默认true。
                import属性:        用于导入Java包或类。
                contentType属性:   标明JSP被浏览器解析和打开的时候采用的默认的字符集。
                pageEncoding属性:  JSP文件及JSP翻译后的Servlet保存到硬盘上采用字符集。

                isErrorPage属性:    处理JSP页面异常。
                errorPage属性:        处理JSP页面异常。
                isELIgnored属性:    通知JSP是否忽略EL表达式。
                
        2、include指令:
        
            <%@ include 属性名=属性值%>
            
            作用:在JSP页面中静态包含一个文件,同时由该JSP解析包含的文件内容。
            
            大白话:也就是将别的jsp页面引用进来。
            
            include指令属性:
            
                file属性:            指示JSP页面包含页面路径。
                
            静态包含原理:如果在index.jsp文件中引入login.jsp文件时,即<%@ include file="login.jsp" %>,
                       
                          当翻译index.jsp文件时,会通过<%@ include file="login.jsp" %>找到login.jsp文件,
                          
                          将login.jsp文件中的内容一起翻译到index.jsp文件中,得到index_jsp.java文件,然后,
                          
                          将其编译成index_jsp.class文件。
                          
            注意地方:
                        应该将被包含的页面的结构去掉。
                        在被包含的页面中定义变量,在包含的页面中还可以使用。
            
                          
        3、taglib指令:
        
            <%@ taglib 属性名=属性值%>
            
            作用:用于在JSP页面中引入标签库。
            
            taglib指令属性:
            
                uri属性:            引入的标签库的路径
                prefix属性:        引入标签库的别名
          
                                                     
    五、jsp的内置对象:

        1、JSP的内置对象:指的是可以直接在JSP页面中使用的对象。
        
        2、jsp的内置对象:
        
            JSP当中有9大内置对象:
                request            :从客户端向服务器发送的请求对象
                response        :从服务器端向客户端作出响应对象
                session            :服务器为客户端创建会话对象
                application        :代表应用。获得的ServletContext对象。
                out                :向输出流写入内容的对象。
                page            :当前的JSP翻译成Servlet后的对象的引用。
                pageContext        :本JSP的页面的上下文对象。
                config            :本JSP的ServletConfig对象。
                exception        :表示JSP页面运行时产生的异常对象。
                
            jsp内置对象具体类型:
            
                request             HttpServletRequest
                response         HttpServletResponse
                session             HttpSession
                application         ServletContext
                config             ServletConfig
                page             Object
                pageContext         PageContext
                out                 JspWriter
                exception         Throwable
       
        3、pageContext对象:

            pageContext对象直接翻译为“页面上下文”对象,代表的是当前页面运行的一些属性。

           pageContext对象的作用:

                1、提供了page范围的数据存取的方法:            
                    
                    setAttribute(String,object);    --- 向page范围中存入数据;

                    getAttribute(String);            --- 从page范围获取数据;    

                     remoAttribute(String);          --- 从page范围移除数据;
                    
                2、通过这个对象获得其他的8个内置对象:
                
                    如:getPage()  getOut()等方式来获取其他的8个内置对象;
                    
    六、jsp的四个作用范围:
    
        PageScope        :页面范围。
        
           页面范围指的是在当前的页面内有效,出了这个页面,用pageContext保存的数据就无效了。
           例如:
                pageContext.setAttribute("name","张三");
           
        RequestScope        :请求范围。
        
           从客户端向服务器发送一次请求,服务器对这次请求作出了响应之后,用request保存的数据就无效了。
           例如:
                request.setAttribute("name","李四");
                或者
                pageContext.setAttribute("name","李四",PageContext.REQUEST_SCOPE);
           
        SessionScope        :会话范围。
        
           每个浏览器向服务器发送请求(多次请求)。将该会话结束。
           例如:
                session.setAttribute("name","王五");
                或者
                pageContext.setAttribute("name","王五",PageContext.SESSION_SCOPE);
           
        ApplicationScope    :应用范围。
        
           在整个应用中任意的地方都可以获取。
           例如:
                application.setAttribute("name","赵六");
                或者
                pageContext.setAttribute("name","赵六",PageContext.APPLICATION_SCOPE);
                                                     
                                                     
    七、jsp的动作标签:

        什么是动作标签:

            JSP的动作标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码,造成jsp页面难以维护。

        常用的动作标签:
        
            <jsp:forward/>        :请求转发。
            <jsp:include/>      :包含(动态包含)。
            <jsp:param/>        :传递参数。

        include动态包含的原理:

            如果在index.jsp文件中,动态包含login.jsp文件时,即<jsp:include page="login.jsp"></jsp:include>,

            当程序翻译index.jsp文件为index_jsp.java文件,然后编译成index_jsp.class文件后执行,与此同时,            
                                                     
            会通过<jsp:include page="login.jsp"></jsp:include>,找到login.jsp文件编译成login_jsp.class文件
            
            执行的结果,然后,将它的结果包含到index_jsp.class文件中,一起执行。

                        
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     
                                                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值