<jsp:forword>标准动作 2018-01-08

<jsp:forword>标准动作

总结

  1. 功能是将请求转发给web应用中的其他资源,但是需要注意这个标签之后的内容不会再执行,而且之前写进响应的内容会被清空。
  2. 用法:
    -- 不加参数
    <jsp:forword page="" />
    -- 加参数
    <jsp:forward page="a.jsp">
    <jsp:param value="aaa" name="login_name"/>
    </jsp:forward>

《Head First Servlets & JSP》P413

<jsp:forword>标准动作,可以从一个jsp转发到web应用中的任何其他资源
示例:

hello.jsp页面
<title>welcome</title>
</head>
<body>
welcome to our page!
<%
    if(request.getParameter("userName")==null){
%>
        <jsp:forward page="handleIt.jsp" />
<%   //如果userName为null,停在这里,将整个请求转给别人,
        //这个页面的任何内容都不会出现在响应里
    }
%>
Hello ${param.userName}
</body>
</html>
handleIt.jsp页面
<title>login</title>
</head>
<body>
We're sorry... you need to login again.
<form action ="hello.jsp" method="get">
    Name:<input name="userName" type="text">
    <input  type="submit" value="login">
</form>
</body>
</html>
访问hello.jsp,因为userName为null所以将请求转发到handelIt.jsp页面

handelIt页面将表单提交给hello.jsp

利用<jsp:forword>,响应缓冲区会在转发之前清空

发生转发时,请求转发到的目标资源首先会清空响应缓冲区!
意思就是转发前写到响应的所有内容都会清掉。

如果在请求转发之前就已经提交了响应,要转发时就会出现异常。

hello.jsp页面
<title>welcome</title>
</head>
<body>
welcome to our page!
<%
    out.flush();
%>
<%
    if(request.getParameter("userName")==null){
%>
        <jsp:forward page="handleIt.jsp" />
<%   
    }
%>
Hello ${param.userName}
</body>
</html>

out.flush()输出了缓存区中内容
接下来容器看到要转发,啪!出现异常
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是JSP (1)jsp全称是Java Server Pages,它和Servlet技术一样都是sun公司定...
    yjaal阅读 3,687评论 5 99
  • 一、jsp定义及作用 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网...
    yzw12138阅读 1,260评论 0 0
  • JSP(Java Server Pages),其根本是一个简化的 Servlet 设计,实现了在 Java 当中使...
    静候那一米阳光阅读 496评论 0 1
  • JSP 基本结构JSP 页面组成:模板文本(HTML,XML,纯文本),JSP 元素;JSP 元素:脚本元素,指令...
    jslancer阅读 885评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139