JavaWeb | JSP基本语法

1.JSP

  • JSP (Java Server Pages)将 动态代码 嵌入到 静态的HTML 中,从而产生动态的输出
  • JSP运行于服务器端,能够对客户端展现内容,JSP属于 动态网页
  • Java代码可以访问数据库,因此在HTML页面中混合java代码就能让网页拥有动态的能力
    嵌入了“Java代码”的“网页就是JSP

2.JSP注释

  • 注释是代码不可或缺的重要组成部分,JSP注释可以分成以下两个部分 / 两大类

  • 一类是: 能发送给客户端的,可以在源代码中展示出其内容的,是属于HTML注释

    <!-- HTML注释内容 --> 
    ps: 其为html注释,客户端能看到HTML注释中的内容
    
  • 另一类是: 不能发送给客户端 的, 也就是说客户端的源代码文件中不会展示“注释的内容”,仅供给程序员阅读。该注释分为

    JSP注释 Java注释

    <%-- JSP注释内容 --%>
    ps: 其为JSP注释,客户端看不到注释的内容
    
    <%
       out.print("欢迎来到本系统"); //Java单行注释
         /*
           Java多行注释
         */
    %>
    ps: 其为Java注释,客户端看不到注释的内容
    

3.JSP 和 HTML有什么区别?

  • HTML页面是静态页面,也就是事先由用户写好放在服务器上,由web服务器客户端发送
    HTML中敲的代码用户都能看到)
  • JSP页面JSP容器执行该页面的Java代码部分,然后生成实时HTML的页面,也就是说它是“服务器端动态页面”。(在客户端源代码中是 看不到Java代码 的)

4.JavaScript (JS) 和 JSP有什么区别?

  • JavaScript 源代码是“服务器发送到“客户端”,由客户端执行,因此在客户端可以看到JavaScript代码
    (客户端看到所有的代码)

  • JSP 是由JSP容器执行该页面的Java代码部分,然后生成实时的HTML页面,在客户端源代码中是 看不到Java代码 的。

5.JSP表达式

  • JSP表达式 : 用于定义JSP一些输出。可理解为输出语句

  • JSP表达式的作用 : 将里面的内容所 运算的结果输出到客户端

  • JSP表达式的语法 : <%= 变量/返回值/表达式 %>
    ps : 等价于 <% out.println(变量) %>

  • 使用JSP表达式的注意事项

    ① 使用JSP表达式不能用 ; 结束

    ② 使用JSP表达式不能出现多条语句

    JSP表达式中内容一定是字符串类型的,或者可以通过toString()函数来将其转换为字符串类型

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>JSP表达式 : 输出内容到客户端</title>
    </head>
    <body>
    <%
        int i = 123;
        double d = 13.14;
    %>
    <br>
    <%--
    使用JSP表达式来在将结果输出到客户端中,即将该变量的内容展示在页面上。
    --%>
    <%= i %>
    <%= d %>
    </body>
    </html>
    

6.JSP程序段

  • 前面的内容已经提到表达式只能单行出现,而仅仅也只是将其中的运行结果输出到客户端如果需要在JSP程序输出数据又实现定义变量一系列复杂的逻辑操作JSP表达式不能满足需求的,这时候需要用 JSP程序段

  • JSP程序段 : 插入到 JSP程序 中的 Java代码。在网页的任何地方都可以插入JSP程序段,在程序段中可以加入任意的Java 代码。

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>JSP程序段例子1</title>
    </head>
    <body>
    <%-- 使用for循环输出10个欢迎信息 --%>
    <%
        for (int i = 1; i <= 10; i++) {
            out.print("欢迎来到本系统<br>");
        }
    %>
        
    <%--
    注意: 不能再JSP程序段中定义函数
    --%>
    </body>
    </html>
    
  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>JSP程序段例子2</title>
    </head>
    <body>
    <%--
    该JSP页面中中混合了“JSP程序段”、“JSP表达式”和HTML代码
    --%>
    <%
        for (int i = 1; i <= 10; i++) {
    %>
    <%= i%>:欢迎来到本系统<br>
    <%
        }
    %>
    </body>
    </html>
    

7.JSP声明

  • JSP程序段中的 变量必须先定义再使用。例如,以下代码会报错,可声明 全局变量,防止此类报错。

    <%
        //此处会报错,因为得先声明才能使用 
        //使用全局声明,可以防止因为位置先后顺序而导致的报错
        out.println(str);
        String str = "欢迎";
    %>
    
  • JSP声明声明的变量全局变量这些变量在JSP页面中的任意地方都能使用

  • 在实际应用中,方法页面全局甚至类的声明都可以放在JSP声明部分 其使用方法如下:

  • JSP声明语法 : <%! 代码 %>

  • JSP声明 中只能用作定义不能实现控制逻辑(如果不能在其中输出语句、输出内容)。

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>JSP声明(声明全局变量等)</title>
    </head>
    <body>
    <%
        out.println(str);
    %>
    
    <%-- 在JSP声明中声明变量,同时JSP声明不受限制的,在JSP页面的任何地方使用其中定义的变量 --%>
    <%! String str = "欢迎"; %>
    
    <%-- JSP声明中只能用作定义,不能实现控制逻辑(如果不能在其中输出语句、输出内容)--%>
    </body>
    </html>
    

8.URL传值

  • HTTP无状态的协议web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知得知该页面的值,可通过 url传值

  • 可通过 url进行页面跳转,在 url携带传给指定页面参数

  • URL传值的格式 : URL?参数名1=参数值1&参数名2=参数值2&…

  • 获得url传递的参数 : request.getParameter(“参数名”);

  • one.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>URL传值 one.jsp</title>
    </head>
    <body>
    <a href="two.jsp?name='张三'&age='23'">跳转到two.jsp,且在url上有携带的值</a>
    </body>
    </html>
    
    
  • two.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>two.jsp</title>
    </head>
    <body>
    <%
        //获得url上携带参数
        String name = request.getParameter("name");
        String age = request.getParameter("age");
    %>
    </body>
    </html>
    
    
  • urlp1.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>urlP1.jsp</title>
    </head>
    <body>
    <%-- 以下的这些代码为JSP程序段,JSP程序段中能写Java代码 --%>
    <%
        //定义一个变量
        String str = "12";
        //将该变量转换为int类型
        int number = Integer.parseInt(str);
        String name = "张三";
    %>
    <%-- 用JSP表达式 来页面上输出/展示数据 --%>
    该数字的平方为: <%= number*number %>
    
    <%-- 使用url传参向urlP2.jsp页面传值 --%>
    <a href="/书本上代码和知识点/第四章/URL/urlP2.jsp?number=<%= number %>&name=<%= name %>">到达p2</a>
    
    <%-- 这顿代码的关键是: 通过url传值,把想要传递的值传给下一个页面--%>
    </body>
    </html>
    
    
  • urlp2.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>urlP2.jsp</title>
    </head>
    <body>
    <%-- 获得urlP1.jsp页面中传来的参数的内容 --%>
    <%
        //获得number (获取url传递的参数的值)
        String str = request.getParameter("number");
        int number = Integer.parseInt(str); //将String类型数据转换为int类型
        String name = request.getParameter("name");
    %>
    <%-- 结合html + JSP表达式 来在页面上输出“该数字的立方”--%>
    该数字的立方为: <%= number * number *number%><hr>
    姓名为:  <%= name %><hr>
    </body>
    </html>
    
    

9.JSP指令

JSP指令告诉JSP引擎JSP页面如何编译,不包括控制逻辑,不会产生任何其他可见的输出。

JSP指令 语法属性名大小写敏感的。

JSP指令的语法 : <%@ 指令类型 属性1=“属性值1” … 属性n="属性值n>

JSP包含3个指令: ①page指令 ②include指令 ③tablib指令 ,使用最多的是page指令include指令

9.1Page指令的作用

在通常情况下,JSP程序 都是以 page指令开头 的。page指令用来设定页面的属性相关功能,用户可以利用其进行导入需要的类指明JSP输出内容的类型指定处理异常的错误页面等操作。

导入包
<%@ page contentType="text/html;charset=gb2312" language="java" %>

<%-- 用JSP指令导入包 --%>
<%@page import="java.util.Date" %>
<html>
<head>
    <title>Page指定导入包</title>
</head>
<body>
你的登录时间为:<%= new Date()%>
</body>
</html>

设定字符集
<%@ page contentType="编码类型" %>
<%@ page contentType="text/html;charset=gb2312" %>

设定错误页面
  • 在网页中经常由于用户输入造成异常。在一般情况下会将异常现象在一个统一的网页中显示。这时要用到errorPageisErrorPage属性

    pageTest.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%-- 该页面报错试时,展示的错误页面 --%>
<%-- 该JSP页面出现异常时会跳转到anErrorPage.jsp 页面 --%>
<%@ page errorPage= "anErrorPage.jsp"%>
<html>
<head>
 <title>Page指令作用 : 指定错误页面</title>
</head>
<body>
<% //此页面如果发生异常会向anErrorPage.jsp页面抛出异常,让其处理
 int num1 = 10;
 int num2 = 0;
 int num3 = num1 / num2;
 //此处会报错,有异常就跳转到anErrorPage.jsp,给客户展示一个错误页面。
%>
</body>
</html>

pageTest_error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
 <title>pageTest2_error.jsp指令</title>
</head>
<body>
<%
 //此页面会处理pageTest.jsp抛出异常
 //友好的显示错误信息
 out.print("网页出现数学运行异常!");
%>
</body>
</html>

设定MIME类型和字符编码

设置MIME类型字符编码用户可以用contentType来设置MIME类型可选字符编码

<%@ page contentType="MIME类型;charset= 字符编码"  %>
<%@ page contentType="text/html;charset=UTF-8" %>

9.2include指令

  • 在实际开发案例中,每一个项目中每一个页面底下需要显示公司的地址和图标信息,不可能说每一个页面都编写一个次显示该信息的代码。为了代码的重用可以用 include 指令来解决。使用include指令可以在JSP程序中插入多个外部文件(插入外部文件,这些文件可以是JSPHTMLJava程序,甚至是文本

  • include指令语法 : <%@ include file=“文件名” %>
    (file:必要属性,用于指定包含哪个文件,可多次使用include指令到导入文件、程序等)

  • includeTest.jsp

    <%-- 使用JSP中的 include指令来导入其他文件、代码等--%>
    <%@ include file="info.jsp" %>
    
    
  • info.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>第四章 include指令 info.jsp</title>
    </head>
    <body>
    <center>
        公司电话号码:010-89574895,欢迎来电!
    </center>
    </body>
    </html>
    
    

9.3taglib指令

10.JSP动作

  • JSP动作 使用 XML语法 格式来控制服务器的行为

  • JSP动作语法 : <jsp:动作名 属性1=“属性值1” … 属性n=“属性值n” /> 或者
    <jsp:动作名 属性1=“属性值1” … 属性n=“属性值n”> 相关内容 </jsp:动作名>

  • JSP动作如下:
    jsp:include 表示当前页面被请求的时候引入了一个文件
    jsp:forward 表示将请求转到另一个页面
    jsp:useBean 表示获得JavaBean的一个实例
    jsp:setProperty 表示设置JavaBean的属性
    jsp:getProperty 表示获取JavaBean的属性
    jsp:plugin 表示根据浏览器的类型为Java插件生成OBJECT或EMBED两种标记。

  • 使用include动作来导入内容

    <%--
    下面为JSP动作中的 include动作的例子
    --%>
    <jsp:include page="文件名"/>
    
    

jspForwardTest.jsp (使用forward动作来“请求转发”)

<%--
下面为JSP动作中的 forward动作的例子
--%>
<jsp:forward page="pageTest1.jsp"/>

pageTest1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>第四章 forward动作 pageTest1.jsp</title>
</head>
<body>
成功在在原页面通过forward动作跳转到该页面了.....
</body>
</html>

11.include动作 和 include指令的区别

include动作include指令 的区别 :
include动作和 include指令的作用差不多 : 在一个页面中导入另一个页面/代码。但两者的语法有差异

  • 40
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值