【问题标题】:How to serve (React-)html pages in Spring Boot 5?如何在 Spring Boot 5 中提供(React-)html 页面?
【发布时间】:2018-12-20 00:45:20
【问题描述】:

我是使用 Spring Boot 和 React 开发的新手。我正在尝试开发一个基于 Web 的向导应用程序,具有多种形式。使用 Spring Boot 作为后端,使用 React 作为前端框架。我想为向导任务提供一个登录表单以及多个表单。 不幸的是,我无法让 Spring Boot 自动将我的 html 文件提供给 URI。例如 test.html 显示在 http://localhost:8080/test 上。 那么如何将 (React-)html 文件链接到 Spring Boot 的 URI?

我已经成功地将 React 与 Spring Boot 结合起来,以便我的 index.html 与 React 内容显示在 http://localhost:8080 上。因此 index.html 会自动找到并映射到路径“/”。 index.html 与其他“.html”文件一起位于名为 public 的 React 文件夹中。但只有 index.html 似乎被 Spring Boot 自动识别。我使用了错误的文件夹吗?

- public
     + index.html
     + login.html
     + publicNoSecurity.html
     + ...
 - src
    + main
     + java
         + com
             * ressources
                 - application.properties
             * webwizard.connection
                 - SelfServiceWebwizard.java
 - index.tsx
 - index.css
 - ...

当我打开例如 publicNoSecurity 时,我得到 404 错误: no controller -> 404

我还尝试为 URI 实现一个带有 Requestmappings 的控制器类。但这也无济于事:

@Controller
public class DefaultController 
{
    @RequestMapping("/login")
    public String login() {
    return "login";
    }

    @RequestMapping("/publicNoSecurity")
    public String publicNoSecurity() {
    return "publicNoSecurity";
    }
}

使用控制器时,我收到 500 错误和异常: with controller -> 500

2018-07-12 08:35:10.103 错误 13560 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] :Servlet.service() for 带有路径 [] 的上下文中的 servlet [dispatcherServlet] 引发异常 [圆形视图路径 [publicNoSecurity]:将调度回 当前处理程序 URL [/publicNoSecurity] 再次。检查您的 ViewResolver 设置! (提示:这可能是未指定视图的结果,由于 默认视图名称生成。)] 根本原因

javax.servlet.ServletException:圆形视图路径 [publicNoSecurity]: 将发送回当前处理程序 URL [/publicNoSecurity] 再次。检查您的 ViewResolver 设置! (提示:这可能是由于 由于默认视图名称生成,未指定的视图。)在 org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:209) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:147) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) ~[spring-webmvc-5.0.7.RELEASE.jar:5.0.7.RELEASE]

完整代码可以在github上看到:https://github.com/The-Taskmanager/SelfServiceWebwizard

【问题讨论】:

    标签: spring reactjs spring-boot


    【解决方案1】:

    自己解决。我错过了返回值中的“.html”:

    @Controller
    public class DefaultController 
    {
    @RequestMapping("/login")
    public String login() {
    return "login.html";
    }
    
    @RequestMapping("/publicNoSecurity")
    public String publicNoSecurity() {
    return "publicNoSecurity.html";
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2015-10-30
      • 2016-02-11
      • 2017-03-10
      • 2019-12-11
      • 2017-07-12
      • 2017-10-09
      • 2013-02-13
      • 2023-02-03
      相关资源
      最近更新 更多