jsp技术-01

本文详细介绍了jsp的基础知识,包括jsp的定义、执行顺序,以及jsp的注释、声明、表达式、指令和动作的使用。通过实例展示了jsp:include、jsp:param和jsp:forward等常见操作,帮助读者理解jsp在web开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp学习笔记01

虽然说现在大部分公司都开始使用前后端分离技术来开发自己的web系统,但是现在也不排除一些公司的老系统还是使用jsp+Servlet+html+css+JavaScript+spring+SpringMVC+mybatis等这些技术开发的,所以从今天开始来系统的记录一些jsp一些技术点和实战应用。

1、jsp是什么

jsp(java Servlet pages)是由html和嵌入java代码组成的服务端动态页面编写的脚本技术。简单说就是由一个HTML页面,里面使用jsp的标签,然后在jsp标签中可以写java代码。
jsp的执行顺序
在这里插入图片描述
客户端向web服务器发送请求,jsp引擎将jsp页面转化成Servlet,然后有jvm编译生成.class类文件,然后把类文件放到内存中执行,最后由服务器将结果返回给客户端。
现在开始实操
所有的jsp语法都是基于maven项目构建的,部署在本地的Tomcat web服务器中运行
工程的目录结构为:
在这里插入图片描述

2、jsp语法

2.1 jsp注释

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!</h2>
<div>
    <!--html注释,可以在浏览器中看到-->
    <h1>html注释</h1>
</div>
<%--jsp注释,该注释不会在浏览器中看到--%>
</body>
</html>

在这里插入图片描述

2.2 jsp声明

<%! 定义公共的变量、方法、类%>类似于java类中公共的变量和方法,在当前的jsp页面的任何地方都可以调用,声明的结尾和java一样都是使用“;”
注意:在导入<%@ taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c”%>这个的时候需要在maven工程中加入如下依赖

<!--j2ee相关包 servlet、jsp、jstl-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: 23746
  Date: 2021/1/7
  Time: 16:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>jsp声明变量</title>
</head>
<body>
<%!
    int a=1;
    int b=3;
    String name="jsp";
    Date date=new Date();
%>
<%!
    int add(int a,int b){
      int rest=0;
      rest=a+b;
      return rest;
    };
%>

<div>
    <%
       out.println("a="+a);
       out.println("b="+b);
       out.println("name="+name);
       out.println(add(10,20));
    %>
</div>
</body>
</html>

在这里插入图片描述

2.3 jsp表达式

<%=变量或者表达式%>:将动态信息显示在页面中

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>jsp表达式</title>
</head>
<body>
<%!
    int a=10;
%>
当前时间为:</br>
<%=new Date()%></br>
<%="a="+a%>
</body>
</html>

在这里插入图片描述

2.4 jsp指令

<%@page attribute1=“value1” […attribute2=“value n”]%>:page指令用来设置jsp页面的属性和相关功能。
page指令常用属性:language、import、pageEncoding,
其中在每个jsp页面中都要设置language,一般都是java,简单说就是在jsp页面加上==<%@ page language=“java” contentType=“text/html; charset=utf-8” pageEncoding=“utf-8”%>==就行了。import声明需要导入的包
其它不常用的指令如下:
在这里插入图片描述
<%@include file=“URL”%>:在标签插入的位置插入静态文件:可以是html、jsp、js等文件,然后与当前的jsp页面组合成新的jsp页面。好处:页面代码复用、维护方便。
include.jsp

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>include jsp</title>
</head>
<body>
<div align="center">jsp include指令演示</div>
<%@include file="copyRight.jsp"%>
</body>
</html>

copyRight.jsp

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>include</title>
</head>
<body>
<%
    Date date=new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String format = simpleDateFormat.format(date);
%>
<%="wen @copyRight "+format %>
</body>
</html>

<%@ taglib uri=“自定义标签库存放的位置” prefix=“区分不同标签库的标签名,在页面中引用的标签也是以prefix开头的”%>
例如:在jsp页面中引入JSTL标签库<%@ taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c”%>
注意:如果要在jsp页面中写EL表达式,需要在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL。格式为:
<%@ page isELIgnored="true|false"%>
如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ page isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>jsp taglib标签</title>
</head>
<body>
  <table>
      <tr>
          <td>输出值</td>
      </tr>
      <c:forEach begin="1" end="10" var="num">
          <tr>
              <td>
                  <c:out value="${num}"></c:out>
              </td>
          </tr>
      </c:forEach>
  </table>
</body>
</html>

在这里插入图片描述

2.5 jsp动作

jsp主要有如下10种这些动作
在这里插入图片描述
其中jsp:include,jsp:param、jsp:forward使用较多,下面主要介绍这3种

  1. jsp:include
    语法:<jsp:include page=“relative URL” flush=“true”>。flush属性用于指定输出缓存是否转移到被导入文件中,true则包含在被导入文件中,false则包含在源文件中。说白了该jsp标签与include标签类似都是引入文件到该jsp页面,不同的是在include指令中,导入文件和当前页面一块编译成一个Servlet类文件,而jsp:include动作包含的文件和当前jsp页面会被编译成2个Servlet文件,jsp:include在效率上要稍微慢一些。
<%@ page import="java.util.*" isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>jsp:include</title>
</head>
<body>
<div align="center">jsp:include指令演示</div>
<%@include file="copyRight.jsp"%>
</body>
</html>

copyRight.jsp还是上文写过的代码

2.jsp:param
语法:<jsp:param name=“参数名称” value=“参数值”>
作用:用来传递参数信息,经常与jsp:forword、jsp:include结合一起使用,传递主页面的参数值到目标页面。
在这里插入图片描述
jsp:param结合jsp:include使用

<%@ page import="java.util.*" isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%--设定页面传递参数的编码格式,所有页面的编码格式要统一--%>
<%request.setCharacterEncoding("utf-8");%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>jsp:param</title>
</head>
<body>
   <h1>主页面</h1>
<jsp:include page="subPage.jsp">
   <jsp:param name="username" value="aaaa"></jsp:param>
</jsp:include>
</body>
</html>

subPage.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>subPage</title>
</head>
<body>
<%
   String username=request.getParameter("username");
%>
<%="username="+username%>
</body>
</html>

在这里插入图片描述

jsp:param结合jsp:forward使用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>主页面2</title>
</head>
<body>
<h1>主页面2</h1>
<jsp:forward page="subPage1.jsp">
  <jsp:param name="password" value="1111"></jsp:param>
</jsp:forward>
</body>
</html>

subPage1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>subPage1</title>
</head>
<body>
<%
  String password=request.getParameter("password");
%>
<%="password="+password%>
</body>
</html>

在这里插入图片描述

3.jsp:forward
语法:<jsp:forward page=“relative URL”>
作用:转发请求到另外一个页面,连同请求的参数数据也会一起被转发到目标页面中,目标页面通过request.getParameter方法获得参数值
注意:进行页面跳转时请求的地址不会发送改变,动作中的url页面只能是该Web应用中的文件。
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp:forward动作</title>
</head>
<body>
<%
    String url="";
    int random=(int)(Math.random()*10);
    int m=random%2;
    switch (m){
        case 0:
            url="event.jsp";
            break;
        case 1:
            url="old.jsp";
            break;
    }
%>
<jsp:forward page="<%=url%>"></jsp:forward>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>奇数jsp页面</title>
</head>
<body>
奇数跳转页面
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>event.jsp</title>
</head>
<body>
偶数跳转界面
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值