• jsp基础语法


        jsp的本质就是servlet,因此只要是可以在servlet中实现的功能都可以放在jsp中实现,但是这种开发方式是不推荐使用的。在日常的开发中我们一般把jsp作为视图层,只负责渲染数据展示给用户。一个jsp页面除了包含html代码外还有指令元素、动作元素和脚本元素。接下我就来介绍一下如何在jsp页面中使用这些元素。

        一、jsp脚本

        定义:脚本程序,就是为了在HTML中穿插java代码,可以包含任意语法真确的java语句,变量,方法或表达式。生成servlet源码时该处的代码被放到_jspService()方法中。关于脚本如果大家做过php web开发的话应该比较的熟系,这里和使用原生php开发有点类似

        语法:<% 代码片段 %> 这里需要注意的是在<%  %> 区域内只能写java代码,不能写html标签等元素。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>index.jsp</h3>
        
        <%  
            int sum = 0; //这里必须赋值
            for(int i=1;i<=100;i++){
                sum =sum+i; 
            }
            out.print("1~100的和为"+sum);
        %>
    </body>
    </html>

    输出:1~100的和为5050

    在jsp中除了可以写java脚本外还可以写jsp表达式,关于jsp表达式,平时开发中使用的不多,我们只需要了解即可。语法:<%= 表达式 %>,这里的表达式相当于out.write,例如

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>index.jsp</h3>
        
        <%
          int a=10,b=10;
        %>
        <%=(a+b) %>
    </body>
    </html>

    输出:20

        二、三大编译指令

        定义:JSP编译指令用来设置与整个JSP页面相关的属性。三个编译指令分别是:page,include,taglib。

        1.page指令

        语法:<%@ page attribute="value" %>  page指令主要用于定义jsp页面的使用说明以及一些依赖的信息,例如:页面的编码,是否启用session和导入一些java类等。实例代码:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="java.util.Date" %>
    <%@ page import="java.text.SimpleDateFormat" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>index.jsp</h3>
        
        <%
          Date now = new Date();
          String nowStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now);
        %>
        <%=nowStr %>
    </body>
    </html>

    输出:2019-09-16 16:04:54
        2.include指令

        语法:<%@ include file="url" %>

        作用:在进行web开发时,一般的网页的head和foot是固定的,所以我们一般会把这部分代码提取出来供所有的页面引用。在jsp中可以通过include指令来包含其他文件。这里需要我们注意的是使用include指令引入的页面叫做静态包含,引入的文件内容会被翻译到源文件中去合成一个java文件然后编译,这种引入方式叫做静态包含。代码实例:1.创建一个jsp页面 2.在index.jsp页面引入新创建的jsp页面。

    <%@ page language="java" pageEncoding="utf-8"%>
    <h3>我是引入的页面</h3>
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>index.jsp</h3>
        <%@ include file="/index_include.jsp" %>
    </body>
    </html>

    浏览器输出:

         3.taglib指令

        语法:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

        作用:taglib指令主要用于导入用户自定义的标签库。关于如何定义标签库我以后在来介绍,所以这里我们只需要知道有这样的一个指令即可。

        三、动作指令

        动作指令指的是jsp运行时的动作,在jsp中有七大动作指令但是我只介绍最常用的forward动作指令和include动作指令。

        1.include动作指令

        语法:<jsp:include page="URL"/>

        作用:include动作指令用户动态的引入jsp页面。注意这里和上面介绍的静态包含是有区别的,动态包含是在请求到达时如果发现还包含另一个jsp,那么被包含页面会再生成另一个servlet。

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="java.util.Date" %>
    <%@ page import="java.text.SimpleDateFormat" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h3>index.jsp</h3>
        <%-- <%@ include file="/index_include.jsp" %> --%>
        <jsp:include page="/index_include.jsp"/>
    </body>
    </html>

    动态包含下的class文件:

     静态包含下的class文件:

         2.forward指令

        作用:forward动作把请求转到另外的页面,类似于getRequestDispatcher("/GetData").forward(request, response)。

        语法:<jsp:forward page="URL"/>

        

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>login</title>
    </head>
    <body>
          这里是login.jsp
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="java.util.Date" %>
    <%@ page import="java.text.SimpleDateFormat" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; utf-8">
    <title>Insert title here</title>
    </head>
    <body>
       <jsp:forward page="login.jsp"/>
    </body>
    </html>

    访问index.jsp,浏览器输出:

        

        

        

  • 相关阅读:
    spark记录(19)SparkStreaming之从kafkaBroker和zookeeper获取offset,和使用zookeeper管理offset
    spark记录(18)SparkStreaming+kafka receiver和directed模式
    spark记录(17)SparkStreaming checkpoint那些事儿
    spark记录(16)SparkStreaming On HDFS AND TO MySQL
    第三章:使用MYSQL
    第一章:了解SQL
    第零章:安装mysql和导入练习数据
    DjangoRestFramework整体结构---DjangoRestFramework处理一个接口请求的完整流程
    DjangoRestFrameWork整合sentry错误日志服务器
    ubuntu18.04安装错误日志服务器sentry
  • 原文地址:https://www.cnblogs.com/suyang-java/p/11527652.html
Copyright © 2020-2023  润新知