JSP基础语法学习笔记

什么是JSP?

JSP(Java Server Pages)是一种动态网页技术标准,JSP技术是以JAVA语言作为脚本语言,用于可支持跨平台的Java Web动态网页技术。在传统的HTML文件*.htm,.html 中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(.jsp)

JSP网页中的程序片段可以

  • 操作数据库
  • 重新定向网页
  • 发生Email

  • 以一个实际JSP页面为例
    Hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP</title>
</head>
<body>
    <p>这是我们第一个JSP程序</p>
    <%
        String name="Jason";
    %>
    <br>
    <p>HELLO,<%=name%></p>

</body>
</html>

  • 会发现上面JSP页面程序与HTML语言相比,多了<%String name="Jason";%>这样的代码,那其实,一个JSP文件就是在传统的HTML文件中加入了以"<%“和”>"包含的Java程序片段形成的以jsp为后缀的文件,即 <%Java程序片段%>

JSP运行原理

  • 当服务器上的一个JSP页面第一次被请求执行是,服务器上的Web容器首先将JSP页面转译成一个Java文件
  • 再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求
  • 当这个JSP页面再次被请求执行时,Web容器将直接执行这个字节码文件来响应客户

JSP基本结构

JSP甚至还可以这样

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP</title>
</head>
<body>
    <%
        String a="Welcome";
    %>
    <br>
    <p>HELLO,<%=a%></p>

</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP</title>
</head>
<body>
<%
    String b="Jason";
%>
<%=b%>

</body>
</html>

在这里插入图片描述

  • 一个JSP页面通常可以由HTML代码,变量和方法的声明,Java程序片段,表达式,JSP的注释,JSP指令标记,JSP动作标记等元素组成。但这些元素不一定都是必需的,像上图的例子,它包含了:HTML代码,JSP指令标记,变量的声明

变量和方法的声明

声明变量

JSP声明变量的基本格式:<%!声明变量的代码%>
<%!开始,%>结束,例如

 <%!
    int x=100;
    String y="声明变量";
    Date date;
    %>
  • 变量必须以分号 ; 结尾
  • 变量作用范围是整个JSP页面,同时它只在一个JSP页面有效
    **

声明方法

JSP声明方法的基本格式:<%!声明方法的代码%> 其实和声明变量的格式一样

<%!
    String sayHello(){
        return "Hello my dear friends";
    }
    %>
<%=sayHello()%>

在这里插入图片描述

声明类

格式同上

<%!
public class Friend{
    private String name;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
%>
<%
Friend tom=new Friend();
tom.setName("Tom");
tom.setSex("boy");
%>
<br>
<%=tom.getName()+" is a "+tom.getSex()%>

在这里插入图片描述

Java程序片段

上面说过了 <%Java程序片段%>,Java程序片段是实现页面动态化的基础,上面例子很多了,用来输出的全部都是用程序片段输出的

表达式

格式:<%=表达式%>
表达式可以是任何JAVA语言的完整表达式,该表达式结果在JSP程序请求处理阶段会自动转化为字符串然后插到该表达式在JSP文件的位置

<%!
int a1=3;
int b1=3;
%>
<P>两数之和等于:<%=a1+b1%>
<P>两数之差等于:<%=a1-b1%>
<P>两数之积等于:<%=a1*b1%>

在这里插入图片描述

JSP注释

HTML注释

  • HTML注释被叫做显示注释,注释部分不会被编译,表达式部分会被服务器编译执行,然后将结构发到客户端

格式:<!--注释(comment)[<%=表达式(expression)%>]-->

<!--当前时间为:<%=(new java.util.Date().toInstant())%>-->

在结果显示界面右击查看源文件 可以看到注释中的表达式被编译执行了
在这里插入图片描述

JSP注释

  • JSP注释被叫做隐藏注释
    格式:<%–注释(comment)[<%=表达式%>]–%>
<!--显示注释 当前时间为:<%=(new java.util.Date().toInstant())%>-->
<%--隐藏注释 当前时间为:<%=(new java.util.Date().toInstant())%>--%>

在这里插入图片描述
隐藏注释被隐藏了

page指令

基本格式:<%@page 的属性%>

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

可以去别人总结的page指令里面看看 一共13个

错误页的设置

  • 当一个页面出错后,会自动跳转到一个页面上进行错误信息的提示,实现这个操作可以通过错误页来指定

错误页设置

  1. 指定错误出现时的跳转页
  2. 错误处理页必须有明确的标识,通过isErrorPage属性指定(true)

show.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp"%>
<%--一旦出现错误跳转到error.jsp--%>
<html>
<head>
    <title>Page指令</title>
</head>
<body>
<%!
 int result=10/0;
%>
</body>
</html>

error.jsp

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>抱歉程序有错误 我们会尽快修复,这是跳转的errorPage</h1>
</body>
</html>

在这里插入图片描述

  • 注意的是这里页面内容变了但地址栏还是 show.jsp,这样的跳转叫服务器端跳转。
  • 与之对应的是客户端跳转,页面内容和地址栏都会变
  • 以上错误页是在每一个JSP页面中指定的,当然也可以在整个虚拟目录中指定全局的错误处理,要想达到这个效果(全局),就要修改web.xml文件,在其中加入错误页操作
  • 全局的错误处理主要两种错误,HTTP代码错误,404,500;或者是异常错误,NullPointerException,空指针异常等
    -在这里插入图片描述
    在web.xml中加入
<error-page>
        <error-code>404</error-code>
        <location>/error.jsp</location>
    </error-page>

这行代码,即使show.jsp中没有指示errorPage 也可以跳转,亲测有效

包含指令

静态包含指令

格式:<%@ include file=filename%>

  • 静态包含是指这个被包含的文件将被插入到JSP文件中<%@ include%>所在的地方,然后由JSP统一编译
    jsp_demo.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%String a="baby";%>
<%=a%>
<%@ include file="jsp_demo_include.jsp"%>
</body>
</html>

jsp_demo_include.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String b="I like you";
%>
<%=b%>
</body>
</html>

动态包含指令

格式:<jsp:include page=filename flush=true|false/>或
<jsp:include page=filename flush=true|false>
</jsp:include>

  • <jsp:include> 动作标签的作用是让当前jsp页面动态地包含一个文件,即jsp页面运行时才将包含的文件加入;
  • 静态包含与动态包含的区别
  • 静态包含:是指这个被包含的文件被插入到JSP文件中<%@include%>所在的地方,然后由JSP统一编译执行,
  • 动态包含:在JSP编译JSP页面时,并不把JSP页面中包含的文件合并到JSP页面上来,而是由JSP容器单独编译执行这个文件,然后将执行结果包含到JSP页面,page用来指定包含文件,flush指示在读入包含文件之前是否清空现有的缓冲区
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%String a="baby";%>
<%=a%>
<p>静态包含</p>
<%@ include file="jsp_demo_include.jsp"%>
<br>
<p>动态包含</p>
<jsp:include page="jsp_demo_include.jsp" flush="true"></jsp:include>
</body>
</html>

在这里插入图片描述

跳转指令

格式:<jsp:forward page=url|“表达式”/>或
<jsp:forward page=url|“表达式”><jsp:param name=paramName value=paramValue>…</jsp:forward>

  • <jsp:forward>动作标签的作用是根据客户端请求从一个JSP文件转发到另外一个文件,该文件可以是JSP,Servlet 或者静态资源文件。
  • <jsp:param name=paramName value=paramValue> name指定传递的参数名,value指定参数值。参数可以是一个或多个,这时候目标必须是动态文件。
    动态传参说没有getParameter()方法 ,静态是可以的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值