JSP动作标签
Posted yusiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP动作标签相关的知识,希望对你有一定的参考价值。
JSP的动作标签由服务器解释执行,动作标签的格式是固定的,
- <jsp:forward>:这个动作标签的用处,与Servlet的请求转发是一样的
- <jsp:include>:这个标签的用处与Servlet的请求包含一致的,
- <jsp:param>:这个标签用来作为forward和include的子标签,用来给转发或者包含的标签传递参数
来看一个例子:
a.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>a.jsp</h1>
<jsp:forward page="b.jsp">
<jsp:param value="yu" name="username"/>
<jsp:param value="123" name="password"/>
</jsp:forward>
</body>
</html>
b.jsp
<h1>b.jsp</h1>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
%>
<%= username%>
<%= password%>
我们请求a.jsp发现服务器给我们响应的内容包含两个两个jsp页面,在来查看生成的java文件,发现生成了两个java文件,可见这种包含,与JSP的include指令是有区别的,查看源码,发现a_jsp.javad的_jspService方法中多了这么一句代码:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "b.jsp", out, false);
在a.jsp中的<jsp:include>动作标签被转换为了一种方法调用,并将b.jsp当作参数传递了进去,同时还有request和response两个参数,可见它们使用了同一个request和respnse,所以能能同时对客户端响应,注意只有使用<jsp:include>标签,a.jsp和b.jsp才可以都对客户端进行响应,<jsp:forward>标签,使用该标签的jsp页面只能设置响应头。如果使用的是<jsp:forward>标签,那么服务器给我们的响应只有b.jsp。
在context.xml中配置reloadable
当我们修改文件之后,一般要重启服务器,在在context.xml中配置reloadable=true,之后可避免这个问题,这种方式适合在项目开发阶段使用
<Context reloadable="true">
</Context>
以上是关于JSP动作标签的主要内容,如果未能解决你的问题,请参考以下文章