zoukankan      html  css  js  c++  java
  • 02-JSP初识

    JSP

    一、jsp概述

    • java serverpages服务器
    • jsp可用一种简单易懂的等式表示为:HTML+JAVA=JSP
    • 可以生成动态的HTML(拼标签)
    • 以.jsp为后缀的文件,内容是以标签为主题,可以内嵌java代码,本质上是Servlet

    二、jsp使用

    创建jsp文件

    首先先创建一个javaweb项目

    在webcontent下创建文件以.jsp结尾的文件

    创建JSP默认编码是ISO-8859-1     访问时页面出现乱码
    

    如何修改JSP默认的编码格式

    1. 点击window
    
    2. 点击preferences
    3. 在上面输入框中输入jsp
    4. 找到jsp Files
    5. 右边有一个Encoding 点击,下拉翻到最上面,找到UTF-8
    6. 一路OK即可
    7. 当你再创建jsp文件时,编码格式就变了
    

    三、jsp引擎

    JSP引擎与JSP容器指的是同样的东西,他们都指用来统一管理和允许Web应用程序的软件。常见的JSP引擎有Tomcat、JRun等,最常用的就是Tomcat

    安装JSP引擎的计算机,其实就是Web服务器。大多人把Tomcat说成Web服务器,但其实Tomcat只是JSP容器(引擎)而已。之所以把Tomcat说成Web服务器,这样容易理解。

    当浏览器要访问一个JSP文件时,JSP文件会经过JSP引擎转换为一个Servlet,被编译成class 然后通过class生成对象给用户进行响应。

    四、jsp执行流程

    请求JSP引擎,将文件生产java文件,将java文件编译为class文件,class创建对象,给用户响应。

    五、jsp的组成

    • 静态内容
    • 指令
    • 表达式
    • 小脚本
    • 声明区
    • 注释

    六、三大指令

    1. page指令

    • 作用:JSP指令用来设置整个JSP页面相关的属性,指令可以有多个属性,以键值对的形式表示,并用逗号隔开
    • 常用属性
      • language :选用什么编程语言
      • import:向生成的Servlet文件中添加导包
      • contentType:描述网页内容类型与编码格式‘
      • extends:我们可以指定JSP生成时 继承的Servlet类
      • errorPage:产生错误后,跳转的错误处理页面

    2. include指令

    • 作用:将一个外部文件嵌入到另一个JSP或者HTML文件,同时解析这个页面中的JSP语句
    • 语法格式:<%@ include file="引入页面所在路径" >

    3. taglib指令

    • 作用:使用标签库定义的新的自定义标签

      <%@ taglib uri="tagliburl" prefix="别名";
      	
      prefix:标签库引入时的别名,再使用标签中需要加入 别名:前缀.有时我们再一个JSP文件中引入多个标签,prefix,也是用来区别不同标签库的!
      
      uri:用来匹配引入的标签库描述文件,对应标签库中的uri.引入标签的jar包
      
    • 使用

      1. 引入相关jar包,JSTL标签 standard.jar 和 jstl.jar 两个jar包, 高版本引一个就可以了
      
      2. 再jsp页面通过 taglib指令引入 核心标签库
      	<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      
      3. 第三步可以使用标签了
      	test 条件
          <c:if test=""></c:if>和程序中if一样
      	
      	<c:forEach items="" begin="" end="" step="" var="" varStatus></c:forEach>			迭代标签,接受多种集合类型
      	items  	要被循环的信息
          begin	开始的元素
          end		最后一个元素
          step	每一次迭代的步长
          var		代表当前条目的变量名称
          varStatus	循环状态的变量名称		
      	例如:
              <c:forEach var="i" begin="1" step="2" end="5">
                  ${i }
              </c:forEach>
              
              
         	相当于java中的 switch-case结构
          <c:choose>	本身只当作 c:when 和 c:otherwise的父标签
          <c:when test=""></c:when>	用来判断条件是否成立
          <c:otherwise></c:otherwise>	 在c:when 便签后,当 c:when 标签判断为false时候执行
          </c:choose>
      

    七、内置对象

    内置对象(又叫隐含对象),及时在jsp中不需要创建(有服务器<容器>来创建),可以直接使用的对象。

    1. out

    out对象是JSPWriter类的实例,是向客户端输出内容的对象

    • 类型:JSPWriter
    • 作用:向客户端进行响应的字符打印流

    2. request

    四大作用域之一

    • 类型:HTTPServletRequest
    • 作用:请求对象,包含了请求信息
    • 常用方法
      • getParameter("key"):获取用户提交的表单信息
      • setCharacterEncoding("编码集"):设置请求编码,防止乱码
      • setAttribute("key","value"):就爱那个数据保存到request范围内的变量
      • forward(String url):转发
      • getParameterValue(String name):返回包含name的所有值的数组

    3. response

    • 类型:HTTPServletResponse
    • 作用:响应对象,用来给给客户进行响应
    • 常用方法
      • addCookie():讲一个cookie对象发送到客户端
      • sendRedirect(String url):重定向

    4. session

    四大作用域之一

    • 类型:HttpSession
    • 作用:会话对象,用来进行数据的共享和会话的跟踪
    • 常用方法
      • setMaxInactiveInterval(int num):设置session对象的有效时间
      • invalidate():销毁当前的session

    5. application

    四大作用域之一

    • 类型:ServletContext
    • 作用:全局的Servelet上下文对象,每个应用只有一个,从应用启动就创建了,知道应用消亡,对象才会被释放

    6. config

    • 类型:ServletConfig
    • 作用:Servelet内置对象,比较少用

    7. page

    • 类型:Object
    • 作用:指的是当前页面对象

    8. pageContext

    四大作用域之一

    • 类型:pageContext
    • 作用页面的上下文对象,用来在一个页面中进行数据共享和通讯

    9. exception

    • 类型
    • 作用:常用于错误处理页面,用来收集其他页面产生的错误信息,只有isErrorPage=“true”时,才会产生这个对象

    八、四大作用域

    为了在页面、请求、和用户轰炸机安传递和共享数据,JSP提供了四个不同的作用域:pageContext(页面作用域)、request(请求作用域)、session(会话作用域)、application(应用作用域),这些作用域规定了数据可传递和共享的范围以及数据存活时间

    • pageContext:一个页面
    • request:一次请求(范围:可能包含对个页面)
    • session:一个会话(范围:可能包含多次请求)
    • application:一次服务(范围:包含多次会话)
    • 常用方法
      • setAttribute(key,value)
      • Object value = getAttribute(key)
      • removeAttribute(key)

    九、请求转发和重定向的区别

    请求转发:服务器行为,request.getRequestDispatcher("forward.jsp").forward(request, response);是一次请求,是转发后请求对象会保存,地址栏和url地址不会改变

    请求重定向:客户端行为,response.sendRedirect("rediect.jsp");从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的url地址会改变

    十、EL表达式

    EL表达式,用于快速的从域对象中取出信息的,并输出至网页!

    1. 获取数据方式

    取出字符串或基本数据类型的格式:${key}

    取出对象的属性的两种方式:${对象的key.属性名}

    取出数组/集合中对象的属性值
    方式1:${数组的key[下标].属性名称}
    方式2:${数组的key[下标]["属性名"]}
    	${数组的key[下标][属性名的key]}
    

    2. 获取数据流程

    采用就近原则,依次从四大作用域中获取数据

    • 先寻找在pageContext 中是否存在,存在则输出

    • pageContext中不存在时候,寻找request中是否存在,存在则输出

    • request中不存在时候,寻找session中是否存在,存在则输出

    • session中不存在时候,寻找application中是否存在,存在则输出

    • 如果四大域对象中都不存在,则输入空字符串

    3. 运算符

    <1>、算术运算符
    +	 ${6 + 8 }  
    		注意事项:在EL表达式中的“+”只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作转换为数值类型,进行数学加法运算,最后把结果输出。 若出现 ${'a'+'b'} 则会出现异常
    -    ${9 - 8 }
    *	 ${2 * 4 }
    /	 ${9 / 3 }	
    
    <2>、关系运算符
    >   或者 gt
    >=  或者 ge
    <   或者 lt
    <=  或者 le
    ==  或者 eq
    !=  或者 ne
    
    <3>、逻辑运算符
    &&	或者 and
    
    ||	或者 or
    
    !	或者 not
    
    <4>、三元运算符
    ? : 
        例如: ${a=3>2?'是大于':'是小于'}
    
    <5>、特殊运算符
    empty   判断EL表达式中的表达式是否为空
    	例如:${empty user} // true,因为user就是空
    

    十一、JSP的六大动作

    1. include动作

     <jsp:include page="引用文件的地址" flush="false"></jsp:include>
    
    include动作引入jsp文件,在转换时期是没有被引入的,只有当执行到include代码位置的时候,才会被动态的编译载入。
    

    2. useBean、setProperty、getProperty动作

    <jsp:useBean id="别名" class="全限定名称" scope="作用范围"></jsp:useBean>
    <jsp:setProperty property="属性名称" name="别名" value="值"/>
    <jsp:getProperty property="属性名称" name="别名"/>
    

    3. forward动作:转发

    <jsp:forward page="转发地址">
        <jsp:param value="值" name="key"/>
        <jsp:param value="值" name="key"/>
    </jsp:forward>
    

    4. param动作:参数

    <jsp:param value="值" name="key"/>
    
  • 相关阅读:
    意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测
    基于nxp i.mx8m mini的新一代高性价比核心板之王
    Spring IoC容器-ApplicationContext
    XML文档
    Spring资源访问
    Spring框架简介
    SpringBoot整合RabbitMQ
    发布订阅模式
    主题模式
    RabbitMQ Work Queues(工作队列)
  • 原文地址:https://www.cnblogs.com/borntodie/p/14582719.html
Copyright © 2011-2022 走看看