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"/>
原文地址:https://www.cnblogs.com/borntodie/p/14582719.html