JavaWEB学习7-3_JSP

JSP( Java Server Pages )

一、简介

jsp本质是一个简化的Servlet,

JSP技术有点类似ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为 (*.jsp)

某种意义上的静态页面(html)和动态页面(jsp)

1.1 JSP出现的原因

JSP出现之前,如何使用Servlet返回前端页面呢?伪代码

public void doGet() {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Hello world</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Hello World!</h1>");
    out.println("</body>");
    out.println("head");
    out.println("</html>");
}

JSP出现之后,过程就是 jsp解释器 把jsp解释成servlet的class 然后当作servlet来使用访问,html代码被写回浏览器,重点在于jsp解释器是如何把jsp翻译成java文件的

1.2 JSP中嵌套 java 代码

声明标签 <%!变量或者方法声明%>
表达式标签 <%= 表达式%> 在页面上显示的效果
程序代码标签 <%java代码%> 页面上动态展示内容

<!-- html注释内容,查看源码时能看到 -->
<%-- jsp注释,查看页面源码时看不到 --%>

二、JSP九大内置对象

JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、 pagecontext、config、page、exception,九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用

2.1 request 对象

request 对象代表了客户端的请求信息。request对象的作用域为一次请求。

2.2 response 对象

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。作用域只在JSP页面内有效

2.3 session 对象

session 对象是由服务器自动创建的与用户请求相关的对象。session对象的value可以使复杂的对象类型

application 对象保存在服务器中,作用域是服务器运行的时候。

2.5 out 对象

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区,输出完毕后需要关闭输出流

2.6 pageContext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext由容器维护,在JSP页面中可以直接使用 pageContext 对象。

2.7 config 对象

config 对象的主要作用是取得服务器的配置信息,Servlet 初始化时,容器把某些信息通过 config 对象传递配置信息

2.8 page 对象

page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针

2.9 exception 对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用

三、JSP三大指令

page、include、taglib

3.1 page

配置页面信息

<%@ page ... %>

属性

  1. autoFlush 是否清除缓存 (默认true)
  2. ContentType 页面的类型(utf-8、GBK、GB2312、GB18030、ISO-8859-1)
  3. errorPage 错误页面(可以实现请求转发)
  4. isErrorPage 为True当前页面就是错误处理页面,上面提到过 exception 对象配合使用
  5. import 导入类,导入包
  6. isElIgnored 是否屏蔽EL表达式
  7. isThreadSafe 是否允许同步
  8. language脚本应用语言(默认为java)
  9. pageEncoding(字符编码集)
  10. session 是否允许使用session

3.2 include

作用:把另一个页面包含在当前页面

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

较少使用,注意的是Tomcat版本6.0之前很少使用,6.0后Tomcat支持include

3.3 taglib

作用:申明该JSP文件使用了自定义的标签

<%@taglib uri="uri" prefix="tagPrefix" %>

属性

  1. uri属性:用来指定标签库的存放位置

  2. prefix属性:指定该标签库必须使用的前缀

    如:<%@taglib uri="http:java.sun.com/.../core" prefix="c" %> 使用标签库

四、JSP七大动作

4.1 include 动态引入

引入页面

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

4.2 useBean 动作

使用JavaBean

<jsp:useBean id="对象名" class="包名.类名" scope="(request/page/application/session)"/>
<!-- 作用域默认为page(本页面有效) -->

4.3 getProperty 动作

从对象中取出属性值

<jsp:getProperty name="javaBean" property="javaBean对象属性名" />

4.4 setProperty 动作

设置对象属性

<jsp:setProperty name="javaBean" property="javaBean对象属性名" value="值"/>

4.5 forward 动作

<jsp:forward page="login.jsp" />

4.6 param 动作

传递参数,到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值

<jsp:forward page="转向页面的url" >
           <jsp:param   name="参数名1" value="参数值1">
           <jsp:param   name="参数名2" value="参数值2">
</jsp:forward>

4.7 plugin 动作

添加插件

<jsp:plugin>

五、EL 表达式

EL表达式(Expression Language),最初被定义在JSTL中,JSP2.0时被分离出来成为JSP的规范

作用:简化对象和变量的访问

5.1 EL表达式语法

${username}
${sessionScope.username}

需要注意的是:如果没有指定变量的作用域,那么容器会依次从pageContext -> request -> session -> application 中查找该变量或对象

作用域:pageScope(当前页面),requestScope(当前请求范围),sessionScope(当前session会话),applicationScope(应用程序范围)

5.2 EL基础操作符

类型定义
运算+ 、-、* 、/(div) 除 、%(mod) 余数
逻辑and、&&、or、||、!、not
关系==,eq、!=,ne、>,gt、<,lt、<=,le、>=,ge。可以与其他值进行比较,或与布尔型、字符串型、
整型或浮点型文字进行比较
Empty判断是否为null或者empty,
其他.、[]、()

六、JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,封装好了JSP应用的通用核心功能

作用:简化jsp页面中编写代码

6.1 使用

  1. 下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jarjstl.jar 文件拷贝到 /WEB-INF/lib/

  2. 在JSP页面中引入<%@ taglib prefix=”页面使用的名称” uri=”功能范围的路径”%>

  3. 功能范围URI前缀
    corehttp://java.sun.com/jsp/jstl/corec
    i18nhttp://java.sun.com/jsp/jstl/fmtfmt
    sqlhttp://java.sun.com/jsp/jstl/sqlsql
    xmlhttp://java.sun.com/jsp/jstl/xmlx
    functionhttp://java.sun.com/jsp/jstl/functionf

    常用的有core核心标签,和i18n格式化标签

6.2 核心标签

引用,仅仅在这里做简单的记录,如果想要使用就得查具体的标签用法

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签描述
<c:out>用于在JSP中显示数据,就像<%= … >
<c:set>用于保存数据
<c:remove>用于删除数据
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>与我们在一般程序中用的if一样
<c:choose>本身只当做<c:when>和<c:otherwise>的父标签
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwiset><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>基础迭代标签,接受多种集合类型
<cforTokens>根据指定的分隔符来分隔内容并迭代输出
<c:param>用来给包含或重定向的页面传递参数
<c:redirect>重定向至一个新的URL.
<c:url>使用可选的查询参数来创造一个URL

6.3 格式化标签

引用,在这里做简单的记录,如果想要使用就得查具体的标签用法

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签描述
<fmt:formatNumber>使用指定的格式或精度格式化数字
<fmt:parseNumber>解析一个代表着数字,货币或百分比的字符串
<fmt:formatDate>使用指定的风格或模式格式化日期和时间
<fmt:parseDate>解析一个代表着日期或时间的字符串
<fmt:bundle>绑定资源
<fmt:setLocale>指定地区
<fmt:setBundle>绑定资源
<fmt:timeZone>指定时区
<fmt:setTimeZone>指定时区
<fmt:message>显示资源配置文件信息
<fmt:requestEncoding>设置request的字符编码

6.4 其他

我们可以发现还有很多其他的标签,有趣的是sql标签,jstl提供了访问数据库的标签,甚至还有xml标签,程序员不用写dao不用写数据库连接(但还是要写sql语句)就可以在jsp页面中访问数据库,对于当时来说还是很方便,使用不多,了解即可

七、JSP为什么被淘汰

从使用来看可以发现,编写jsp的程序员需要具备什么能力技术,前后端都需要,一个程序员至少得负责一个完整的jsp页面编写,又要研究前端的ajax/jquery/js/html知识,又要会java方面的能力,对于小网站来说还算挺方便,但随着需求变更,一个大项目需要的数据很多,页面展示,数据获取都需要一个人来完成就很困难了,所以趋势就是前后端分离,那jsp这个囊括前后端的技术就慢慢过时了

之前提到过,jsp就是servlet的简化形式,让servlet输出html信息更容易,还是会走到servlet那一套init(),service()方法,前端页面渲染都是通过DOM,无论使用jsp与否,jsp就是另一种途径而已

八、面试.

  1. jsp内置对象

  2. 数据作用域

  3. jsp与servlet的区别

    jsp先编译成servlet然后再编译成calss文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSPJavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值