gpt4 book ai didi

java - 在 Tomcat 上运行 Spring 4 Controller 时找不到请求资源

转载 作者:行者123 更新时间:2023-11-28 23:27:18 25 4
gpt4 key购买 nike

我尝试运行一个简单的代码,但似乎无法让它工作并调用 Controller

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mypackage")
public class AppConfig extends WebMvcConfigurerAdapter {
public void configureViewResolvers(ViewResolverRegistry registry) {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
registry.viewResolver(viewResolver);
}

/**
* Configure ResourceHandlers to serve static resources like CSS/ Javascript etc...
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}

}

这是我的配置文件,然后我在 com.mypackage 中有一个 Controller ,如下所示:

@Controller
@RequestMapping("/")
public class testControler {

@Autowired
AppDataService appDataService;

@RequestMapping(value = "/hello")
public Model register(Model model){


model.addAttribute("name", "Y");
return model;
}

@RequestMapping("/")
public String index(ModelMap model){

Date start = new Date();
System.out.println(start);
List<AppData> app = appDataService.getListAppData();
Date end = new Date();
System.out.println(end);

String result = "";
for (Object a : app) {
result+=a+" <br>";
}
model.addAttribute("name", result);

return "hello";
}
}

并且我添加了 hello.jsp。当我通过 eclipse 在 tomcat 服务器上运行项目时,我没有得到 hello.jsp 但我得到了找不到资源,错误 404。我不确定我在这里做错了什么,因为我的理解我应该让起始页点击这个 Controller ,因为 @RequestMapping("/") 但我不确定哪里出了问题或者这里出了什么问题。

我也有注释版本的web.xml如下:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { AppConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}

}

最佳答案

1).在 testControler@RequestMapping("/") 之上再移除一个,因为它会产生双重映射,因为它已经存在于 index() 方法中。

2).修改您的 configureViewResolvers() 以返回 ViewResolver 对象。然后用 @Bean 注释它:

@Bean
public ViewResolver configureViewResolvers() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver ;
}

像这样:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.mypackage")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver configureViewResolvers() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver ;
}

/**
* Configure ResourceHandlers to serve static resources like CSS/ Javascript etc...
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}

}

关于java - 在 Tomcat 上运行 Spring 4 Controller 时找不到请求资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269407/

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