JSP

JSP简介

        ①JSP全称Java Server Pages,顾名思义就是运行中java服务器页面,也就是在我们JavaWeb中的动态页面,其本质就是一个Servlet。JSP不能脱离服务器运行
        ②其本身是一个动态网页技术标准,它的主要构成有HTML网页代码、Java代码片段、JSP标签几部分组成,后缀是.jsp。
        ③JSP相比HTML页面来说,最直观的功能就是可以在页面中使用变量,这些变量一般都是从域对象中获取。有了变量的好处就是我们的页面可以动态的显示信息。
        ④相比于Servlet,JSP更加善于处理显示页面,而Servlet擅长处理业务逻辑,两种技术各有专长,所以一般我们会将Servlet和JSP结合使用,Servlet负责业务逻辑,JSP负责动态显示页面。

现在的表现层技术有HTML和Servlet

        > HTML是一个静态页面,它擅长显示一个页面,但是不能去调用Java程序显示动态内容
        > Servlet是一个动态资源,它擅长调用Java程序,但是不擅长显示一个动态页面
        > JSP相当于HTML + Servlet

JSP运行原理

       服务器在运行一个JSP文件时,会先将JSP文件翻译成为一个Java文件(Servlet),然后在将Java文件编译为class文件: jsp页面 --> 翻译--> Java文件  --> 编译 --> .class文件;实际上我们在访问JSP时,就是在调用那个Java类在处理我们的请求。Tomcat服务器将翻译后的java文件放到了服务器的work目录下生成后的Java类,继承了org.apache.jasper.runtime.HttpJspBase而org.apache.jasper.runtime.HttpJspBase由继承HttpServlet所以从类的角度讲它就是一个Servlet。在总的web.xml配置文件中也看到jsp的相关配置,由此证明JSP就是一个Servlet!

JSP运基本语法(jsp中一般包含HTML模板元素、jsp脚本片段、jsp表达式)

         1.模板元素
            - JSP中的HTML代码称为模板元素。模板元素中的内容最终会作为Servlet的java文件代码的out.write()的参数,在浏览器中显示所以我们在HTML页面中怎么编写网页代码,在JSP中就怎么写

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
    </head>

    <body> 
    </body>

</html>

         2.jsp脚本片段一般JSTL会代替jsp脚本)  

      <% %> :<% System.out.println("Hello World");%> 

          在脚本片段中可以直接去编写Java代码;脚本片段中的java代码会原封不动的复制到service()方法中的指定位置(注意是写在方法里的,不能再写方法,可以调用方法;所以在service方法中可以写啥,在脚本片段中就能写啥;在一个JSP页面中可以编写多个脚本片段,但是要保证结构完整 

         3. jsp表达式一般EL表达式会代替jsp表达式)               

      <%= %> : <%=new Date()%>

          表达式用来将一个对象输出到页面中; 表达式中的内容会作为out.print()的参数输出页面中;out.print()可以接收什么样的参数,在表达式中就可以写什么,而这个方法可以接收任意类型的参数,所以表达式可以编写任意对象。

 

JSP指令(一般写在jsp页面的最上面)

格式  :<%@指令名 属性名1=”属性值1” 属性名2=”属性值2”%>   
指令名:page/includ

             1.page指令 :page指令用于告诉JSP引擎如何去翻译JSP文件 <%@page %>  

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

                 常见的属性:
                      ①import 用于导包
                      ②language 默认值java 可选值java
                      ③contentType
                                用来设置Content-Type这个响应头,主要用来解决乱码问题
                      ④pageEncoding
                                 用来告诉JSP引擎我们的JSP文件使用的是什么字符集
                      ⑤errorPage
                                 用来指定页面中出现异常以后转发到的页面
                      ⑥isErrorPage
                                 当前页面是否是一个错误页面,默认值是false
                                 当该值设置为true,在页面中可以使用Exception对象,用来获取异常信息
                      ⑦isELIgnored
                                 是否忽略EL表达式,默认值是false,如果设置为true,EL表达式将不会被解析
                      ⑧session
                                是否自动创建Session对象,默认值是true,如果设置为false页面中将不能直接使用session

            2. include指令 :include指令用来将一个页面包含进当前页面中 ()

      <%@ include file="text/subPage.jsp"%>

                 相当于将一个页面中的内容完全的复制到当前页面的指定位置中
                 include叫做静态包含,只会翻译当前页面,而不会翻译被包含的页面

JSP动作标签

    格式:<jsp: 标签名 属性名="属性值" ></jsp:标签名>

          JSP动作标签会被翻译为一段Java代码,标签的作用就是让我们以标签的形式去调用Java程序。
                    1.< jsp:forward标签用来在页面中作转发的操作  
                    2.< jsp:param可以用来在转发时添加请求参数

                <jsp:forward page="/index.jsp">
                        <jsp:param value="sunwukong" name="username"/>
                </jsp:forward>

                    3. <jsp:include page=""></jsp:include>(一般不用这个包含页面)

              <jsp:include page="sample.jsp" flush="true"/>

           作用 : 将一个页面包含进当前页面中;jsp:include叫做动态包含,它会同时翻译当前jsp和被包含的jsp它是通过include(request, response, "/include2/2.jsp", out, false);这个方法将一个页面包含进当前页面的;动态包含没有静态包含的性能好,所以我们使用时一般使用静态包含       

JSP隐含对象

        隐含对象也称为内置对象,隐含对象指可以在JSP中直接使用的对象,在JSP中一共有一个9个隐含对象,之所以9个隐含对象可以在JSP中直接使用,是因为在JSP对应的Java文件中已经替我们将这几个对象声明好了
            ①pageContext
                  - 类型:PageContext
                  - 作用:通过pageContext对象可以获取到页面中的其他隐含对象
            ②request
                  - 类型:HttpServletRequest
            ③session
                  -类型:HttpSession
            ④application
                  -类型:ServletContext
            ⑤response
                  -类型:HttpServletResponse
                  -作用:和Servlet中的response是一样,代表的是服务器发送给浏览器的响应报文
            ⑥out
                  -类型:JspWriter
                  -作用:和PrintWriter功能类似,用来向浏览器中输出一个页面或页面片段
            ⑦config
                  -类型:ServletConfig
                  -作用:和Servlet中ServletConfig是一样,代表的是当前Servlet的配置信息
            ⑧page
                  -类型:Object
                  -作用:在Java文件中有这么一行代码Object page = this
                      page代表的就是当前的Servlet对象。
            ⑨exception
                  -类型:Throwable
                  -作用:代表的是页面中的异常信息,可以通过它来获取异常信息

JSP域对象

【重要】: 在JavaWeb中总共有四个域:页面、请求、会话和整个应用。域对象主要作用就是在这四个域中传递数据的。
        - 在JavaWeb中一共有四个域对象:pageContext   request   session   application。
        - 在JSP中可以获取到全部四个域对象,而在Servlet只能获取到三个request session application
        - 域表示的区域,不同的区域,在JavaWeb中指的就是不同的WEB资源。
        - 域对象的作用就是在不同的WEB资源之间共享数据。
        - 每个域对象的内部实际上都有一个map用来存储数据,数据以键值对的结构存放,key是String类型的,value使用Object类型。我们可以在一个域对象中放入数据。然后,在当前域中的其他JSP页面或Servlet中获取该数据。以达到一个共享数据的目的。 使用域对象时能用小的就不用大的
        - 每个域对象都具有的几个方法:

       void setAttribute(String name , Object value)  //向域中添加一个属性
       Object getAttribute(String name)   //根据属性名获取属性值
       void removeAttribute(String name)  //根据属性名从域中移除一个属性

       1. pageContext : 类型:PageContext
                作用:pageContext是page域的域对象该域对象中的属性只在当前页面有效, 一旦切换页面则域中的属性丢失主要用来在JSP页面和标签之间传递数据的。
       2. request : 类型:HttpServletRequest
                作用:request是request域的域对象它的作用范围是当前请求,一旦发送多次请求则域中的属性丢失主要用于在转发时共享数据的   
       3.session : 类型:HttpSession
                作用:session代表的是session域的域对象它的作用范围是当前会话,所谓的会话指从打开浏览器到关闭浏览器的过程一旦会话结束(浏览器关闭)则域中的属性丢失。不同的浏览器不能共享会话   
       4.application : 类型:ServletContext
                作用:application代表的是application域的域对象它的作用范围是当前应用,只要服务器不停,域中的属性就不会丢失一旦服务器停止,则域中的属性丢失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值