基于Web的网站和基本的HTML网站?

我有一个网站(基于JSP / Servlets,使用MVC模式),我想支持基于AJAX的网站和基于HTML的基本网站。 网站访问者应该能够将浏览模式从Ajax更改为基本HTML,反之亦然 - 正如Google邮件中所述。

问题:

  • 轻松实现此目标的最佳方法是什么?
  • 我应该为每个页面设计两个视图吗?
  • 作为这个答案的结果,我使用JQuery和JSON。


    您需要Unobtrusive Javascript,这是Progressive Enhancement的一部分。

    首先,开始创建一个功能齐全的 web应用程序,而不需要任何的Javascript代码。 一旦你得到它的工作,然后开始编写“接管”原始HTML工作,而无需更改任何HTML / CSS行的Javascript代码。 在服务器端代码中,您需要添加逻辑来识别请求是否已被JavaScript触发并相应地返回响应。 您可以通过在浏览器中禁用JavaScript来测试这两种情况。 在Firefox中,使用Web Developer Toolbar很容易。

    例如,您有一个邮件列表,其中包含应显示邮件正文的所有HTML链接:

    <a href="mail/show/1" class="show">Message title</a>
    

    如果没有JavaScript,这会向加载由1标识的邮件的servlet发出HTTP请求,并将请求转发给JSP,该JSP会在视图中隐藏邮件列表并在视图中显示邮件。

    使用JavaScript / jQuery,您需要编写与Ajax帮助完全相同的代码,例如:

    $('a.show').click(function() {
        $.getJSON(this.href, callbackFunctionWhichHidesListAndShowsMail);
        return false;
    });
    

    在服务器端,您必须区分正常请求和ajax请求,以便您可以相应地返回响应。

    boolean ajax = "XMLHttpRequest".equals(request.getHeader("x-requested-with"));
    
    // ...
    
    if (ajax) {
        writeJson(response, mail);
    } else {
        request.setAttribute("mail", mail);
        request.getRequestDispatcher("/WEB-INF/mail.jsp").forward(request, response);
    }
    

    最后,为了给用户一个手动切换模式的选项,你必须设置一个cookie,或者最好(因为cookie是禁用的)在URL中传递一些信息(pathinfo或request参数),强制服务器禁止发送<script>行。


    以html版本为基础。 先建立这个。

    然后在其上覆盖额外的ajax功能作为可选层,根据需要拦截默认的html行为。 不需要两个视图,只需一个视图即可根据可用技术和/或用户偏好逐渐添加增强的功能。


    你非常明智地尝试渐进增强。 这里有一篇很好的文章A List Apart:理解渐进式增强,我必须赞扬这个SO应答; 优雅的考虑何时考虑。 我认为Graceful Degredation是考虑支持不同浏览器功能的更负面的方式; 渐进增强和优雅退化有什么区别?

    链接地址: http://www.djcxy.com/p/46057.html

    上一篇: based website and basic HTML website?

    下一篇: Access Java / Servlet / JSP / JSTL / EL variables in JavaScript