Java Spring MVC-DispatcherServlet by注解
我得到了SpringMVC应用程序。 它在Tomcat7上运行。 现在,我在web.xml文件中得到了这一部分:Java Spring MVC-DispatcherServlet by注解,java,spring,model-view-controller,Java,Spring,Model View Controller,我得到了SpringMVC应用程序。 它在Tomcat7上运行。 现在,我在web.xml文件中得到了这一部分: <servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class&g
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/app-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
SpringMVC调度程序Servlet
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/app-config.xml
1.
SpringMVC调度程序Servlet
*.htm
有没有办法通过注释初始化它?我得到了一个
MainSettings.java
类,其中我的所有Bean都是由@Bean
注释初始化的。那么我如何在那里初始化DispatherServlet呢?下面是一个带有注释的示例。希望这对你有帮助
public class ApplicationInitializer implements WebApplicationInitializer {
//Called first when the application starts loading.
public void onStartup(ServletContext servletContext)
throws ServletException {
System.out.println("Inside application initializer...");
//Registering the class that incorporates the annotated DispatcherServlet configuration of spring
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(DispatcherConfig.class);
//Adding the listener for the rootContext
servletContext.addListener(new ContextLoaderListener(rootContext));
//Registering the dispatcher servlet mappings.
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
写这篇文章是因为会创建另一个上下文,而这个上下文看不到安全上下文的内容
public class WebInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
private static final Log LOGGER = LogFactory.getLog(WebInitializer.class);
@Override
protected Class<?>[] getRootConfigClasses() {
/* this is where you will return you config class
* your root config class should @Import other configs
* to make them work without needing them to add there
*/
return new Class[] { ViewConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[0];
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
公共类WebInitializer扩展
AbstractAnnotationConfigDispatchersServletInitializer{
私有静态最终日志记录器=LogFactory.getLog(WebInitializer.class);
@凌驾
受保护类[]getRootConfigClasses(){
/*这是您将返回config类的地方
*您的根配置类应该@Import其他配置
*使它们工作,而不需要添加它们
*/
返回新类[]{ViewConfig.Class};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回新类[0];
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
看看这个-您不想将rootContext
传递给DispatcherServlet
。传递一个以rootContext
为父级的空上下文。否则,上下文将初始化两次。我还建议扩展AbstractAnnotationConfigDispatcherServletInitializer
,而不是实现WebApplicationInitializer
。我找不到DispatcherConfig.class。我从哪里可以得到这个?@ShervinAsgari检查您的Sprint mvc依赖项。确保你有正确的版本。上面的示例基于Spring3。2@ShervinAsgari它是用户定义的。