首页 > 其他分享 >【学习笔记】JSP基础语法和指令

【学习笔记】JSP基础语法和指令

时间:2022-10-20 12:11:07浏览次数:53  
标签:java 代码 笔记 语法 jsp JSP include 页面

JSP基础语法和指令

写jsp代码之前,需要导入四个包

  • Servlet 依赖

  • JSP 依赖

  • JSP表达式依赖

  • standard标签库

 

基础语法

jsp表达式

语法:

<%= xxxxxxx%>

xxxxxxx 为java代码(变量或表达式),将java代码的结果输出到页面

例子:

<%--jsp表达式--%>
<%= new java.util.Date().toLocaleString()%>
<%= new String("hello,world")%>
<%=10+10%>

<%=%> 中的代码,在jsp转换的Servlet中,被转换成了out.print(xxxx)

out.print( new java.util.Date().toLocaleString());
out.print( new String("hello,world"));

 

jsp脚本片段

在jsp脚本片段中,可以写多行java代码

语法:

<%
   int a = 10;
    int b = 20;
%>

例子:

<%--jsp脚本片段--%>
<%
    int sum = 0;
    for (int i = 0; i < 100; i++) {
        sum+=i;
    }
    out.print(sum);
%>

将变量sum通过 out.print() 方法输出到前端,还可以使用 jsp表达式的方式。

<%%>中的代码,在转换成Servlet后,被原封不动的放在_jspService() 方法中

除此之外,我们还可以将html 代码嵌入到java代码中

<%--  在java代码中嵌入html--%>
<%
    for (int i = 0; i < 5; i++) {
%>
<h2>这是html</h2>
<%
    }
%>

这样就实现了遍历html标签

 

jsp声明

我们上述写的代码都是在jsp转换的Servlet类的_jspService() 方法中,除此之外,我们想要在该方法外面写代码,该如何实现呢?

语法:

<%!
    xxxxxx
%>

例子:

<%--  jsp声明--%>
<%!
    static{
        //静态代码块
        System.out.println("静态代码块");
    }
    //变量
    private int a = 100;
    //方法
    public void test(){
        System.out.println("方法");
    }
%>

在jsp转化的servlet中,<%! %> 中的内容,被放在了类里面,而不是_jspService() 方法中

image-20221020105658543

 

jsp指令

page

语法:

<%@ page ....%>

例子:

<%--定制错误页面--%>
<%@ page errorPage="error/500.jsp" %>

也就是如果该jsp发生错误,就会跳转到500.jsp

如果想要判断该错误究竟是什么错误,500或404,可以在web.xml中配置

<error-page>
    <error-code>500</error-code>
    <location>/error/500.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
</error-page>

page 中还有其他不常用的指令:

  • isErrorPage=”true“ 声明这是错误页面

  • pageEncoding=”utf-8“ 设置编码

 

include

语法:

<%@ include ....%>

例子:

主要用户提取页面中的公有的部分

  1. 新建公共的页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <h1>这里是头部</h1>
    ​
    --------------------------------
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <h1>这里是尾部</h1>
  2. 使用 include 指令引入这两个jsp

    <body>
    <%@ include file="common/header.jsp"%>
    <h2>网页主体部分</h2>
    <%@ include file="/common/footer.jsp"%>
    </body>

    这里需要注意的是:当你第二次用include 去引用 jsp页面时,在路径前面要加上 "/",表示当前项目

 

除了这样引入公共的页面之外,还可以使用jsp标签,来引用

<jsp:include page="/common/header.jsp"/>
<h2>网页主体部分</h2>
<jsp:include page="/common/footer.jsp"/>

路径前面的 "/" 可加可不加

 

两者的区别:

  • @include指令是把 所有引入的jsp页面与原先的页面的代码都合起来

    image-20221020120248491

  • jsp:include 标签是引入了jsp文件,将jsp页面拼接

    image-20221020120444434

    image-20221020120512287

 

我们一般使用jsp:include 的方式,因为第一种方式,如果在header.jsp 和 jsp1.jsp中都定义了一个名字相同的变量,是不会报错的,如果去访问就会报500

而第二种方式,直接就会报错,不能定义名字相同的变量。

 

标签:java,代码,笔记,语法,jsp,JSP,include,页面
From: https://www.cnblogs.com/wztblogs/p/16809407.html

相关文章

  • Linux笔记-top命令信息详解
    目录参考资料top命令详解使用/proc/self/status注入代码监控某段代码执行前后进程内存状态参考资料https://segmentfault.com/a/1190000013504502https://blog.csdn.net......
  • powershell 笔记
    PowerShellhttps://learn.microsoft.com/zh-cn/powershell/scripting/how-to-use-docs?view=powershell-7.2环境变量#读取指定环境变量PS>$env:windirC:\WINDOWS......
  • autochmod.sh 笔记
    一、文件内容1.内容举例#!/system/bin/shCURTIME=`date+%F_%H-%M-%S`CURTIME_FORMAT=`date"+%Y-%m-%d%H:%M:%S"`BASE_PATH=/sdcard/XXXSDCARD_LOG_PATH=${BA......
  • Duplicate key Validate JSPs in ‘xxxxexploded‘【已解决】
    Internalerror(java.lang.IllegalStateException):DuplicatekeyValidateJSPsin'Class_Student_Management_System:warexploded'java.lang.IllegalStateException:......
  • 【OpenLayers笔记】Snap吸附没效果的解决办法
    已经解决了这个问题了,是我的snap定义过早了,官网上有提示ThesnapinteractionmustbeaddedaftertheModifyandDrawinteractionsinorderforitsmapbrowsere......
  • PHP特级课视频教程_第二集 网站大数据存储 笔记心得
    淘宝数据存储三阶段mysql oracle mysql主从集群mysql主从垂直分表水平分表 :宁可多几个表,少点字段,几个几十个字段。水平分表用的多,重点是行,记录数。分区技术:把......
  • 【原创】k8s 微服务滚动发布(服务持续可用)实践笔记
    背景   对于业务和产品来讲,随时都有紧急小版本功能上线,对于研发人员来讲,线上如果有一些紧急的bug,都需要随时发版修正;而对于产品使用用户来讲,任何的功能和版本发布,要......
  • 九鼎RK3399笔记三:测试迅为电子的杂项设备驱动
    Linux三大设备驱动字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备。块设备:IO的传输过程是以块为单位的。跟存储相关的,都属于块设备,比如TF卡。......
  • 779_ 第K个语法符号
    Problem:779.第K个语法符号目录思路解题方法复杂度Code思路本题首先看范围,发现n的范围是1到30,则说明枚举法是行不通的,由此,我们必须想想其他的办法,观察后发现有两......
  • 算法 - 线段树学习笔记
    前言:此文章为线段树基础知识可供学习参考咳咳,进入正题:我们在做题的时候可能会遇到给定一个数组同时给出一个值进行修改或是区间性的操作这里以单点修改和区间查询......