【问题标题】:Jsp based spring mvc to rest mvc基于jsp的spring mvc to rest mvc
【发布时间】:2016-06-24 22:39:21
【问题描述】:

我已经开始学习spring mvc,作为练习,我正在开发一个小型应用程序,它使用jsp作为前端,spring mvc作为后端。

现在我正在尝试从基于 jsp 的应用程序转移到基于 REST 的应用程序。我在前端使用 AngularJs 和 html。现在我的目标是前端和后端应该只通过 REST 进行通信。我的前端应用程序是一个多页应用程序,为了从一个页面导航到另一个页面,我创建了超链接(href)。

但是超链接不起作用,因为我总是收到 404 响应,所以我最终编写了一个逻辑较少的请求映射方法。

这是控制器

@Controller
@RequestMapping("query/")
public class QueryController {
    @Autowired
    private SpaceAccessorService spaceAccessorService;

    @RequestMapping(value = "queryboard", method = GET)
    public String queryBoard() {
        return "query/queryboard";
    }

    @RequestMapping(value = "TabbedSpaces", method = GET)
    public String spaces() {
        return "query/TabbedSpaces";
    }

    @RequestMapping(value = "getListOfAllSpacesForGrid")
    public
    @ResponseBody
    List<String> getListOfAllSpacesForGrid(@RequestParam String gridName) {
        return spaceAccessorService.getAllSpacesForGrid(gridName);
    }
}

这是我的 servlet xml

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>classpath:/config.properties</value>
        </property>
    </bean>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/html/" />
        <property name="suffix" value=".html" />
    </bean>

我的印象是,如果我删除 ViewResolver,我的 href 应该像普通 html 一样工作,但它总是返回 404 状态。我想摆脱这些请求映射,它应该只使用

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。

标签: java spring spring-mvc


【解决方案1】:

我想问题是 viewResolver 不提供静态 html 页面,你需要做的就是将你的 html 页面添加为资源,例如:

<mvc:resources mapping="/resources/**" location="/resources/"/>

并使用 angular 或 jsp:include 将其包含到 jsp 中

【讨论】:

  • 已经到位。但我的 html 页面不在资源下,它们在 WEB-INF/html/query/ 下。我会检查保留资源是否有效,但这是正确的组织方式吗?
  • 不,它不起作用,我尝试使用 .jsp,但它不起作用,但第二个注意事项是,uri 应该对应于视图名称,或者它应该由控制器负责返回视图名称将允许我稍后更改相同网址的视图?
  • 不,控制器应该返回不带扩展名的视图名称,但它必须是 viewResolver 中“prefix”属性下的 jsp 页面,并且在这个 jsp 中,通过 angular 引用来自 webapp/resources 的 html 页面(ng-view) 或使用 jsp:include
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 2019-10-06
  • 2014-12-05
相关资源
最近更新 更多