【问题标题】:Should I use ServletDispatcher when trying to make an angular webapp, with no jsp pages?在尝试制作没有 jsp 页面的 Angular Web 应用程序时,我应该使用 Servlet Dispatcher 吗?
【发布时间】:2015-03-09 00:27:26
【问题描述】:

我对如何制作 java webapps 和 jsp 页面有中等程度的了解。我正在尝试通过学习如何使用 Spring MVC、AngularJS 和 RESTful api 来扩展我的专业知识。

我无法在点之间画线。首先,根据我所阅读的内容,在尝试做纯 angularJS 时,应该没有真正需要 jsp 页面。所以这次我尽量不使用jsp。

我非常想制作两个 html 页面,每个页面都有一个链接。现在在一个完全基本的 Spring MVC 设置中,这将在两个控制器和 ServletDispatcher 的帮助下完成。在 servlet-context.xml (默认名称)中,我可能会将默认后缀从 .jsp 更改为 .html,但我已经读过我应该将静态 html 页面视为资源,而不是视图,因为它们不需要权力一个servlet。

问题是,我从未制作过任何不使用调度程序或前端控制器 servlet 的网页,尽管这对大多数人来说可能是完全显而易见的,但我不知道有什么替代方案。我非常怀疑我是否应该使用 ServletDispatcher,以及替代方案是什么。我有点认为 ServletDispatcher 和前端控制器模式实现是 Spring 最核心的部分之一......

那么我应该将 ServletDispatcher 用于 Angular Web 应用程序,还是应该只使用 Spring 来制作 RESTful api?

【问题讨论】:

    标签: java angularjs spring jsp spring-mvc


    【解决方案1】:

    Spring 框架允许您使用 ResourceHttpRequestHandlers 提供静态资源,它存储资源处理程序的注册,用于通过 Spring MVC 提供静态资源,例如图像、css 文件和其他资源,包括设置缓存标头以优化在 Web 浏览器中的有效加载。资源可以从 Web 应用程序根目录下的位置、类路径和其他位置提供。

    既然你已经有一个基本的spring MVC设置和运行,那么你需要将你的angularJS-app配置为静态资源,你可以选择将你的angularJS应用程序文件夹保留在webapp文件夹下,并在那里继续你的angularJS开发那里不需要任何 JSP。

    配置ResourceHttpRequestHandlers 使用 XML

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

    使用 Java 配置

    @Configuration
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/app/**").addResourceLocations("/app/");
      }
    }
    

    现在您可以使用 http://localhost:8080/context-root/app/ 访问您的 angularJS 应用程序

    您的 API 开发也将在您的 Spring MVC 控制器中继续进行。

    这是一个很棒的 YouTube 系列 Web Development Using Spring and AngularJS

    【讨论】:

    • 我对这个的第一印象非常好。我想我对自己的理解有误。我一直认为 AngularJS 是应用程序的一部分,而不是我用来编写实际完整应用程序的语言。当我的 Spring MVC 设置为打包为战争时,这种方法会在战争中打包我的角度应用程序吗?
    • 这种方法是否会在战争中打包我的 Angular 应用程序 - 是的
    • 非常感谢。我实际上并不认为我会使用这种方法,但是您消除了我的一个重大误解,并提出了一个很好的解决方案。我想我现在需要更多地研究(如果?)角度应用程序是如何构建、打包和部署到服务器的。再次感谢。
    • 很高兴我能帮上忙,如果你想走那条路,这里是angular-seed projectgithub.com/angular/angular-seed
    • 谢谢。一旦我意识到我的误解,在网上找到相关资源就容易多了,但我会确保在阅读完我当前的发现后立即查看你的链接:)
    【解决方案2】:
    1. 使用AngularJS制作静态网页(HTML+CSS+JS+其他静态资源)。
    2. 使用 Servlet 制作 RESTful API。(建议使用 Restlet 框架制作 RESTful API,它可以作为独立的 java 应用程序运行,也可以集成到 Servlet 中运行在 Tomcat 中。)
    3. JS 将调用 RESTful API 来获取数据并更新页面视图。

    【讨论】:

    • 如何构建、打包和/或部署静态资源?以前我总是将所有东西都打包在一个war-file中,并将其部署为一个应用程序。
    • 只需使用 nginx 服务静态资源。请参阅 AngularJS 的示例。
    猜你喜欢
    • 2016-02-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2020-08-29
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多