Java-html篇——JSP

JSP

  • JavaWeb简介
  • JSP基础语法
    • Jsp页面元素构成
    • Jsp的生命周期
  • JSP内置对象
  • JavaBeans
  • JSP状态管理
  • JSP指令和动作元素

文章结构概览
Java-html篇——JSP_第1张图片

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服务器的目录结构
      Java-html篇——JSP_第2张图片

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

    其中:WEB-INF目录中有 classes文件夹用于储存编译生成的字节码文件 lib目录用于编译要用到的jar包
    Java-html篇——JSP_第3张图片
    WEB-INF目录详解
    Java-html篇——JSP_第4张图片
    Java-html篇——JSP_第5张图片
    Java-html篇——JSP_第6张图片
    Java-html篇——JSP_第7张图片

  5. MyEclipse配置

    1). MyEclipse配置JRE
    Java-html篇——JSP_第8张图片
    2). MyEclipse集成Tomcat服务器
    Java-html篇——JSP_第9张图片
    把创建的项目的jdk改成自定义的jdk(我使用的版本是jdk1.8)
    Java-html篇——JSP_第10张图片
    Java-html篇——JSP_第11张图片

    3). 理解MyEclipse Web项目目录结构
    Java-html篇——JSP_第12张图片
    4). 理解Web项目虚拟路径
    Java-html篇——JSP_第13张图片
    虚拟路径修改之后项目名称会改变 我这里没有修改虚拟路径 所以项目名称没变
    Java-html篇——JSP_第14张图片

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

我这里使用的是dark主题 所以eclipse是黑色的 有点难看。。。
Java-html篇——JSP_第15张图片
Java-html篇——JSP_第16张图片
之后,发布并启动服务器

  1. 修改Tomcat默认端口

    修改tomcat目录下 conf/server.xml文件
    Java-html篇——JSP_第17张图片

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页面中启用定制行为

Java-html篇——JSP_第18张图片Java-html篇——JSP_第19张图片

  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的生命周期

Java-html篇——JSP_第20张图片
Jsp生命周期:

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

JSP内置对象

  1. 内置对象简介
    out
    request
    response
    session
    application
    Page
    pageContext
    exception
    config

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

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

Java-html篇——JSP_第21张图片
什么是缓冲区

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

requestJava-html篇——JSP_第23张图片

例子:
request.jsp
Java-html篇——JSP_第24张图片
reg.jsp
Java-html篇——JSP_第25张图片
Java-html篇——JSP_第26张图片
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]+"  ");
	           }
	        }
        %> <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
Java-html篇——JSP_第27张图片
例子:
Java-html篇——JSP_第28张图片
outer对象总是在最上面打印输出 但是当你强制清空缓冲区时out.flush(),可以把内置对象显示在前面

(1)get与post区别
Java-html篇——JSP_第29张图片
(2)请求重定向与请求转发的区别
Java-html篇——JSP_第30张图片
例子:
重定向: 你先去了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("

response内置对象

"
); out.println("
"
); //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实际上是- 一个特定的时间概念	

Java-html篇——JSP_第31张图片
(2)session对象

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

Java-html篇——JSP_第32张图片

(3)session生命周期

创建

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

活动

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

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

销毁

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

Java-html篇——JSP_第33张图片
Java-html篇——JSP_第34张图片

  1. application

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

<%@ 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()+"  ");
         }
    %><br>
    JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %><br>              
                   
  </body>
</html>

  1. 其他内置对象
    page对象
    Java-html篇——JSP_第36张图片
    pageContext对象和config对象
    Java-html篇——JSP_第37张图片
    Java-html篇——JSP_第38张图片
    Java-html篇——JSP_第39张图片
    exception对象Java-html篇——JSP_第40张图片

JavaBeans

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

  2. JavaBean设计模式
    Java-html篇——JSP_第41张图片

  3. Jsp中如何使用Javabean

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

    什么是JSP动作?

    JSP动作元素( action elements ) ,动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。
    Java-html篇——JSP_第42张图片

  4. jsp:useBeans
    作用:在jsp页面中实例化或者在指定范围内使用javabean

Java-html篇——JSP_第43张图片

  1. jsp:getProperty

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

  1. jsp:setProperty
    作用:获取指定javabean对象的属性值
<%@ 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();
    Java-html篇——JSP_第46张图片

  4. Session与Cookie的对比
    Java-html篇——JSP_第47张图片

JSP指令和动作元素

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

  2. include动作
    语法:

    page 要包含的页面
    flush 被包含的页面是否从缓冲区读取

  3. include指令与include动作的区别
    Java-html篇——JSP_第48张图片

  4. jsp:forward动作
    语法:

    等同于:
    request.getRequestDispatcher("/url").forward(request,response);

  5. jsp:param动作
    语法:

    常常与jsp:forword一起使用,作为子标签

  6. jsp:plugin动作

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

你可能感兴趣的:(JSP)