2013-09-26 61 views
3

初始化參數我檢查新的註釋爲Web 的servlet但我不明白你怎麼可以傳遞容易修改位置初始參數(init-param)。是的,我發現註釋@WebInitParam,但這意味着你必須寫入代碼的價值,我猜想在web.xml中輕鬆更改的點。@WebServlet從XML

那麼什麼是在這裏處理?在這種情況下不要使用@WebServlet

+0

在web應用程序的啓動對servlet可見後,您是否詢問是否對web.xml進行了更改? –

+0

約翰:不要,再讀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"; 

,然後導入它的servlet

import static something.Constants.SOME_STRING; 

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

現在你只Constants您的所有需求而改變。

+0

可以SOME_STRING動態加載?即。不是最終的? – JIV

+0

我粘貼mine.You可以通過刪除最終修飾符來分配它們。我做的是我有一個配置xml,我部署時使用了一個servlet它通過指定啓動時的加載來運行它。在那裏所有的fieds都被填充。 –