Java Web入门之JSP的基本语法解析及实战(超详细 附源码)

简介: Java Web入门之JSP的基本语法解析及实战(超详细 附源码)

JSP页面是指扩展名为.JSP的文件


在一个JSP页面中 可以包括指令标识 HTML代码 JavaScript代码 嵌入的JAVA代码 注释和JSP动作标识等内容。


下面实例编写了一个JSP页面 显示当前时间

1666436146639.jpg

代码如下 配置环境为Eclipse 如不懂怎么配置的可以参考我这篇博客JAVA Web环境配置


1:指令标识


指令标识主要用于设定整个JSP页面范围内都有效的相关信息 它是被服务器解释并且执行的 会产生任何内容输出到网页中 语法如下


<%@ 指令名 属性1="属性值1" ...%>


指令名 包括page include taglib三条指令


1.1:page指令


page是JSP页面最常用的指令 用于定义整个JSP页面的相关属性 这些属性在JSP中被服务器解析成Servlet时会转换为相应的Java程序代码 语法如下


<%@ page attr1="value1" attr2="value2"...%> 常用属性如下


language 设置JSP页面使用语言 目前只支持JAVA

%@ page language="java"


import 导入类包

  <%@page import="java.util.Date" %>


pageEncoding 定义JSP页面的编码格式 GB18030支持中文

pageEncoding="GB18030"%>


contentType 设置JSP页面的MIME类型和字符编码 浏览器会据此显示网页内容

contentType="text/html;


2:include指令


文件包含指令include时JSP的另一条指令标识 通过该指令可以在一个JSP页面中包含另一个JSP页面。 语法如下

<%@ include file="path"%>


该指令只有file一个属性 指定要包含文件的路径 可以是相对路径也可以是绝对路径


实战效果如下 本质上有点类似于调用了其他JSP文件的内容

1666436384404.jpg

代码如下 总共有三个JSP文件

<%@ page pageEncoding="GB18030"%>
<img src="玫瑰少年.jpg">
<%String manager="张三";%>
管理员:<%=manager%>
<%=24+34%>
<body>
<%
String str="";
for(int i=1;i<=9;i++){
  for(int j=1;j<=i;j++){
  str+=j+"*"+i+"="+j*i;
  str+="&nbsp;";
  }
  str+="<br>";
}
%>
<table width="440" height="85" border="1" cellpadding="0" cellspacing="0" 
style="font:9pt;" bordercolordark="#666666" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF">
<tr>
<td height="30" align="center"> 九九乘法表</td>
</tr>
<tr>
<td style="padding:3pt">
<%=str %>
</td>
</tr>
</table>
</body>
<%@ page 
    pageEncoding="GB18030"%>
<%
String copyright="&nbsp;All Copyright &copy; 2022 华南理工大学";
%>
<table width="778" height="61" border="0" cellpadding="0"
cellspacing="0" background="JavaScript-logo.png">
  <tr>
    <td><%=copyright %></td>
  </tr>
</table>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB18030">
<title>使用文件包含include指令</title>
</head>
<body>
<body style="margin:0px">
<%@ include file="top.jsp" %>
<table width="781" height="279" border="0" cellpadding="0" cellspacing="0" background="C:\Users\Admin\Desktop\玫瑰少年.jpg">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<%@ include file="copyright.jsp" %>
</body>
</html>


3:taglib指令


在JSP文件中 可以通过taglib指令标识声明该页面中所使用的标签库 同时引用标签库 并指定标签的前缀 在页面中引用标签库 就可以通过前缀来引用标签库中的标签 语法如下


<%@ taglib prefix="tagPrefix" url="tagURL"%>


4:脚本标识


在JSP页面中 脚本标识使用得最为频繁 因为他们能够方便 灵活地生成页面中得动态内容 特别Scriptlet脚本程序 包括三部分 JSP表达式 声明标识 脚本程序


4.1:JSP表达式


JSP表达式用于向页面中输出信息 语法如下

<%=表达式%>


表达式可以是任意JAVA 语言的完整表达式 该表达式的最终运算结果被转换为字符串


使用JSP在页面中输出信息 代码如下

<%String manager="张三";%>
管理员:<%=manager%>
<%=24+34%>


4.2:声明标识


声明标识用于在JSP页面中定义全局的变量或方法 通过声明标识定义的变量和方法可以被整个JSP页面访问 所以通常使用该标识定义整个JSP页面需要引用的变量或方法 语法如下


<%! 声明变量或方法的代码%>

<%!
int number=0;
int count(){
  number++;
  return number;
}
%>

4.3:代码片段


所谓代码片段 就是在JSP页面中嵌入的JAVA代码或是脚本代码 代码片段在也页面请求的处理期间被执行 语法如下

<%java代码或是脚本代码%>


以下是通过代码片段和JSP表达式在JSP页面中输出九九乘法表

<body>
<%
String str="";
for(int i=1;i<=9;i++){
  for(int j=1;j<=i;j++){
  str+=j+"*"+i+"="+j*i;
  str+="&nbsp;";
  }
  str+="<br>";
}
%>
<%!
int number=0;
int count(){
  number++;
  return number;
}
%>
<table width="440" height="85" border="1" cellpadding="0" cellspacing="0" 
style="font:9pt;" bordercolordark="#666666" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF">
<tr>
<td height="30" align="center"> 九九乘法表</td>
</tr>
<tr>
<td style="padding:3pt">
<%=str %>
</td>
</tr>
</table>
</body>


5:JSP注释


JSP注释与JAVA和C++比较相似


单行注释//


多行注释/*  */


提示文档注释/**            */


隐藏注释 在文档中添加的注释在查看HTML源码时是可以看到的 这样不太安全 JSP提供一种隐藏注释 这样在浏览器中看不到 在查看HTML源代码时也看不到 语法如下


<%--注释内容--%> 效果如下

1666436586508.jpg

代码如下 要注意代码中两行隐藏的注释没有显示出来


<%--显示用户信息开始 --%>
用户名:玫瑰少年<br>
部门: JAVA Web部门<br>
权限: 系统管理员
<%--显示用户信息结束 --%>

6:动作标识


6.1:包含文件标识<jsp:include>


其作用跟前面讲的include比较相似 都是向当前页面包含其他的文件 语法如下


<jsp:include page="url" flush="false/true"/>

其与include区别有以下几点


1:include通过file属性指定被包含的文件 且不支持任何表达式 <jsp:include>的属性明显更多 更加灵活


2:使用include指令时 被包含文件的内容会原封不动的插入到包含页中 然后JSP编译器将合成后的文件最终编译成一个JAVA 文件 使用<jsp:include>包含文件时,程序会将请求转发到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页,继续执行后面的代码 然后JSP编译器在分别编译


3:在应用include时 变量或方法不能重名  因为他们最终是一个文件 而使用<jsp:include>时因为每个文件时单独编译的  所以可以重名


6.2:请求转发标识<jsp:forward>


通过转发标识可以将请求转发到其他的web资源 例如另一个JSP页面 HTML页面等等 当前页面不再被执行 而去执行该标识指定的目标页面 语法如下

<jsp:forward page="url"/>


效果如下 分为两个JSP文件

1666436673583.jpg

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<head>
<meta  http-equiv="Content-Type" content="text/html;charset=GB18030">
<title>中转页</title>
</head>
<body>
<jsp:forward page="login.jsp"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>用户登录</title>
</head>
<body>
<form name="form1" method="post" action="">
用户名:<input name="name" type="text" id="name" style="width:120px"><br>
密&nbsp;&nbsp;码:<input name="pwd" type="password" id="pwd" style="width: 120px"><br>
<br>
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>


7:传递参数标识<jsp:param>


该标识可以作为其他标识的子表示 用于为其他标识传递参数 语法如下

<jsp:param name="参数名" value="参数值"/>


代码如下

在实现请求转发的同时 传递了参数userid 其参数值为7

<jsp:forward page="modify.jsp">
 <jsp:param name="userid" value="7"/>
</jsp:forward>


创作不易觉得有帮助请点赞关注收藏~~~



相关文章
|
2天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
40 2
|
4天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
8 0
|
4天前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
6 0
|
4天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
15 1
|
5天前
|
Java
解析java中的数组
解析java中的数组
12 3
|
3天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
15 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
1月前
|
Java
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
21 0
|
3天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
14 5
|
3天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
12 1
|
3天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
12 2