zoukankan      html  css  js  c++  java
  • JSP(一)

    开宗明义:JSP本质上就是一个Servlet


    scriplet

    JSP 变量和函数的声明

    局部变量

    <% int a = 3;>
    

    全局变量和函数

    <%! int a = 3;> //这里所谓的全局是在service方法之外的声明。
    <%! int function();>
    

    在JSP中输出表达式的值或者变量的值

    <%= a%>
    /*注意前面的小于号和百分号和等号必须紧挨,
    否则会发生错误,另外不能加分号。因为转换成Servlet之后,
    标记符里面的内容只是out.println()里面的参数而已.*/
    

    JSP中的隐式对象

    JSP中的所有隐式对象都会对应到Servlet/JSP API中的某个东西。以下是对应关系:

    API										隐式对象
    
    JspWriter -----------------------------  out
    
    HttpServletRequest-----------------------request
    
    HttpServletResponse----------------------response
    
    HttpSession------------------------------session
    
    ServletContext---------------------------application
    
    ServletConfig----------------------------config
    
    Throwable--------------------------------exception
    
    PageContext------------------------------pageContext
    
    Object-----------------------------------page
    

    JSP的初始化

    JSP的初始化参数

    与常规Servlet配置初始化参数基本上是一样的,唯一的区别就是必须在servlet标记中增加一个元素

    意思是:把这个servlet标记中的所有配置应用到由这个JSP页面生成的Servlet中。

    覆盖jspInit()

    在jspInit()方法中可以调用getServletConfig和getServletContext方法。

    JSP中的属性

    关于应用、请求、会话三个作用域来设置属性,与Servlet类似,只不过要按照上面的映射,把名字改一改而已。比如:

    getServletContext.setAttribute("xxx",object)换成
    application.setAttribute("xxx",object)
    

    但是JSP还有一个页面作用域:pageContext。用其设置的属性,只在本页内可见。

    JSP的指令

    page指令

    <%@ page import="xxx.xxx" session="false">
    //用来引入包,或者设置本页内的属性。注意引入不同的包时候,要用逗号隔开
    //后面的session表示页面内部是否有隐式session对象,true为有,false为无
    //contentType定义响应的MIME内容
    //pageEncoding定义JSP字符编码
    

    taglib指令

    <%@ taglib tagdir="path" prefix="xxx">//定义标记库
    

    include指令

    <%@ include file="xxxx"> //定义可重用的JSP代码
    

    EL

    EL的使用形式:${xxxx.xxxx}

    表达式中第一个命名变量可以是一个隐式对象,也可以是一个属性

    EL隐式对象

    		pageScope			requestScope
    		
    		sessionScope		applicationScope
    		//	上面四个都是作用域属性的MAP
    		
    		param			parmaValues
    		//上面两个是请求参数的Map
    		
    		header			headerValues
    		//上面两个是请求首部的Map
    		
    		cookie
    		
    		initParam //这个是上下文(应用)初始化参数的Map
    		
    		pageContext //唯一一个不是Map的隐式对象。
    

    使用点号操作符访问性质和映射值

    点号左边的变量要么是一个Map,要么是一个bean;点号右边是一个Map键或者一个bean属性。
    如:${person.name}

    使用方括号访问

    方括号与点号相比的优势在于,除了点号上面的适用范围之外,左边还可以是一个List或者数组。

    比如:

    String[] list = {"aaa","bbb","cccc"};
    ${list[0]} 输出 aaa
    ${list["0"]} 还是输出aaa 
    注意:在数组或者list中的String索引会强制转换为int,如果无法转换,将报错。
    

    除此之外,中括号里面还可以使用嵌套表达式。

    作用域隐式对象

    要注意:如果requestScope只是请求作用域属性的一个Map,但不是request对象本身。

    如果希望在request对象上调用一个获取方法来得到自己想要的东西怎么办?

    答:可以使用pageContext对象。

    pageContext.request.method
    

    那么requestScope有什么用处呢?

    答:如果要区别不同作用域的对象,就能使用它。

    以上介绍了EL的特性,关于EL还有很多特性,用到的时候,再查也可以。但是EL不是万能的,比如EL无法实现逻辑控制,如果用到了条件判断,还是得在JSP中插入Java代码。

    但JSTL可以做到。请看下一篇博客。

  • 相关阅读:
    P1361 小M的作物 【网络流】【最小割】
    餐巾计划问题 【网络流24题】【费用流】【zkw】
    P1231 教辅的组成 【网络流】【最大流】
    Rikka with coin 思维题
    线段树模板新
    AC自动机 洛谷P3966 单词
    AC自动机 洛谷P5357 模板
    AC自动机 洛谷P3796
    AC自动机 洛谷P3808 模板
    KMP 洛谷P3375
  • 原文地址:https://www.cnblogs.com/xuehanlee/p/4608496.html
Copyright © 2011-2022 走看看