2016-12-02 2 views
0

Ниже мой web.xmlКак получить диспетчерское имя сервлета в Спринг контроллере

<servlet> 
    <servlet-name>DispatcherName</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>WEB-INF/spring/webmvc-config.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Есть ли способ, что я могу получить имя-сервлета «DispatcherName» в мой контроллер приложения?

Я хочу, чтобы это доступ к объектам контроллера из XMLWebApplicationContext &, чтобы сделать это, мне нужно имя RequestDispatcher. До сих пор это то, что я пробовал:

webApplicationContext=WebApplicationContextUtils.getWebApplicationContext(GetServletContextWebListner.getServletContext());  
XmlWebApplicationContext xmlWebApplicationContext = (XmlWebApplicationContext)GetServletContextWebListner.getServletContext().getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT."+webApplicationContext.getApplicationName().replace("/", "")); 

и попытался это слишком

@WebListener 
public class GetServletContextWebListner implements ServletContextListener { 
private static ServletContext servletContext; 

public static ServletContext getServletContext() { 
    return servletContext; 
} 

@Override 
public void contextInitialized(ServletContextEvent sce) { 
    servletContext = sce.getServletContext(); 
} 

@Override 
public void contextDestroyed(ServletContextEvent sce) { 
    servletContext = null; 
}  
} 

и

(XmlWebApplicationContext)GetServletContextWebListner.getServletContext().getServletContextName() 

Поскольку я не в состоянии получить имя сервлета, я 'с использованием getApplicationName(), но это может отличаться в зависимости от имени сервлета.

+0

Что вы пытаетесь до сих пор? –

+0

@KurtVandenBranden добавлено в вопрос –

+0

Не ... Вы должны использовать инъекцию зависимостей в первую очередь, во-вторых, 'WebApplicationContextUtils' будет давать только корневой контекст, а не тот, который находится в' DispatcherServlet'. –

ответ

1

в вас контроллер, вы можете попробовать:

request.getServletContext().getServletContextName() 

Или

RequestContextUtils.getWebApplicationContext(request).getDisplayName() 
+0

У меня нет объекта request & getServletContextName не возвращает имя сервлета диспетчера –

+0

Можете ли вы добавить свой метод контроллера, пожалуйста? –

+0

Я обновил свой ответ. –