Java-html篇——JSP

文章结构概览
目录

JavaWeb简介

  1. 什么是Web应用程序

    Web应用程序是一种可以通过Web访问的应用程序

  2. 静态页面与动态页面

    静态页面:网页中的内容固定,不会更新
    动态网页:网页中的内容通过程序动态显示,自动更新。(HTML、CSS、数据库技术、js、xml、JSP、Asp.net、Php)

  3. 搭建Java Web开发环境

    1. 下载tomcat
      官方下载地址:https://tomcat.apache.org/download-70.cgi
      我下载的是apache-tomcat-7.0.104版本

    2. 启动tomcat

      开启tomcat服务器:双击安装tomcat所在的目录D:\apache-tomcat-7.0.104\bin\startup.bat

      关闭tomcat服务器:双击安装tomcat所在的目录D:\apache-tomcat-7.0.104\bin\shutdown.bat,

    3. 启动startup.bat
      遇到问题:双击startup.bat出现闪退
      解决方案:
      ① tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME 与JAVA_HOME的信息,CATALINA_HOME即tomcat的主目录,JAVA_HOME即java安装的主目录,jdk的主目录。
      ② 首先,要在环境变量处,配置JAVA_HOME,然后,如果这样配置,startup.bat还是一闪而过,可以右键点击startup.bat,编辑,在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口不会再一闪而过,而是停留在桌面上(调试成功,把pause去掉即可)。

      参考“双击startup.bat出现闪退”文章。

      出现闪退的原因有多个:

      1. 端口被占用 。
        “任务栏”右键单击选择“任务管理器”,点击“详细信息”,PID列为端口列,查看8080端口是否被占用,如果被占用,将占用的进程关闭,再去点击startup.bat。看是否仍然闪退。点击PID可以排序就可以方便的找到8080了,如果没有找到8080,那就说明端口并没有被占用。
      2. 将startup.bat进行编辑,在文件内容的开头加入如下内容,具体根据自己安装的位置来确定。文章的末尾加入“pause",目的是为了让文件中的代码执行了不立刻退出。修改好了之后保存,如果没有出现错误代码,那问题就解决了,把"pause"去掉,在浏览器的地址栏中输入“http://localhost:8080”,会出现一个有小猫的界面。
      3. 开始是Java10,最后卸载了重新安装的jdk1.8。我的问题是jdk的环境变量设置问题。
    4. Tomcat服务器的目录结构
      Tomcat服务器的目录结构

  4. 使用MyEclipse手工编写第一个Web应用程序
    步骤:
    ①在WebApps创建项目目录–>②编写index.jsp–>③创建WEB-INF目录–>④测试运行

    其中:WEB-INF目录中有 classes文件夹用于储存编译生成的字节码文件 lib目录用于编译要用到的jar包
    WEB-INF目录
    WEB-INF目录详解
    WEB-INF目录详解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. MyEclipse配置

    1). MyEclipse配置JRE
    MyEclipse配置JRE
    2). MyEclipse集成Tomcat服务器
    MyEclipse集成Tomcat服务器
    把创建的项目的jdk改成自定义的jdk(我使用的版本是jdk1.8)
    在这里插入图片描述
    在这里插入图片描述

    3). 理解MyEclipse Web项目目录结构
    MyEclipse Web项目目录结构
    4). 理解Web项目虚拟路径
    理解Web项目虚拟路径
    虚拟路径修改之后项目名称会改变 我这里没有修改虚拟路径 所以项目名称没变
    在这里插入图片描述

  6. 使用Eclipse编写第一个Web应用程序

我这里使用的是dark主题 所以eclipse是黑色的 有点难看。。。
在这里插入图片描述
在这里插入图片描述
之后,发布并启动服务器

  1. 修改Tomcat默认端口

    修改tomcat目录下 conf/server.xml文件
    在这里插入图片描述

JSP基础语法

JSP:java server page,与servlet一样,在服务器端执行
Jsp:Java平台,安全性高,适合开发大型的,企业级的Web应用程序。
Asp.net:.Net平台,安全性以及跨平台性差
Php:简单,高效,成本低开发周期短,适合中小型企业的Web应用开发。
LAMP:Linux + Apache + MySQL + PHP

Jsp页面元素构成

  1. 注释
 	<!-- HTML注释 客户端不可见 -->
    <%-- JSP注释   客户端不可见 --%>
    <% 
    //单行注释
    /*多行注释*/
    %>
  1. 静态内容
    直接写入的信息
  2. 指令
    <%@ page language=“java” import=“java.util.*” contentType=“text/html; charset=utf-8”%>

pagez指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令
include指令:将一个额外补文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句
taglib指令:使用标签库定义新的自定义标签,在JSP页面中启用定制行为

在这里插入图片描述
Jsp指令

  • isErrorPage:标识当前也是是否是错误页面。
    * true:是,可以使用内置对象exception
    * false:否。默认值。不可以使用内置对象exception
  1. 表达式
    在JSP页面中执行的表达式
    语法:<%= 表达式 %> //注意:表达式不以分号结束
    例:
    你好,<%=s %>
    x+y=<%=add(10,5) %>
  2. 小脚本
    在JSP页面中执行的java代码
    语法:<% Java代码 %>
    例:<% out.println(“大家好,我是java!”); %>
  3. 声明
    在JSP页面中定义变量或者方法
    语法:<%! Java代码 %>
    例:
    <%!
    String s=“candy”; //声明了一个字符串变量
    int add(int x,int y){//声明了一个返回整型的函数,实现两个整数的求和
    return x+y;
    }
    %>

Jsp的生命周期

在这里插入图片描述
Jsp生命周期:

jspService()方法被调用来处理客户端的请求。对每一个请求, JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应-个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以响应是非常快的。

JSP内置对象

  1. 内置对象简介
    内置对象
    • 在jsp页面中不需要创建,直接使用的对象
    • 一共有9个:
      变量名 真实类型 作用
      • pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
      • request HttpServletRequest 一次请求访问的多个资源(转发)
      • session HttpSession 一次会话的多个请求间
      • application ServletContext 所有用户间共享数据
      • response HttpServletResponse 响应对象
      • page Object 当前页面(Servlet)的对象 this
      • out JspWriter 输出对象,数据输出到页面上
      • config ServletConfig Servlet的配置对象
      • exception Throwable 异常对象

JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象。

<%
int[] value = {
    
    60,70,80};
	for(int i:value){
    
    
	out.println(i);
}
%>

在这里插入图片描述
什么是缓冲区

缓冲区:Buffer,所谓缓冲
区就是内存的一块区域用来保存临时数据。
  1. 四种作用域范围
    Application:4 Session:3 Request:2 Page:1
    四种作用域范围
  2. out
    out对象是JspWriter类的实例,是客户端输出内容常用的对象
    out对象
  3. request/response

request在这里插入图片描述

例子:
request.jsp
在这里插入图片描述
reg.jsp
在这里插入图片描述
在这里插入图片描述
request对象实例:
源码:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <h1>request内置对象</h1>
    <% 
       request.setCharacterEncoding("utf-8"); //解决中文乱码问题,无法解决URL传递中文出现的乱码问题。
       request.setAttribute("password", "123456");
    
    %>
        用户名:<%=request.getParameter("username") %><br>   
        爱好 :<% 
           if(request.getParameterValues("favorite")!=null)
           {
    
    
	           String[] favorites = request.getParameterValues("favorite");
	           for(int i=0;i<favorites.length;i++)
	           {
    
    
	              out.println(favorites[i]+"&nbsp;&nbsp;");
	           }
	        }
        %> <br>
         密码:<%=request.getAttribute("password") %><br> 
         请求体的MIME类型:<%=request.getContentType() %><br>
         协议类型及版本号:  <%=request.getProtocol() %><br>
         服务器主机名 :<%=request.getServerName() %><br>
         服务器端口号:<%=request.getServerPort() %><BR>
         请求文件的长度 :<%=request.getContentLength() %><BR>
         请求客户端的IP地址:<%=request.getRemoteAddr() %><BR>
         请求的真实路径:<%=request.getRealPath("request.jsp") %><br>
         请求的上下文路径:<%=request.getContextPath() %><BR>         
                 
         
                   
  </body>
</html>

在这里插入图片描述
response
在这里插入图片描述
例子:
在这里插入图片描述
outer对象总是在最上面打印输出 但是当你强制清空缓冲区时out.flush(),可以把内置对象显示在前面

(1)get与post区别
get与post区别
(2)请求重定向与请求转发的区别
在这里插入图片描述
例子:
重定向: 你先去了A局,A局的人说:“这个事不归我们管 ,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发: 你去了A局, A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿, 自己到后面办公室联系了B的人,让他们办好后,送了过来。

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>
<%
    response.setContentType("text/html;charset=utf-8"); //设置响应的MIMI类型
    
    out.println("<h1>response内置对象</h1>");
    out.println("<hr>");
    //out.flush();
    
    PrintWriter outer = response.getWriter(); //获得输出流对象
    outer.println("大家好,我是response对象生成的输出流outer对象");
    //response.sendRedirect("reg.jsp");//请求重定向
    //请求重定向
    //response.sendRedirect("request.jsp");
    //请求转发
    request.getRequestDispatcher("request.jsp").forward(request, response);
%>

  1. session

    (1)什么是session

Session:表示客户端与服务器的一次会话。具体到Web中的Session
指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的
这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定
义中我们可以看到, Session实际上是一个特定的时间概念。

	● session表示客户端与服务器的一次会话
	● Web中的session指的是用户在浏览某个网站时 ,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间
	● 从上述定义中可以看到, session实际上是- 一个特定的时间概念	

在这里插入图片描述
(2)session对象

●session对象是一个JSP内置对象。
●session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
●从一个客户打开浏览器并连接到服务器开始 ,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
●当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
●session对象是HttpSession类的实例。

在这里插入图片描述

(3)session生命周期

创建

当客户端第一次访问某个jsp或者Servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求时,都会将此Sessionld携带过去,服务端会对此SessionId进行校验。

活动

●某次会话当中通过超链接打开的新页面属于同一次会话。
●只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。
●除非本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。

注意事项: 注意原有会话还存在,只是这个旧的SessionId仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验。

销毁

Session的销毁只有三种方式:
	1. 调用了session.incalidate()方法
	2. Session过期(超时)
	3. 服务器重新启动

在这里插入图片描述
在这里插入图片描述

  1. application

    ●application对象实现了用户间数据的共享,可存放全局变量。
    ●application开始于服务器的启动,终止于服务器的关闭。
    ●在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作。
    ●在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。
    ●服务器的启动和关闭决定了application对象的生命。
    ●application对象是ServletContext类的实例。
    在这里插入图片描述

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <h1>application内置对象</h1>
    <% 
       application.setAttribute("university", "西电");
       application.setAttribute("postcode", "331700");
       application.setAttribute("email", "[email protected]");
       
    %>
         所在城市是:<%=application.getAttribute("city") %><br>
    application中的属性有:<% 
         Enumeration attributes = application.getAttributeNames();
         while(attributes.hasMoreElements())
         {
    
    
            out.println(attributes.nextElement()+"&nbsp;&nbsp;");
         }
    %><br>
    JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %><br>              
                   
  </body>
</html>

  1. 其他内置对象
    page对象
    在这里插入图片描述
    pageContext对象和config对象
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    exception对象在这里插入图片描述

JavaBeans

  1. JavaBean简介
    Javabeans就是符合某种特定的规范的Java类。使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。

  2. JavaBean设计模式
    在这里插入图片描述

  3. Jsp中如何使用Javabean

    1. 像使用普通的java类一样,创建javabean实例
    2. 在jsp页面中通常使用jsp动作标签使用javabean
      useBeans动作
      setProperty动作
      getProperty动作

    什么是JSP动作?

    JSP动作元素( action elements ) ,动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。
    在这里插入图片描述

  4. jsp:useBeans
    作用:在jsp页面中实例化或者在指定范围内使用javabean
    <jsp:useBean id=“标识符” class= “java类名” scope=“作用范围”/>

在这里插入图片描述

  1. jsp:getProperty

在这里插入图片描述
【property = " * " 】根据名称进行匹配,根据表单提交过来的所有参数的名字和javaBeans中的属性名字来进行匹配,匹配上则自动赋值
在这里插入图片描述
【property = " javaBean属性名 " 】对部分属性进行匹配,指定的属性名字和表单传过来的属性名字进行匹配
在这里插入图片描述
只匹配了用户名 没有匹配密码 所以密码为空
在这里插入图片描述
【property = " javaBean属性名 " value = “BeanValue”】把value值传递给属性 表单传递的值时没有效果的 又被人为手工设置了新的值
在这里插入图片描述
【property = " propertyName " param = “request对象中的参数名” 】跟request参数关联 不一定是表单传递过来的参数 可以使url地址传递过来的参数
在这里插入图片描述
在这里插入图片描述

  1. jsp:setProperty
    作用:获取指定javabean对象的属性值
    <jsp:getProperty name=“JavaBean实例名” property=“属性名”/>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'dologin.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
    <h1>setProperty动作元素</h1>
    <hr>
   <!--根据表单自动匹配所有的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="*"/>  
   --%>
   <!--根据表单匹配所有部分的属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username"/>  
   --%>
   <!--根表单无关,通过手工赋值给属性 -->
   <%-- 
   <jsp:setProperty name="myUsers" property="username" value="lisi"/>
   <jsp:setProperty name="myUsers" property="password" value="888888"/>
   --%>
   <!--通过URL传参数给属性赋值 -->
   <jsp:setProperty name="myUsers" property="username"/>
   <jsp:setProperty name="myUsers" property="password" param="mypass"/>
   <!-- 使用传统的表达式方式来获取用户名和密码 -->
   <%--     
       用户名:<%=myUsers.getUsername() %><br>
       密码:<%=myUsers.getPassword() %><br> 
   --%>
   <!-- 使用getProperty方式来获取用户名和密码 -->
      用户名:<jsp:getProperty name="myUsers" property="username"/> <br>
      密码:<jsp:getProperty name="myUsers" property="password"/><br>
   <br>
   <br>
      <a href="testScope.jsp">测试javabean的四个作用域范围</a>
      <% 
         request.getRequestDispatcher("testScope.jsp").forward(request, response);
      %>
  </body>
</html>

  1. Javabean的四个作用域范围
    使用useBeans的scope属性可以用来指定javabean的作用范围

     	page:当前页面有效,获取不到 			
     	request:用请求转发获取不到,可以用重定向服务器内部转发保证是同一次请求
     	session:会话,打开的是同一次会话,可以获取
     	application:作用范围最大
    

    ●page //仅在当前页面有效
    ●request //可以通过HttpRequest.getAttribute()方法取得JavaBean对象。
    ●session //可以通过HttpSession.getAttribute(方法取得JavaBean对象。
    ●applicatoin //可以通过application.getAttribute(方法取得Javabean对象

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="com.po.Users" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'testScope.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <h1>Javabean的四个作用域范围</h1>
    <hr>
    <jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
       用户名:<jsp:getProperty name="myUsers" property="username"/><br>
       密码:<jsp:getProperty name="myUsers" property="password"/><br>
    <!-- 使用内置对象获取用户名和密码 -->
    <hr>
   <%-- 
       用户名:<%=((Users)application.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)application.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <%-- 
       用户名:<%=((Users)session.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)session.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <%-- 
       用户名:<%=((Users)request.getAttribute("myUsers")).getUsername()%><br>
       密码:<%=((Users)request.getAttribute("myUsers")).getPassword() %><br>
   --%>
   <% 
       String username = "";
       String password = "";
       if(pageContext.getAttribute("myUsers")!=null )
       {
    
    
          username = ((Users)pageContext.getAttribute("myUsers")).getUsername();
          password = ((Users)pageContext.getAttribute("myUsers")).getPassword();
       }
       
   %>
    
       用户名:<%=username%><br>
       密码:<%=password%><br>
   
   
   
  </body>
</html>

  1. Model1简介

     	●Model 1模型出现前,整个Web应用的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。	
     	
     	●弊端: 在界面层充斥着大量的业务逻辑的代码和数据访问层的代码, Web程序的可扩展性和可维护性非常差。
     	
     	●Javabean的出现可以使jsp页面中使用Javabean封装的数据或者调用Javabean的业务逻辑代码,这样大大提升了程序的可维护性。
     	![在这里插入图片描述](https://img-blog.csdnimg.cn/2020062722271813.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NjU1NjAy,size_16,color_FFFFFF,t_70)
    

javaBeans既可以封装数据也可以封装业务逻辑的功能,由javaBeans去调用底层的数据库,执行数据访问层去调用底层数据库,把得到的结果呈现在jsp页面并显示给浏览器

JSP状态管理

  1. http协议无状态性

    无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器。简单地说,就是服务器不会去记得你,所以就是无状态协议。

因为http是无状态的协议 所以希望每次都保存用户的状态

  1. 保存用户状态的两大机制
    Session
    Cookie

  2. Cookie简介
    Web服务器保存在客户端的一系列文本信息
    (1)什么是Cookie?
    Cookie就是在Web服务器保存在客户端的一系列文本信息,如判定注册用户是否已经登录网站、“购物车”的处理、视频网站会自动记录用户的浏览过的视频 、记住用户名和密码实现自动登录功能
    (2)Cookie的作用
    ●对特定对象的追踪
    ●保存用户网页浏览记录与习惯
    ●简化登录
    安全风险:容易泄露用户信息

  3. Cookie的创建与使用
    创建Cookie对象:Cookie newCookie = new Cookie(String key,Object value);
    写入Cookie对象:response.addCookie(newCookie);
    读取Cookie对象:Cookie[] cookies = request.getCookies();
    在这里插入图片描述

  4. Session与Cookie的对比
    在这里插入图片描述

JSP指令和动作元素

  1. include指令
    语法:<%@ include file=“URL”%>

  2. include动作
    语法:
    <jsp:include page=“URL” flush=“true|false”/>
    page 要包含的页面
    flush 被包含的页面是否从缓冲区读取

  3. include指令与include动作的区别
    在这里插入图片描述

  4. jsp:forward动作
    语法:
    <jsp:forward page=“URL” />
    等同于:
    request.getRequestDispatcher("/url").forward(request,response);

  5. jsp:param动作
    语法:
    <jsp:param name=“参数名” value=“参数值”>
    常常与jsp:forword一起使用,作为子标签

  6. jsp:plugin动作

说明:根据网络资料进行搜索学习理解整理 若有侵权联系作者
参考链接:JAVA遇见HTML——JSP篇

猜你喜欢

转载自blog.csdn.net/qq_35655602/article/details/106987470