Сначала короткий ответ <% @ page isThreadSafe = "false"%>
Более длинный ответ: не делай этого.
Тебе нужно четко понимать свою цель. Вы не сделали сервлет действительно поточно-ориентированным с помощью SingleThreadModel, скорее вы настроили так, чтобы в ваш сервлет мог входить только один поток за раз. Предположительно, вы будете делать это именно потому, что код сервлета является не поточно-безопасным, то есть если несколько кодов попадут в код, могут произойти неприятности.
Для меня это означает, что у вас есть что-то подобное в коде сервлета:
doGet(/*etc/*){
// ... stuff
someExistingUnsafeClass.doSomething();
// .. more stuff
}
В конце концов, сам ваш код сервета не может быть потокобезопасным, не так ли? Вы бы это исправили, верно? Так что, должно быть, какой-то устаревший код небезопасен?
Если это сценарий, когда вашему JSP нужно использовать этот существующий унаследованный код, где-то в вашем JSP есть вызов, который небезопасен:
<%
someExistingUnsafeClass.doSomething();
%>
Так что вам просто нужно защитить этот небезопасный вызов:
<%
synchronized(this){
someExistingUnsafeClass.doSomething();
};
%>
Разрешение правильной работы многопоточной JSP будет работать намного лучше.
Я также должен сказать, что если вы структурируете свое приложение как MVC, тогда весь небезопасный код вызывается из контроллера, и представление (JSP) никогда не должно быть небезопасным.