在典型的Spring MVC Web应用程序中,您可以像这样在web.xml
中声明DispatcherServlet
<!-- MVC Servlet -->
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
以及侦听器、过滤器等。
使用servlet-api 3.0,您可以用注释@WebServlet
声明您的servlet,而不是将它们添加到您的web.xml
中。Spring 3.2已经为其上下文配置提供了@Configance
和@EnableXYZ
。它是否有类似的DispatcherServlet
,即有没有办法在没有任何xml的情况下配置完整的Spring应用程序?
是的,您不需要web.xml
来启动您的webapp Servlet 3.0。正如亚历克斯已经提到的,您可以实现WebApplication ation初始化器
类并覆盖onStartup()
方法。WebApplication ation初始化器
是Spring MVC提供的接口,它确保您的实现被检测到并自动用于初始化任何Servlet 3容器。
有没有办法在没有任何xml的情况下配置完整的Spring应用程序?
添加这个答案只是为了添加另一种方式。您不需要实现WebApplicationInitializer
。名为AbstractDispatcherServletInitializer
的WebApplicationInitializer
的抽象基类实现,通过简单地重写指定servlet映射和DispatcherServlet配置位置的方法,使注册DispatcherServlet变得更加容易-
public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
@Override
protected WebApplicationContext createServletApplicationContext() {
XmlWebApplicationContext cxt = new XmlWebApplicationContext();
cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
return cxt;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
使用JEE6,如果您的应用程序容器是Servlet 3.0就绪,您需要做的是:
com.foo.ftServletContainer
)META-INF/service
文件夹中创建一个名为javax.servlet.ServletContainerPrializer
的文件,该文件将包含上面实现的名称(com.foo.ftServletContainer
)Spring 3与一个名为SpringServletContainerInitializer
的类捆绑在一起,该类实现了上述内容(因此您不需要在META-INF/services
中创建自己的文件)。这个类只调用WebApplicationInitializer
的一个实现。因此,您只需要在类路径中提供一个实现它的类(以下代码取自上述文件)。
public class FooInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) {
WebApplicationContext appContext = ...;
ServletRegistration.Dynamic dispatcher =
container.addServlet("dispatcher", new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
这就是网站的内容。xml
的东西,但你需要使用@Configuration
,@EnableWebMvc
等来配置webapp。。
本文向大家介绍SpringMVC + servlet3.0 文件上传的配置和实现代码,包括了SpringMVC + servlet3.0 文件上传的配置和实现代码的使用技巧和注意事项,需要的朋友参考一下 简单几步,实现SpringMVC+servlet3.0文件上传功能: 第一步:配置web.xml文件中的servlet,添加multipart-config: 第二步:在servlet.xml中配
随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs
但当我运行:Caused by:java.lang.IllegalStateException时:您需要将一个theme.AppCompat主题(或后代)与此活动一起使用。 我不明白,谢谢^^
问题内容: java中的try … catch … finally块共有3种排列。 试着抓 尝试…抓住…最后 尝试…最后 一旦执行了finally块,控制权将移至finally块之后的下一行。如果我删除了finally块并将其所有语句移到try … catch块之后的行,那么与将它们放入finally块中的效果相同吗? 问题答案: 我认为willcode最接近在这里表达关键点,也许每个人都知道,但
问题内容: AFAIK,您无需在onclick中指定协议: 坏 好 今天,我在GoogleAnallytics上注意到他们正在使用它: 这个例子是完全错误的,还是有理由指定除?以外的其他内容? 问题答案: 这里的一些响应声称“javascript:”前缀是“过去的遗留物”,这意味着浏览器有意对它进行了特殊处理,以实现向后兼容。是否有确凿的证据证明是这种情况(有人检查过源代码)吗? 对我来说,它的意
问题内容: 众所周知,Windows使用带反斜杠的路径,而Unix使用带反斜杠的路径。node.js提供了始终使用正确的斜杠。因此,例如,您不必编写Unix,而只编写Unix 。 但是,似乎存在这种差异,但是如果您不对路径进行规范化(例如,使用path.join),而仅编写诸如node.js之类的路径,则在Windows上运行脚本没有问题。 那么,有没有写上任何好处了?无论平台如何,两者似乎都可以