以下jsp代码未按预期提供输出
<%@page contentType="text/html" pageEncoding="UTF-8" buffer="none" autoFlush="true"%>
<%@page import="java.util.logging.Logger" %>
<%!
String test = "Hei you!!!";
String test2="ok done";
%> <%= test = (test + test2)%>
输出:(在sbusequent页面刷新)
Hei you!!! ok done
Hei you!!! ok done
Hei you!!! ok done
期待:(仅限每次请求)
Hei you!!! ok done
我不确定变量'test'是否存储在jsp服务器的缓存中,或者发生了任何绑定,或者在这种情况下变量存储在应用程序/会话范围中。 任何帮助都很明显。
答案 0 :(得分:3)
<%! %>
是声明部分,意思是
String test = "Hei you!!!";
String test2="ok done";
将是从jsp servlet生成的字段,而不是jspService()
方法中的局部变量,所以每次都这样做
<%= test = (test + test2)%>
text
字段将与来自test2
的值连接。
换句话说,您的代码将生成类似于
的代码public class Problem extends SomeSpecialJSPHttpServlet {
String test = "Hei you!!!";
String test2 = "ok done";
protected void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().print(test = (test + test2));
}
}
仅打印test + test2
不要将此结果重新分配给test
,以便使用
<%= test + test2 %>
答案 1 :(得分:1)
尝试这样:
<%=(test + test2)%>