JSP中include动作与指令

  include指令

  JSP中有三大指令:page,include,taglib,之前已经说过了page的用法。这里介绍下include。

  使用语法如下:

<%@ include file="URL"%>

  比如有一个页面要包含另一个date.jsp页面,date.jsp提供一个时间输出:

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <h1>include</h1>        
    <%@ include file="date.jsp"%>
</body>
</html>

  包含的date.jsp如下:

<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    import="java.util.*"
    pageEncoding="utf-8"%>
<%
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:MM:ss");
    Date d = new Date();
    String s = sdf.format(d);
    out.println(s);
%>

  运行结果:

  查看生成的源码,可以发现,两个页面变成了一个文件:

  查看源码发现,可以更好的理解

  include动作

  使用include动作标签也可以完成上述的操作,添加标签如下:

<jsp:include page="date.jsp" flush="true" />

  可以达到上面同样的效果。

  观察发现,此时访问jsp生成了四个文件:

  观察源码可以更好的理解:

  include指令与动作的区别

  一张图很好的说明了他们的区别(来源:慕课网):

  forward动作

  forward动作是使用jsp:forwad标签实现:

<jsp:forward page="URL" />

  可以达到与request.getRequestDispatcher("/url").forward(request,response)同样的效果。

  param动作

  常常与forward标签搭配使用,传递一些参数值:

    <jsp:forward page="userForward.jsp">
        <jsp:param value="test@qq.com" name="email"/>
        <jsp:param value="666666" name="password"/>
    </jsp:forward>

  例如,登陆界面loginForward.jsp登录用户名密码,经过处理界面doLoginForward.jsp处理后,修改密码并新添加email参数后,转发给显示页面userForward.jsp。

  loginForward.jsp代码如下

<%@ page language="java" contentType="text/html; charset=utf-8"
    import="java.net.*"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>
<body>
    <h1>loginForward</h1>
    <hr>
    <form name="loginForm" action="doLoginForward.jsp" method="post">
        <table>
            <tr>
                <td>username</td>
                <td><input type="text" name="username" ></input></td>
            </tr>
            <tr>
                <td>password</td>
                <td><input type="password" name="password" ></input></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="submit"/></td>
            </tr>
        </table>
    </form>
</body>
</html>

  doLoginForward.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    import="java.net.*"
    pageEncoding="utf-8"%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>
<body>
    <h1>loginForward</h1>
    <hr>
    <jsp:forward page="userForward.jsp">
        <jsp:param value="test@qq.com" name="email"/>
        <jsp:param value="666666" name="password"/>
    </jsp:forward>
</body>
</html>

  userForward.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    import="java.net.*"
    pageEncoding="utf-8"%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>
<body>
    <h1>userForward</h1>
    <hr>
    <%
        request.setCharacterEncoding("utf-8");
        String username = "";
        String password = "";
        String email = "";
        
        if(request.getParameter("username")!=null){
            username = request.getParameter("username");
        }
        if(request.getParameter("password")!=null){
            password = request.getParameter("password");
        }
        if(request.getParameter("email")!=null){
            email = request.getParameter("email");
        }
    %>
    
    用户名:<%=username %>
    密码:<%=password %>
    邮箱:<%=email %>
    
</body>
</html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JSP实现用户登录样例

      业务描述   用户在login.jsp页面输入用户名密码登录:   如果用户名为xingoo,密码为123,则跳转到成功界面login_success.js...

    用户1154259
  • JSP与JavaBeans

      JavaBeans简介   JavaBeans是一种符合一定标准的普通java类,需要满足下面几点:   1 类是public   2 属性私有   3 空...

    用户1154259
  • static_cast const_cast reindivter_cast dynamic_cast

    C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Func...

    用户1154259
  • 原来还有一种空格叫 "NBSP"

    最近在用 Node 的 cheerio 类库整一个抓取课表的小爬虫,其中有部分不需要的信息的 HTML 标签内部只有一个 &nbsp;,我想利用它作为特征来过滤...

    zgq354
  • Nginx+Tomcat实现动静分离

    导读:关于Nginx的文章已经发布过很多,了解基本概念,今天就使用Nginx实现动静分离。 www.cnblogs.com/xiaoblog/p/424108...

    用户1093975
  • react native使用WebView加载本地html部署方案

    十里桃花舞丶
  • 为了不复制粘贴,我被逼着学会了JAVA爬虫

    受疫情影响一直在家远程办公,公司业务进展的缓慢,老实讲活并没有那么多,每天吃饭、睡觉、逛技术社区、写博客,摸鱼摸得爽的很。早上本来还想在来个回笼觉,突然部门经理...

    程序员内点事
  • Express新手入坑笔记之Handlebars模板继承

    将views文件夹下, index.html内的内容精简(只保留关键内容body)

    zhaoolee
  • 前端跨域知识简介

    前端跨域知识简介 灵感 差不多2年前,由于业务需要,了解各种各样不同的跨域方式。但由于各种方式千奇百怪,我觉得有必要将各种方法封装起来,方便使用,弄了个简单的跨...

    李成熙heyli
  • 深入剖析iframe跨域问题

    HTML5学堂:本文当中我们介绍了跨域的基本知识,讲解到了跨域的相关种类,并讲解了解决跨域中的一种方法——如何使用iframe跨域。讲解了iframe跨域的基本...

    HTML5学堂

扫码关注云+社区

领取腾讯云代金券