我正在使用Spring Rest控制器进行Restful调用。我有JAR的Spring 4.3.x版本。当我自己运行项目时,不会调用index.jsp。我没有在xml中配置任何东西,因为我正在使用注释方法。这是我的档案。
P.S:我没有使用Maven,它是一个动态的Web项目,所有Spring JAR(Webmvc,web,core,context,beans)都被添加到构建路径中。
我已关注http://viralpatel.net/blogs/spring-4-mvc-rest-example-json/
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.ifg.spring")
public class AppConfig {
}
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[] { "/" };
}
}
public class CustomerDAO {
// Dummy database. Initialize with some dummy values.
private static List<Customer> customers;
{
customers = new ArrayList();
// Add customers here
}
public List list() {
return customers;
}
}
@RestController
public class CustomerRestController {
@Autowired
private CustomerDAO customerDAO;
@GetMapping("/customers")
public List getCustomers() {
return customerDAO.list();
}
}
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>IFG</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
为什么它无法点击网址http://localhost:8080/IFG/customers? AppInitializer文件应该存在问题。
任何想法都将不胜感激。
答案 0 :(得分:1)
您必须在请求映射中指定IFG
。根据您的映射,当前链接应为http://localhost:8080/customers
。添加指定路径的@RequestMapping注释。
@RestController
@RequestMapping("/IFG")
public class CustomerRestController
答案 1 :(得分:0)
要使其有效,您应该添加:
@RestController
@RequestMapping("/IFG")
并检查端口号:8080
(可能是9080
或其他)
答案 2 :(得分:0)
@RestController
@RequestMapping("/IFG")
public class CustomerRestController {
@Autowired
private CustomerDAO customerDAO;
@GetMapping("/customers")
public List getCustomers() {
return customerDAO.list();
}
}
现在点击下面的网址:
本地主机:端口/ IFG /客户
答案 3 :(得分:0)
在http://localhost:8080之后,您必须在调用控制器之前提供您的应用名称。假设您的应用名称为myApp
,因此网址应为:
http://localhost:8080/myApp/customers
如果您在问题中使用控制器,如果您已根据建议的其他答案添加到控制器@RequestMapping("/IFG")
,则必须将网址更改为:
http://localhost:8080/myApp/IFG/customers
修改强>
我在AppInitializer
班级中看到您从getServletConfigClasses()
返回null。我相信AppConfig.class
应该返回那里。
@Override
protected Class[] getServletConfigClasses() {
return new Class[] { AppConfig.class };
}
答案 4 :(得分:0)
只需尝试访问$qty.val(currentVal + 1).trigger('change');
(不带/ IFG),只需在我的tomcat上本地复制该项目,它就能正常运行,而无需运行http://localhost:8080/customers
。
您在web.xml mvn tomcat7:run
中的设置不是要访问的应用程序上下文路径。
来自文档:
显示名称
可选的display-name元素指定Web 应用程序显示名称,GUI可以显示的短名称 工具。
答案 5 :(得分:0)
刚检查它是由于javax.servlet.ServletException:无法实例化WebApplicationInitializer类。我通过添加commons-logging-1.2.jar,spring-aop,spring-expression jar来解决这个问题。至少我能够指出正确的方法。