2014-02-13 3 views
-1

Ниже 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 или происходит какое-либо связывание или переменная в этом случае сохраняется в области приложения/сеанса. Любая помощь заметна.

ответ

3

<%! %> является декларация раздела, что означает

String test = "Hei you!!!"; 
String test2="ok done"; 

будут поля в генерироваться из Jsp сервлета, а не локальных переменных в 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

[См. Ссылку.] (Http://docs.oracle.com/javaee/1.3/tutorial/doc/JSPIntro7.html). –

+0

@Pshemo Спасибо. Но тогда как мы можем объявить поля в jspService? – master32

+2

@ master32 Избавьтесь от '!'. Используйте '<% %>', или даже лучше [избегайте размещения Java-кода в JSP] (http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files). – Pshemo

1

попробуйте вот так:

<%=(test + test2)%> 
+0

Спасибо Ayshman. Но я не пытаюсь решить проблему, но знаю причину – master32

Смежные вопросы