标签:方法 避免 lib 例子 war ble get 生成 ice
JSP的动作标签由服务器解释执行,动作标签的格式是固定的,
来看一个例子:
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>
标签:方法 避免 lib 例子 war ble get 生成 ice
原文地址:https://www.cnblogs.com/yusiming/p/9780418.html