JavaWeb——JSP详细讲解

目录

介绍

一、什么是JSP ?

二、JSP的特点

三、JSP和Servlet的区别

四、JSP的使用

1、三大指令

1.1、Page指令

1.2、Include指令 

1.3、Taglib指令 

2、九大内置对象 

 3、四大域对象 

4、JSP标签

4.1、标签

4.2、标签 

4.3、标签

5、JavaBean

 5.1、JavaBean的要求

5.2、JavaBean标签

5.2.1、标签

5.2.2、 标签

5.2.3、标签 

6、EL表达式

6.1、什么是EL表达式?

6.2、语法结构

6.3、访问四大域的值

6.4、11大EL内置对象

7、JSTL标签库

7.1、什么是JSTL标签库?

 7.2、JSTL标签


介绍

一、什么是JSP ?

JSP(全称 Java Server Pages)Java 服务端页面技术,是 JavaEE 平台下的技术规范。它允许使用特定的标签在 HTML 网页中插入 Java 代码,实现动态页面处理,所以 JSP 就是 HTML 与Java 代码的复合体。JSP 技术可以快速的实现一个页面的开发,相比在 Servlet 中实现页面开发将变得更加容易。

二、JSP的特点

  • 能以模板化的方式简单、高效地添加动态网页内容。
  • 可利用JavaBean和标签库技术复用常用的功能代码(设计好的组件容易实现重复利用,减少重复劳动)。标签库不仅带有通用的内置标签(JSTL),而且支持可扩展功能的自定义标签。
  • 有良好的工具支持。
  • 继承了Java语言的相对易用性。
  • 继承了Java的跨平台优势,实现“一次编写,处处运行”。因为支持Java及其相关技术的开发平台多,网站开发人员可以选择在最适合自己的系统平台上进行JSP开发;不同环境下开发的JSP项目,在所有客户端上都能顺利访问。
  • 页面中的动(控制变动内容的部分)/静(内容不需变动的部分)区域以分散但又有序的形式组合在一起,能使人更直观地看出页面代码的整体结构,也使得设计页面效果和程序逻辑这2部分工作容易分离(外观视图与逻辑分离)。从而方便分配人员并发挥各自长处,实现高效地分工合作。
  • 可与其它企业级Java技术相互配合。JSP可以只专门负责页面中的数据呈现,实现分层开发。

三、JSP和Servlet的区别

四、JSP的使用

1、三大指令

1.1、Page指令

属性名称

取值范围

描述

language

java

指明解释该JSP文件时采用的语言。一般为Java语言。默认为Java

extends

任何类的全名

指明编译该JSP文件时继承那个类。JSP为Servlet,因此当指明继承普通类是需要实现Servlet的inti、

destoy等方法

import

任何包名,类名

引入该JSP中用到的类、包等。import是唯一可以声明多次的page指令属性。一个import属性可以引用多

个类,中间用英文逗号隔开,如<%@ page import="java.util.List,java.util.ArrayList"%>。JSP中下

面四个包里的类可以直接使用:

java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*

session

true,false

指明该JSP内是否内置Session对象。如果为true,则内置Session对象,可直接使用。否则不内置

Session对象。默认为true

autoFlush

true,false

是否运行缓存。如果为true,则使用out.println()等方法输出的字符串并不是立刻到达客户端服务器的

而是暂时存在缓存里,缓存满或者程序执行完毕或者执行out.flush()操作是才到客户端。默认为true

buffer

none或者数字+kb

指定是否线程安全。如果为true,则运行多个线程同时运行该JSP程序,否则只运行一个线程运行,其余

线程等待。默认为false

isErrorPage

true,false

指定该页面是否为错误处理页面。如果为true,则该JSP内置有一个Exception对象exception,可直接使

用,否则没有。默认为false

isThreadSafe

true,false

指定是否线程安全。如果为true,则运行多个线程同时运行该JSP程序,否则只运行一个线程运行,其余线程等待。默认为false

errorPage

某个JSP页面的相对路径

指明一个错误显示页面,如果该JSP程序抛出了一个未捕捉的异常

则转到errorPage指定的页面。errorPage指定的页面通常isErrorPage属性为ture,且内置的exception

对象为未捕捉的异常

1.2、Include指令 

静态包含: 先包含在执行

<%@ include file="/head.jsp" %>

 Asdfadsfasdfasdfadsfadsf

<%@ include file="/foot.jsp" %>

静态包含只会形成一个servlet文件

并且可以布局

<table border=""><tr><td> <%@include file="/Version.jsp" %></td><td>  adsfasf</td></tr></table>

动态包含:先执行再包含

(可以传递参数和被包含的页面可以生成servlet

<jsp:include page="/head.jsp" >

    <jsp:param value="mazheng" name="name"/>

  </jsp:include>

在被包含的页面中取值:

 <%=request.getParameter("name")%>

注意动态包含与静态包含的区别(在实际开发中能用静态,就不要用动态)

1.3、Taglib指令 

作用:引入外部的标签

语法:<%@taglib uri = “标签名称空间” prefix=“前缀”%>

<%@ taglib uri=“http://java.sun.xom/jsp/jstl/core” prefix=“c”%>

2、九大内置对象 

 3、四大域对象 

ServletContext(application)作用范围整个app(当前工程)
Session一次会话,浏览器打开到关闭为一次会话
Request一次请求,客户端与服务器端一次交互
Pagecontext当前页面

4、JSP标签

JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。

4.1、<jsp:forward>标签

标签用于把请求转发给另外一个资源。

语法:

<jsp:forward page="relativeURL | <%=expression%>" />  

4.2、<jsp:include>标签 

标签用于静态包含

语法:

<jsp:include page="relativeURL | <%=expression%>"

<jsp:param name="parameterName" value="parameterValue|<%= expression %>" </jsp:include>

4.3、<jsp:param>标签

当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。

语法:

<jsp:forward page="relativeURL | <%=expression%>">

<jsp:param name="parameterName" value="parameterValue|<%= expression %>" /></jsp:include>

5、JavaBean

JavaBean就是一个遵循特殊写法的普通类。

 5.1、JavaBean的要求
  1. 必须有默认的构造方法
  2. 所有字段私有的  
  3. 提供公有的gettersetter方法,属性
  4. 一般实现java.io.Serializable(方便存储和网络传输)

企业级开发中,JavaBean是用来传递数据的。

5.2、JavaBean标签
5.2.1、<jsp:useBean>标签
<jsp:useBean id="person" class="cn.xinhua.domain.Person" scope="page">
</jsp:useBean>
<jsp:setProperty property="*" name="person"/>
<%=person.getName() %>
<%=person.getAge() %>
5.2.2、 <jsp:setProperty>标签
<jsp:setProperty property="name" name="person"/>
5.2.3、<jsp:getProperty>标签 
<jsp:getProperty property="name" name="person"/>

6、EL表达式

6.1、什么是EL表达式?

EL(Expression Language)是一种表达式语言。是为了使 JSP 写起来更加简单,减少 java代码,可以使得获取存储在 Java 对象中的数据变得非常简单。在 JSP2.0 版本后开始支持 EL表达式。

6.2、语法结构

${表达式}
${对象.属性名}

6.3、访问四大域的值

<%

    pageContext.setAttribute("name","page");

    request.setAttribute("name","request");

    session.setAttribute("name","session");

    application.setAttribute("name","application");  

%>

     ${name}<!—会在四大域中从小到大的查询,找到第一个就终止查询-->

    ${pageScope.name}

    ${requestScope.name}

    ${sessionScope.name}

    ${applicationScope.name}

6.4、11大EL内置对象
变量类型作用
pageContextPageContextlmpl它可以获取jsp中的九大内置对象
pageScopeMap<String,Objexct>它可以获取pageContext域中的数据
requestScopeMap<String,Objexct>它可以获取Request域中的数据
sessionScopeMap<String,Objexct>它可以获取Session域中的数据
applicationScopeMap<String,Objexct>它可以获取servletContext域中的数据
paramMap<String,String>它可以获取请求参数
paramValuesMap<String,String>它可以获取请求参数的值,获取多个值使用
headerMap<String,String>它可以获取请求头的信息
headerValuesMap<String,String>可以获取请求头的信息,可以获取多个值的情况
cookieMap<String,Cookie>它可以获取当前请求的Cookie信息
initParamMap<String,String>它可以获取在web.xml中配置的<context-param>上下文参数

7、JSTL标签库

7.1、什么是JSTL标签库?

JSTL(Java server pages standarded tag library,即 JSP 标准标签库)JSTL 标签是基于 JSP页面的。这些标签可以插入在 JSP 代码中,本质上 JSTL 也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL 的目标是使 JSP 页面的可读性更强、简化 JSP 页面的设计、实现了代码复用、提高效率。
在 JSP2.0 版本后开始支持 JSTL 标签库。在使用 JSTL 标签库时需要在 JSP 中添加对应的taglib 指令标签。

 7.2、JSTL标签

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值