gpt4 book ai didi

java - 无 XML 的 Spring 3.1 未找到 HTTP 请求的映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:41 26 4
gpt4 key购买 nike

我搜索了谷歌、stackoverflow 和我可以查看的所有论坛几天,我的键盘极有可能成为头撞的目标。

我正在运行一个非常小的 Spring 3.1 MVC,它没有 XML 设置。问题是当我启动它时,我看到了;

INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/start.action],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.xxxxxx.info.HomeController.start(javax.servlet.http.HttpServletRequest)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/*],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.xxxxxx.info.HomeController.home(java.util.Locale,org.springframework.ui.Model)

然而,当我尝试访问这些 URL 中的任何一个时,我看到我的 Controller 中的日志语句被触发,然后立即得到;

INFO : com.xxxxxx.info.HomeController - Welcome home! the client locale is en_US
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/WEB-INF/jsps/home.jsp] in DispatcherServlet with name 'dispatcher'

这是我的源文件。

初始化器 -

public class Initializer implements WebApplicationInitializer {

public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(MvcConfig.class);

ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(mvcContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/*");
}
}

MvcConfig-

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.xxxxxx.info")
public class MvcConfig {
@Bean
public InternalResourceViewResolver configureInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsps/");
resolver.setSuffix(".jsp");
return resolver;
}
}

Controller -

@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(value = "/*")
public ModelAndView home(Locale locale, Model model) {
logger.info("Welcome home! the client locale is " + locale.toString());

Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate);
return new ModelAndView( "home", model.asMap() );
}

@RequestMapping( value = "/start.action")
public ModelAndView start(HttpServletRequest request) {
logger.info("Starting!");
return new ModelAndView( "start", null );
}
}

根据我发现的许多建议,将调度程序映射更改为“/”似乎完全破坏了它。如果我使用“/”重新启动服务器,那么 Spring 不会报告任何内容,也不会映射任何内容,只有 tomcat 启动日志,其他任何内容均无效。

我的文件结构是-

| com.xxxxxx.info
- Initializer.java
- MvcConfig.java
- HomeController.java
| src
| main
| webapp
| WEB-INF
| jsps
- home.jsp
- start.jsp

所以它似乎正确地命中了我的 Controller ,但是当它获取 View 名称时,它没有解析到正确的位置。我在这里错过了什么,这似乎是我忽略的简单事情......

最佳答案

我猜 jsp 是由 DispatcherServlet 呈现的,它在 similar question 中讨论过

您应该考虑在 HomeControllerWebApplicationInitializer 中使用更具体的映射。

关于java - 无 XML 的 Spring 3.1 未找到 HTTP 请求的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13373338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com