2013-09-26 2 views
3

Я проверяю новые аннотации для web сервлетов, но я не понимаю, как вы можете передавать начальные параметры (init-param) из легко изменяемого местоположения. Да, я нашел аннотацию @WebInitParam, но это означает, что вы должны записать значение в код, который, я думаю, пропускает точку для легкого изменения в web.xml.@WebServlet с параметрами init из xml

Так что здесь? Не использовать @WebServlet в таком случае?

+0

Вы спрашиваете, если * изменения * сделаны в web.xml * после того, как * запуск веб-приложения будет виден сервлету? –

+0

John O: нет, снова прочитайте q. – JIV

ответ

4

Интересный случай использования, и оказывается, что вы можете (моя конфигурация: JBoss 7.1.1):

Servlet:

@WebServlet(name="fooServlet", urlPatterns="/foo") 
public class FooServlet extends HttpServlet 
{ 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     String flip = getInitParameter("flip"); 
     resp.getWriter().println("<html>" + 
      "<head><title>" + getServletName() + "</title></head>" + 
      "<body>From " + getServletName() + ": " + flip + "</body>" + 
      "</html>" 
     ); 
    } 
} 

web.xml Внутри (обратите внимание на имя является тем же самым, и ни <servlet-class> не указана):

<servlet> 
    <servlet-name>fooServlet</servlet-name> 
    <init-param> 
     <param-name>flip</param-name> 
     <param-value>flop</param-value> 
    </init-param> 
</servlet> 

значение flip = getInitParameter("flip") установлено значение flop, как указано в web.xml!


Кстати, мне было интересно, является ли это особенностью JBoss или стандартом. Стандарт, см. Servlet 3.0 specification, глава 8.2.1 «Модульность web.xml».

-1

Да, вы можете.

В ваших постоянных файл

public static String SOME_STRING= "stringVal"; 

А затем импортировать его в сервлет

import static something.Constants.SOME_STRING; 

@WebInitParam(name=SOME_STRING ,.....) 

Теперь вы меняете только Constants для всех ваших потребностей.

+0

Может быть SOME_STRING динамически загружен? то есть. не окончательный? – JIV

+0

Я приклеил mine.You можете назначить их, удалив окончательный модификатор. Что я сделал, у меня есть xml-конфигуратор, я использовал один сервлет, когда я его развертываю. Он запускается, указывая загрузку при запуске. Внутри, что там все fieds заполняются. –

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