30

我正在通过启动一个嵌入式tomcat春足并想为静电发球索引.html页面作为正在运行的应用程序的一部分。

但以下操作不起作用:

@SpringBoot应用程序公共类HMyApplication{公共静态void main(String[]args){SpringApplication.run(MyApplication.class,args);}}@Rest控制器公共类HomeController{@请求映射(“/”)公共字符串索引(){返回“index”;}}src/main/resources/static/index.html

结果:当我打电话时本地主机:8080,我只看到单词“index”,但没有看到我的html页面。为什么?

7
  • 17
    那是因为@Rest控制器是的元注释@控制器响应正文,这意味着它将“索引”写入响应输入流。你应该使用@控制器相反,这样“索引”将被解析为视图名称。 评论 2015年8月7日11:20
  • 噢,你是对的,绝对正确。我可能对开发@Rest控制器肩并肩。无论如何,我现在使用得到以下异常@控制器:javax.servlet。ServletException:无法解析名为“dispatcherServlet”的servlet中名为“index”的视图.返回都不起作用索引.html而不是。 评论 2015年8月7日11:26
  • 我认为视图名称应该是静态/index.html 评论 2015年8月7日11:29
  • 两者都不是静态/索引也不是静态/index.html作品。 评论 2015年8月7日11:30
  • 看下面我的答案,我解决了。 评论 2015年8月7日11:46

4个答案4

重置为默认值
18

我的错:我额外上了一节课@启用WebMvc注释。这不知怎么搞砸了spring-boot的自动配置。我把它取下了,现在它可以工作了索引.html.

0
11

对我来说,这很管用,我确信有一种更好的方法(比如不用.html)。

@请求映射(“/”)公共字符串索引(){return“index.html”;}
  • 如果您使用JSP页面(index.JSP),那么您可以使用返回“index”。 评论 2017年7月28日6:39
  • 1
    这是可行的,但是如果我将控制器更改为特定映射,它会显示404。例如,控制器映射:@Controller@RequestMapping(“/user)”和方法映射:@RequestMapping(”/{id}“),然后我得到一个404错误。它只适用于请求映射“/”。
    – 凯凯
    评论 2018年1月31日10:36
  • 如果需要json数据作为响应,则应使用@RestController类中的映射。如果你需要一个视图,那么它会变得有点复杂。你想做什么?通常,如果您将静态资源置于资源/静态文件夹结构由于springboot,它会自动工作。此外,如果您使用/{id},那么应该在方法params中包含@PathVariable(“id”),这样它才能正常工作,但不确定您是否故意省略了它。 评论 2018年1月31日10:48
1

你可以使用模型和视图为了在springboot中提供静态HTML内容。

@请求映射(“/”)公共ModelAndView主页(){ModelAndView ModelAndView=新建ModelAndView();modelAndView.setViewName(“索引”);返回模型和视图;}

应用程序属性:-

spring.mvc.view.suffix=.html

HTML文件:-src/main/resources/static/index.HTML

0

这是因为@RestController注释,删除这个注释对我来说很有效。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.