JSP+EL表达式学习

一、JSP  
    jsp是可以在传统 HTML页面插入java代码


  1.JSP原理 
        (1)当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;


        (2)如果是第一次请求页面,或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间有些长;


        (3)JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;


        (4)容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)





   2.JSP组成  
        (1)静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.

        (2)动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。


二、JSP的基本语法 


    1.JSP脚本表达式:
         语法<%=表达式%>
    例如:<%=new Date().toLocaleString()%>  
   作用:在网页上输出数据
    2.JSP脚本片段:
          语法<% 代码1;代码2 ....%> 
 对应Servlet 出现在JspServlet()中
         作用:在JSP中输出java代码
  
    3.JSP声明 
作用:定义一些类成员(变量 )
语法  <%!  定义的变量 、方法 %>


    4、JSP注释 
           语法<%--内容--%>
  与html注释不同他不会把注释的内容翻译到Servlet中


三、JSP的指令
指令是为了致使服务器如何处理JSP页面的内容


     1.指令
page   taglib include
语法<%@指令名称 指令属性="值" ....%>
     
     2.指令作用
  1.page指令  定义JSP页面的属性
   属性 import:导入JSP页面中java脚本
   import:导入JSP页面中java脚本需要用到的类或包。
<%@page import=”java.util.Date,java.util.UUID”%>
或者
<%@page import=”java.util.Date”%>
<%@page import=”java.util.UUID”%>
注意:服务器会自动导入
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
 session:指示是否产生HttpSession对象。默认值是true。
  buffer:JSP中的HTML的输出都是用的JspWriter的字符输出流。该属性指定输出流的缓存大小。默认8Kb
  errorPage:指定当JSP出现异常时转向(请求转发)的页面地址。该地址如果以”/”开头,“/”代表着当前应用;如果不是以”/”开头,表示的是相对路径。
另外一种方式:配置全局错误提示页面。
修改web.xml

      isErrorPage:指示是否产生exception内置对象。默认值是false
      contentType:和响应消息头Content-Type作用一样。HttpServletResponse.setContentType();   text/html;charset=UTF-8
      pageEncoding:指示服务器在翻译JSP时采用的编码
 
        特点:还有contentType的作用
      isELIgnored:是否忽略EL表达式。默认是false(不忽略)


      2.taglib指令:
作用:引入外部的标签库(JSTL)
属性:
uri:外部标签的名称空间
prefix:前缀
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

      3.include指令:
作用:包含。静态包含
属性:
file:被包含的页面的地址。”/”表示当前应用。不以”/”开头,表示相对路径


四、JSP的动作元素
       动作元素就是JSP内置标签
       
      jsp:include:实现动态包含
page:指定被包含的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径

      jsp:forward:实现请求转发
page:指定转发的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径

      jsp:param:包含或转发时传递请求参数


 五、JSP的九大隐式对象
1.JSP对应Servlet的service的局部变量
2.JSP的就九大隐式对象

(1) HttpSession类的session对象    如果Page指令的session属性是false就没有这个对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
         会话状态维持是Web应用开发者必须面对的问题。


(2) HttpServletRequest类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。


(3) HttpServletResponse类的respone对象
作用:代表响应对象,主要用于向客户端发送数据


(4) JspWriter类的out对象
作用:主要用于向客户端输出数据; 
        Out的基类是JspWriter


(5) ServletContex类的application对象
作用:主要用于保存用户信息,代码片段的运行环境;
        它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.


(6) PageContext类的pageContext对象
作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。


(7) ServletConfig类的config对象
作用:代码片段配置对象,表示Servlet的配置。


(8) Object类的page(相当于this)对象
作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。
 
(9)Exception      如果page指令的isErrorpage属性是false就没有这对象
作用:处理JSP文件执行时发生的错误和异常




3.pageContext隐式对象作用

是一个页面范围的域对象,能操作其他三个域对象的数据(ServletRequest ServletSession ServletContext)
方法
    void setAttribute(String key,Object value) 
    void removeAttribute(String key)
                     Object getAttribute(String key)
                     pageContext页面域(作用域)范围。pageContext.setAttribute("p", "ppp");//只能本页中能取出来
    void setAttribute(String key,Object value,int scope)
    void removeAttribute(String key,int scope)
    Object getAttribute(String key,int scope)


    int Scope:是一个常量
         PageContext.PAGE_SCOPE表示页面范围
 PageContext.REQUEST_SCOPE表示请求范围
 PageContext.SESSION_SCOPE表示回话范围
 PageContext.APPLICATION SCOPE表示应用范围


 注意:
<%
pageContext.setAttribute(“g”,”gg”,PageContext.APPLICATION_SCOPE);
//application.setAttribute(“g”,”gg”); 功能和上面一样
%>


Object findAttribute(String key):依次从页面、请求、会话、应用范围查找指定名称的数据。找到为止。


PageContext可以获取其他八个JSP隐式对象
ServletRequest request = pageContext.getRequest()
  
提供了包含和转发的简单方式
pageContext.forward("/demo.jsp");
pageContext.include("/demo.jsp");




六:四大域对象
    PageContext:存放的数据只能在当页中取出
    ServletRequest:存放的数据在一次会话请求中取出
    ServletSession:存放的数据只能在一次回话中取出
    ServletContext:存放的数据在当前应用中取出




七:EL表达式
   1.EL主要作用:向界面输出数据 替换JSP中的表达式<%= %>


   基本语法形式
          ${11}
 和<%=11%>效果一样
    要先把数据存放到四大域  然后再获取
     El表达式能从四大域对象中获取数据
         1.获取数据 

     运算符

    点运算符。就是调用对象的getter方法       例如 一个方式是getName  只需要p.name     "."就是get
    中括号运算符。[]就是调用对象的getter方法

${p.name}
${p['name']}
${p["name"]}
三个效果一样
           数学或逻辑运算
        empty运算符 判断一个对象是否为null 字符串是否为""  集合是否有元素



   11个隐式对象
 
       JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。这与同名的JSP隐式对象实际上就是同一个对象。余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
     共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到request作用域的username属性可以通过EL表达式${ requestScope.username}来直接访问。
     有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
    有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
    另外还有一个初始化参数访问隐式对象:initParm。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。
                EL11个隐式对象
                                                                   
                                
类别
标识符
表示
JSP
pageContext
PageContext 实例对应于当前页面的处理
作用域
pageScope
表示请求范围数据
requestScope
 表示请求范围数据
sessionScope
 表示会话范围数据
applicationScope
表示应用范围数据
请求参数
param
单个请求参数
paramValues
 重名请求参数
请求头
header
 单个请求消息头
headerValues
重名请求消息头
Cookie
cookie

代表是一个Mapkeycookie对象的namevaluecookie对象

初始化参数
initParam
按名称存储 Web 应用程序上下文初始化参数的 Map




     
      








 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值