我试图运行一个简单的Spring应用程序,但这是不可能的。
我有这个控制器:
@Controller("home")
public class Home {
@RequestMapping("/showHome")
public String showHome(){
return "index";
}
}
这是ViewResolver
:
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
当我像这样运行这个程序时,我得到404 not found
, URL是:http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/
但是,当我像这样改变控制器类和方法时:
@Controller
public class Home {
@RequestMapping("/")
public String showHome(){
return "index";
}
}
我的索引页工作。
在您的第一个版本中,@Controller("home")
它所做的只是将home
设置为Home
bean名称,仅此而已。重要的是@RequestMapping("/showHome")
。有了这个,你说你的showHome()
方法将在http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/showHome
可用。
在你的第二个版本中,你使用的是@RequestMapping("/")
,它没有设置额外的路径,这就是http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/
工作的原因。
如果您试图将所有端点的路径设置为以"home"你需要
@Controller
@RequestMapping("/home")
public class Home {
@RequestMapping("/showHome")
public String showHome(){
return "index";
}
...
@RequestMapping("/someOtherEndpoint")
public String someOtherEndpoint(){
}
}
以上内容可在http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/home/showHome和http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/home/someOtherEndpoint找到
否则,正如有人提到的,您只是设置bean本身的名称,然后使用"/"在showHome端点上声明的路径。