0

我正在尝试通过带有一些 Spring Security 配置的 Spring MVC+REST 公开一个 REST API。但是,我得到了 404。

这是代码。

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app ...>
    <display-name>REST Project</display-name>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>rest</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>rest</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

休息小服务程序:

<?xml version="1.0" encoding="UTF-8"?>
<beans ... />
    <mvc:annotation-driven />
  </beans>

mvc 配置:

<?xml version="1.0" encoding="UTF-8"?>

<beans ...>

    <mvc:annotation-driven />
    <bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

应用上下文:

<?xml version="1.0" encoding="UTF-8"?>
<beans ... ">
    <context:component-scan base-package="org.my.project" />
</beans>

最后,服务 REST 控制器

@RestController
@RequestMapping("/service")
public class Service {

    @RequestMapping(value = "/public/{name}", method = RequestMethod.GET)
    public String storeEntityPublic(@PathVariable String name) {
        // do something

        return result;
    }
}

网址:localhost:8080//service/public/aname

我错过了什么?

4

1 回答 1

-1

在您的localhost:8080/service/public/aname, 上下文名称丢失,这就是您收到 404 错误的原因。URL 应该是这样的localhost:8080/abc/service/public/aname,这里 abc 是我的项目或上下文名称。所以请添加上下文名称并再次点击新网址。

于 2015-08-04T11:46:14.723 回答