带有Angularjs的Spring MVC,正确处理角度路由页面

时间:2017-09-25 14:35:28

标签: angularjs spring spring-mvc angular-routing

我正在尝试使用Angularjs为UI创建一个应用程序,包括用于模块化的angular-route,然后调用Spring MVC来调用DAO来执行一些基本的CRUD。麻烦在于两者同时工作。到目前为止,我做的每件事都会导致404中的一个。

我可能错了,但我认为问题源于web.xml,特别是url-pattern。例如,如果我像这样设置映射:

<servlet-mapping>
    <servlet-name>MyApp</servlet-name>
    <url-pattern>/obviousJunk</url-pattern>
</servlet-mapping>

然后应用程序运行,我可以预览我的html页面,看看我的所有<div><table><img>看起来都很漂亮。这些网页包含http://localhost:8080/MyApp/#!/homehttp://localhost:8080/MyApp/#!/categoryList形式的网址 等等,也就是说,都有角度路线“#!”图案。

使用此<url-pattern>,当然无法调用我的servlet。但是,如果我将上述内容更改为:

<servlet-mapping>
    <servlet-name>MyApp</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

点击http://localhost:8080/MyApp/services/category/list,然后我就可以成功执行此方法:

@RequestMapping(value="/services/category/list", method=RequestMethod.GET)
public @ResponseBody String listCategory() {
    return "Hello, World";
    // TODO: modify this method to make a DAO call and return a list of categories
}

但我的所有网页都带有“#!”突然去404,因为没有控制器方法可以为他们服务,也不应该有。

我认为如果我用“/ services /”开头所有服务调用URL(如上所示),那么我可以修改我的web.xml(使用和不使用*)

<servlet-mapping>
    <servlet-name>MyApp</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

同样,我更改了@RequestMapping注释以包含和删除“/ services”部分。不好 - 我可以再次查看我的页面,但服务调用404.甚至从不调用控制器方法。我还注意到在服务方法调用结束时添加“.do”以及进行上述<url-pattern>*.do</url-pattern>的一些示例。这也失败了 - http://localhost:8080/MyApp/services/category/list.do给出404和 即使在@RequestMapping值末尾添加“.do”,也永远不会调用controller方法。

我在这里读了几个关于从<url-pattern>中排除特定内容的问题,即任何带有“#!”的内容。在它,但答案都说这个 不可能。我还简单地尝试了@RequestMapping(value="/#!/**")无所事事的方法,它从未被调用过(我怀疑它不起作用,但值得一试。)

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

http://localhost:8080/MyApp/#!/home将在root(http://localhost:8080/MyApp/)上向服务器发出请求。 #Url不会成为请求的一部分。

相关问题