@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
没有任何错误的新控制台输出是:
2015年6月20日下午6:33:38组织。阿帕奇。卡特琳娜。果心ApplicationContext日志信息:初始化Spring根WebApplicationContext信息:org。springframework。网状物上下文ContextLoader-根WebApplicationContext:初始化已开始信息:org。springframework。网状物上下文支持XmlWebApplicationContext-刷新根WebApplicationContext:启动日期[2015年6月20日星期六18:33:38 PKT];上下文层次结构信息的根:org。springframework。豆。工厂xml。XmlBeanDefinitionReader-从ServletContext资源[/WEB-INF/spring/root-context.XML]信息:org加载XML bean定义。springframework。豆。工厂支持DefaultListableBeanFactory—在组织中预实例化单例。springframework。豆。工厂支持DefaultListableBeanFactory@1a8f100:定义bean[];工厂层次结构信息的根:组织。springframework。网状物上下文ContextLoader-根WebApplicationContext:初始化于893 ms 2015年6月20日下午6:33:39 org完成。阿帕奇。卡特琳娜。果心ApplicationContext日志信息:正在初始化Spring FrameworkServlet“appServlet”信息:org。springframework。网状物servlet。DispatcherServlet-FrameworkServlet“appServlet”:初始化已开始信息:org。springframework。网状物上下文支持XmlWebApplicationContext-刷新命名空间“appServlet servlet”的WebApplicationContext:启动日期[Sat Jun 20 18:33:39 PKT 2015];父:根WebApplicationContext信息:org。springframework。豆。工厂xml。XmlBeanDefinitionReader-从ServletContext资源[WEB-INF/spring/appServlet/servlet-context.XML]信息:org加载XML bean定义。springframework。上下文注释。ClassPathBeanDefinitionScanner-JSR-250’javax。注释。找到并支持组件扫描信息:org的ManagedBean。springframework。上下文注释。ClassPathBeanDefinitionScanner-JSR-330’javax。注射已找到并支持名为“”的批注,用于组件扫描信息:org。springframework。豆。工厂注释。AutowiredAnnotationBeanPostProcessor-JSR-330’javax。注射自动关联信息:org找到并支持Inject注释。springframework。豆。工厂支持DefaultListableBeanFactory—在组织中预实例化单例。springframework。豆。工厂支持DefaultListableBeanFactory@1c047f0:定义bean[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappeInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,或g、 springframework。网状物servlet。mvc。注释。ResponseStatusExceptionResolver#0,组织。springframework。网状物servlet。mvc。支持DefaultHandlerExceptionResolver#0,组织。springframework。网状物servlet。处理程序。BeanNameUrlHandlerMapping,org。springframework。网状物servlet。mvc。HttpRequestHandlerAdapter,org。springframework。网状物servlet。mvc。SimpleControllerHandlerAdapter,org。springframework。网状物servlet。资源ResourceHttpRequestHandler#0,组织。springframework。网状物servlet。处理程序。SimpleUrlHandlerMapping#0,组织。springframework。网状物servlet。看法InternalResourceViewResolver#0,homeController,组织。springframework。上下文注释。内部配置AnnotationProcessor,组织。springframework。上下文注释。InternalAutowiredNotationProcessor,组织。springframework。上下文注释。internalRequiredAnnotationProcessor,组织。springframework。上下文注释。internalCommonAnnotationProcessor,组织。springframework。上下文注释。ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0];父级:组织。springframework。豆。工厂支持DefaultListableBeanFactory@1a8f100信息:组织。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping-将“{[/],方法=[获取],参数=[],头=[],消耗=[],生产=[],自定义=[]}”映射到公共java上。lang.字符串回家。通用域名格式。网状物HomeController。主页(java.util.Locale,org.springframework.ui.Model)信息:org。springframework。网状物servlet。处理程序。SimpleUrlHandlerMapping—将URL路径[/resources/**]映射到处理程序的组织上。springframework。网状物servlet。资源ResourceHttpRequestHandler#0’信息:org。springframework。网状物servlet。DispatcherServlet-FrameworkServlet“appServlet”:初始化在2619毫秒内完成
这个在http://localhost:8080还显示HTTP状态404在这种情况下有任何提示吗?我该怎么办?
您的问题与eclipse或eclipse中的动态web模块无关,只是存在多个问题。您的spring配置中存在一般性问题。
您正在尝试通过RequestMapping映射“/”,这甚至在Spring MVC 4.1.6中都不起作用,与eclipse或动态web模块无关。
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String sd.sdse.dsdds.HomeController.home(java.util.Locale,org.springframework.ui.Model)
关于如何在spring.io论坛中定义到上下文根目录的映射,还有更多类似的问题,例如“@Request estMap指向/”
您可以通过将Spring Dispatcher Servlet映射到“/”not“/*”并从@Request estMap
注释中删除显式映射到“/”来归档它。
您共享的项目不是生成日志输出的项目。该项目在Tomcat上部署和执行时甚至不会启动SpringContext。
要启动SpringContext,您必须在web中配置ContextLoadListener和/或DispatcherServlet。xml如下所示:
<display-name>Home</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
或者,您需要一个实现WebApplicationInitializer接口的类,如下所示:
public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext context) {
XmlWebApplicationContext rootContext =
new XmlWebApplicationContext();
rootContext.setConfigLocation("/WEB-INF/spring/root-context.xml");
context.addListener(new ContextLoaderListener(rootContext));
// Create the dispatcher servlet's Spring application context
XmlWebApplicationContext servletContext =
new XmlWebApplicationContext();
servletContext.setConfigLocation("/WEB-INF/spring/appServlet/servlet-context.xml");
// add the dispatcher servlet and map it to /
ServletRegistration.Dynamic dispatcher =
context.addServlet("springDispatcher", new DispatcherServlet(servletContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
它从项目中使用的位置加载spring配置文件(root-context.xml,
servlet-context.xml)。
可以在github上找到使用WebApplicationInitializer的固定版本。我给你发了一个请求。
固定版本的控制台输出为:
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@76dc331c: defining beans [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.view.InternalResourceViewResolver#0,homeController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@5c23f9fd
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.dom.son.HomeController.home(java.util.Locale,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'springDispatcher': initialization completed in 430 ms
Jun 21, 2015 12:45:28 PM org.apache.coyote.AbstractProtocol start
Information: Starting ProtocolHandler ["http-bio-8080"]
Jun 21, 2015 12:45:28 PM org.apache.coyote.AbstractProtocol start
Information: Starting ProtocolHandler ["ajp-bio-8009"]
Jun 21, 2015 12:45:28 PM org.apache.catalina.startup.Catalina start
Information: Server startup in 2048 ms
INFO : com.dom.son.HomeController - Welcome home! The client locale is de_DE.
为了修复eclipse问题,我建议从eclipse中删除旧项目,并从github重新导入固定版本。
在Eclipse中:
在服务器视图中,停止Tomcat实例
- 从Tomcat(上下文菜单)中删除部署-
我有一个mavenized的基于代码配置的Spring 3.2.4 web应用程序。当我第一次用maven/pom.xml构建应用程序时,我得到了一个错误,即web.xml丢失了。首先,我尝试创建一个空的web.xml。这是项目方面发生变化的时刻(我不知道为什么)。它从动态Web模块3.0切换到3.1,这是不可逆转的。我怎样才能把它再次改为动态Web模块3.0??? 另外,我不能删除JAX-RS。
问题内容: 我的问题是,即使将“ Deployment Assembly”设置为包括maven依赖项,这也导致找不到我的类,我也不知道该怎么办。 我只是注意到该类,因为其他类似乎已包含在我的软件包中。 我的文件pom.xml 我的文件web.xml 问题答案: 出现此问题的原因可能是: 某些库版本不匹配(例如,要编译的Java版本!= Web应用程序服务器上的Java版本)。 部署期间不包括必需的
我想把.html文件和.java文件放在同一个包中,放在/src/main/java下,但是在创建新的.html文件时,Eclipse提供/webapp作为默认文件夹。有没有办法改变这种行为?
我在Eclipse中有一个动态Web项目。使用带有Axis2的Tomcat7。在project facets中,我已经用Dynamic Web Module2.2配置了AXIS2(因为AXIS2不能使用Web Module3.0)。 但是当我尝试使用WebService wizard(new->Web Service)时,Eclipse尝试使用Web模块3.0创建Web服务,忽略origin项目的
看起来好像什么都没有出问题,但我一定是错过了什么,因为我总是收到这个错误。 下面是my.settings/org.eclipse.wst.common.project.facet.core.xml的内容 在我试图压制这个看似不相关的错误消息时,任何帮助都非常感谢。 编辑:添加了pom.xml内容
我有这个问题:无法将project facet Dynamic Web Module的版本更改为3.0 你有主意吗?多谢了。