JSP语法

未完

本文来自JSP基本语法_<!—注释内容—>可以发送到服务器吗-CSDN博客,仅作为学习记录用

一、简介

JSP指的是Java Server Pages,用于开发动态Web应用的一项技术。JSP是基于Java Servlet的Web开发技术,具有的简单易学和跨平台等的特性。

运行原理:(运行原理不是很能看懂)

  1. Java Servlet: Java Servlet 是用 Java 编写的服务器端程序,它遵循 Servlet API 规范。Servlet 负责处理客户端(通常是 Web 浏览器)发送的请求,并生成响应。Servlet 可以处理各种类型的请求,如 GET、POST、PUT 等,并且能够生成 HTML、XML、JSON 等各种类型的响应内容。

  2. Servlet 类: Servlet 类是实现 Servlet 接口或继承 GenericServlet 或 HttpServlet 类的 Java 类。Servlet 类通常包含了处理请求和生成响应的逻辑。开发人员编写 Servlet 类来处理特定的 URL 请求,并定义 Servlet 生命周期中的各种方法,如 init()service()destroy()

  3. Servlet 容器: Servlet 容器是一个运行 Java Servlet 的环境。它负责加载、实例化和管理 Servlet 类,并处理与客户端的通信。Servlet 容器还提供了一些额外的功能,如会话管理、安全性、性能优化等。常见的 Servlet 容器包括 Apache Tomcat、Jetty、Undertow 等。

  4. JSP 引擎: JSP 引擎负责处理 JSP 页面并将其转换为 Servlet 类。JSP(JavaServer Pages)是一种动态网页技术,允许开发人员在 HTML 中嵌入 Java 代码。JSP 引擎负责将 JSP 页面中的 Java 代码转换为 Servlet,并将生成的 Servlet 类加载到 Servlet 容器中执行。

综上所述,Java Servlet 和 Servlet 类负责处理请求和生成响应,Servlet 容器负责运行和管理 Servlet,而 JSP 引擎负责将 JSP 页面转换为 Servlet 类。

  1. 客户端发送HTTP请求到Web服务器。请求可能包含一些参数,例如查询字符串或表单数据。
  2. Web服务器接收到请求后,会把它交给Servlet容器进行处理。
  3. Servlet容器根据URL中的扩展名判断该请求是否需要被JSP引擎处理。如果需要,就将请求交给JSP引擎处理。
  4. JSP引擎首先解析JSP文件并生成相应的Java源代码,然后编译并加载该Java源代码。这个过程只在第一次访问JSP页面时进行,之后就会直接使用已编译的类。
  5. 当有新请求到达时,JSP引擎会实例化一个新的Servlet,并且向其中插入处理该请求的Java代码。这些代码包括静态内容和动态内容,动态内容通常由JSP表达式、脚本和自定义标签组成。
  6. 最终,Servlet生成响应并将其返回给客户端浏览器。响应可能包含HTML、CSS、JavaScript等各种类型的内容,以及动态生成的内容。

在传统的HTML页面文件中嵌入脚本语言和JSP标签就构成了一个JSP页面文件。一个JSP页面可有5中元素组合而成。

  1. HTML页面内容
  2. JSP注释
  3. JSP指令
  4. JSP脚本元素
  5. JSP动作元素

二、JSP页面

JSP注释

  • JSP注释有两种,一种是可以在客户端显示的注释,称为HTML注释。表示形式:  <!-- 注释内容 -->
  • 一种是发送到服务器端,在客户端不能显示的注释,称为JSP注释。表示形式:  <%--注释内容--%

JSP指令

JSP指令用来向JSP引擎提供编译信息。可以设置全局变量,如声明类、要实现的方法和输出内容的类型。一般的,JSP指令在整个页面范围内有效,且并不向客户端产生任何输出。所有的JSP指令都只在当前的整个页面中有效。与其书写的位置无关,一般写在最前面。

JSP指令有3类,分别是:page指令、include指令、taglib指令

1.page指令

page指令称为页面指令,用来定义JSP页面的全局属性,该配置会作用于整个JSP页面。page指令用来指定所使用的脚本语言、导入指定的类及软件包等。

<%@ page language="java" contentType="text/html;charest=GBK"%>
<%@ page import="java.util.*, java.io.*, java.awt.*"%>  

2.include指令

include指令文件加载指令,用于在JSP文件中插入一个包含文本或代码的文件。它把文件插入后与原来的JSP文件合并成一个新的JSP页面。还需要注意的是,如果被插入的文件发生了变化,则包含这个文件的JSP文件需要被重新编译。

<%@ include file="baozi.txt"%>
<%@ include file="baozi.html"%>
<%@ include file="baozi.jsp"%>

3.taglib指令

taglib指令用来引用标签库并设置标签库的前缀。这个指令允许JSP页面使用用户自定义的标签,它也可以为标签库命名,标签在这个库中定义。

taglib有2个属性,uri用来指定标签文件或标签库的存放位置,prefix用来指定该标签库所使用的前缀。

   <%@ pagelanguage="java" contentType="text/html"pageEncoding="UTF-8"%>
 <%--声明要引用的标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <head>
        <title>taglib标签</title>
    </head>
    <body>
        <%--使用JSTL标签输出--%>
        <c:out value="taglibexample!"/>
    </body>
</html>

3.JSP脚本元素

通过JSP脚本可以将Java代码嵌入到HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来实现。

JSP脚本元素主要包含如下三种类型:JSP声明语句、JSP表达式、JSP Scriptlets

1.JSP声明语句

JSP声明语句用于声明变量和方法。使用JSP声明语句声明变量时需要在”<%!”和”%>”标记之间放置Java变量的声明语句。变量的类型可以是Java语言中所提供的任意数据类型。(后面这段没看懂)使用JSP声明语句声明的变量将来会转换成Servlet类中的成员变量,这些变量在整个JSP页面中都有效,因此也被称为JSP页面的成员变量。声明的方法在整个JSP页面有效,方法内声明的变量只在方法内有效。

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
    <title>JSP声明语句示例</title>
</head>
<!--JSP声明语句  -->
<%!
    public int a;            //声明整型变量a
    public String printStr(){    //声明方法printStr
        return "JSP method";
}
%>
<body>
<%
    out.println("a="+a);        //输出a值
    a++;                //a自增
%>
<br>       
<%
    out.println(printStr());    //调用printStr()方法,输出其返回值
%>
</body>
</html>

(这里也没看懂)实际上,JSP页面最终会编译成Servlet类,而在容器中只会存在一个Servlet类的实例。在JSP中声明的变量时成员变量,它只在创建Servlet实例时被初始化一次,此后该变量一直保存,直到Servlet实例被销毁掉。

2.JSP表达式

在”<%=”和”%>”标记之间插入一个表达式,这个表达式必须能够求值,并且计算结果以字符串的形式发送到客户端显示出来。JSP表达式的值会作为HTML页面的内容。如果表达式的值是一个字符串,则将表达式的值直接显示在页面上,否则会先将表达式转换为字符串。

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>JSP 表达式</title>
</head>
<body>
    <%!
        String str="JSP expression";        //声明变量str
    %>
    <!--JSP表达式-->
    <%=str%>   
</body>
</html>

3.JSP Scriptlets

是一段Java代码。当需要使用Java实现一些复杂的操作或控制时,JSP表达式往往不能满足要求,此时就需要用到JSP Scriptlet。

在JSP Scriptlet里声明的变量是局部变量,调用JSP Scriptlet时,会为局部变量分配内存空间,调用结束便释放变量占有的空间。

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>JSP Scriptlet</title>
    </head>
    <body>
    <%
        String str="JSP Scriptlet";     //声明字符串
        out.println(str);                  //输出字符串的值
    %>
    </body>
</html>

三、JSP动作元素

JSP动作元素用来控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以实现使用多行Java代码能够实现的效果,如动态插入文件、重用JavaBean组件、自定义标签等。

JSP中的动作元素主要包含下面7个:

<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:plugin>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>

1.<jsp:include>

<jsp:include>动作元素提供了一种在JSP页面中包含页面的方式,既可以包含静态文件,也可以包含动态文件。

include.jsp:

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>jsp:include</title>
</head>
<body>
    <jsp:include page="hello.jsp"></jsp:include>
</body>
</html>

hello.jsp:

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%=(newDate()).toString()  %>

2、<jsp:forward>

是一种用于页面重定向的动作元素,它的作用是停止当前页面的执行,而将客户端请求转交给另一个JSP页面。此操作是在服务器端进行的,不会引起客户端二次请求,因此浏览器的地址不会发生改变。

forward.jsp:

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>jsp:forward</title>
</head>
<body>
    <%--这里会执行 --%>
    <jsp:forward page="to_forward.jsp"></jsp:forward>
    <%--这里不会执行 --%>
</body>
</html>

to_forward.jsp:

<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>to_forward</title>
</head>
<body>
    该页面为jsp:forward跳转的页面
</body>
</html>

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值