JSP页面变量值按请求更改

时间:2014-02-13 04:21:51

标签: java jsp

以下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服务器的缓存中,或者发生了任何绑定,或者在这种情况下变量存储在应用程序/会话范围中。 任何帮助都很明显。

2 个答案:

答案 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)%>