皮膚 顏色
板式
寬屏 窄屏

使用 Bootstrap 和 Spring MVC 實(shí)現響應式 Web 設計

發(fā)表日期:2015-06-01    文章編輯:本站編輯   來(lái)源:網(wǎng)絡(luò )    瀏覽次數:

簡(jiǎn)介

響應式Web設計是一種創(chuàng )建Web應用程序的新方法。一旦采用響應式Web設計創(chuàng )建出應用程序,那么該Web應用程序將能輕而易舉地運行于包括移動(dòng)和手持設備在內的任意設備之上。Twitter公司開(kāi)源了他們的Twitter Bootstrap框架,該框架支持響應式Web設計Responsive Web Design,簡(jiǎn)稱(chēng)RWD)。Kickstrap是Twitter Bootstrap的一個(gè)變種。我將在本博文中演示,如何創(chuàng )建一個(gè)基于Spring MVC的應用,該應用采用jquery-tmpl創(chuàng )建了基于RWD的JSON。

我們將要涉及的用例(use case)是一個(gè)簡(jiǎn)單的航班訂票系統。在該系統中給定始發(fā)地、目的地、始發(fā)和到達日期,將返回所有航班。當選定某一航班后,將在目標位置列出所有的交易。

著(zhù)急的人可以先到 @ Github上獲得代碼和步驟。


響應式Web設計

有三個(gè)關(guān)鍵的技術(shù)特性,是響應式Web設計的核心:

靈活的基于網(wǎng)格的布局:在移動(dòng)設備上查看頁(yè)面時(shí),如果設備的朝向從橫向改為豎向時(shí),頁(yè)面布局會(huì )自動(dòng)地調整并在新布局中展開(kāi)內容進(jìn)行顯示,這就是靈活的基于網(wǎng)格的布局。在Twitter Bootstrap中,可以使用如下的CSS標簽(tag)來(lái)實(shí)現:

<div class="row-fluid"><!-- put some HTML stuff --></div>

靈活的圖像:動(dòng)態(tài)調整圖像的尺寸

媒介查詢(xún):這個(gè)是CSS3的特性,該特性可以通過(guò)查詢(xún)媒介設備將適當的CSS返回給瀏覽器。使用到的HTML標簽如下例所示:

<!-- for iPad, this is how the media query looks like -->
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">

Spring MVC和Twitter Bootstrap

整體的數據流如下圖所示。(圖丟了?。?!

使用Spring MVC和Twitter Bootstrap進(jìn)行響應式Web設計

在這個(gè)例子中,我們采用Twitter BootstrapJQuery-tmpl創(chuàng )建了一個(gè)單頁(yè)Web站點(diǎn)。在前端,數據是用以下的方式提交的:

$('#searchResults').click(function(){
var origin =&nbsp; $("#origin option:selected").val();
var destination = $("#destination option:selected").val();
var startDate= $("#startDate").val();
var endDate = $("#endDate").val();

$.get("resources/datatemplates/flightList.html", function (template){
$.get("/air/searchResultsJson?leavingFrom=" + origin + "&goingTo=" + destination + "&startDate=" + startDate + "&endDate=" + endDate, function (data){
$("#dataRegion").html("");
$.tmpl(template, data).appendTo("#dataRegion");
});
});
return false;
}
這里執行了JQuery,獲得了以JSon對象形式存儲的航班列表。

JQuery-tmpl插件用來(lái)綁定flightList.html,從而實(shí)現單頁(yè)面Web站點(diǎn)設計。flightList.html文件內容如下所示:

<tr>
<td>${startTime}</td>
<td>${startAirport}</td>
<td>${endTime}</td>
<td><a href="#" onclick="return getDetails('${endAirport}')">${endAirport}</a></td>
</tr>
Spring MVC側,需要添加Maven依賴(lài)并調用相關(guān)方法,可從該 鏈接獲得更詳細的講解。

控制器(controller)的代碼如下所示:

@RequestMapping(value = "searchResultsJson", method = RequestMethod.GET)
public @ResponseBody
List searchResultsJson(@RequestParam String leavingFrom,
@RequestParam String goingTo, @RequestParam String startDate,
@RequestParam String endDate) {
Form form = new Form();

form.setOrigin(leavingFrom);
form.setDestination(goingTo);
form.setStartDate(startDate);
form.setReturnDate(endDate);

return locationService.selectFlights(form);
}
上面的例子中, @ResponseBody用于將JSon響應返回到客戶(hù)端。

相關(guān)文章推薦

  
Socket 和 WebSocket 有哪些區別和聯(lián)系? WebSocket 和 HTML5 是什么關(guān)系? 必須在瀏覽器中才能使用...
  
其實(shí)對于我們一般理解的計算機內存,它算是CPU與計算機打交道最頻繁的區域,所有數據都是...
  
簡(jiǎn)介 響應式Web設計 是一種創(chuàng )建Web應用程序的新方法。一旦采用 響應式Web設計 創(chuàng )建出應用程序...
  
用div做成表格的形式,把標簽中間的空格都去掉就可以了...
  
看下面的代碼,其中連接池采用的c3p0,配置文件省略 import java.sql.Connection; import org.springframe...
  
主要幾個(gè)框架或者插件是如何實(shí)現異步加載事件響應的。 一.LABjs 這個(gè)項目位于github上面,其本...
  
html5shiv讓IE6-IE8支持HTML5標簽 越來(lái)越多的站點(diǎn)開(kāi)始使用 HTML5 標簽。但是目前的情況是還有很多人...
  
緩存 是實(shí)際工作中非常常用的一種提高性能的方法, 我們會(huì )在許多場(chǎng)景下來(lái)使用緩存。 本文通...
  
為了防止惡意用戶(hù)發(fā)布惡意內容,我們的安全分析瀏覽器都在虛擬機上運行。這使我們能夠確...
?