springboot整合jsp,實現公交車站路線圖
阿新 • • 發佈:2021-01-05
開發環境:
- jdk 8
- intellij idea
- tomcat 8
- mysql 5.7
- maven 3.6
所用技術:
- springboot
- jsp
- 資料靜態初始化
專案介紹
使用springboot整合jsp,在後端寫入公交路線名稱和詳細站點,前端頁面可條件查詢具體的內容,如公交路線,公交名稱,車倆資訊等。
執行效果
前臺使用者端:
- 路線選擇
- 路線詳情
資料準備:
BusData.txt
準備工作:
pom.xml加入jsp模板引擎支援:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
springboot配置jsp
spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp
重要程式碼:
bus資料初始化
@PostConstruct private void initBusData(){ try{ File file = new File(BusMap.getClass().getResource("/").getPath()); FileReader fileReader = new FileReader(file.getPath()+"/static/BusData.txt","GBK"); //初始化BusData.txt 資料 List<String> readLines = fileReader.readLines(); for(String str:readLines){ if(!"".equals(str)){ String[] data=str.split("#"); String way=data[0]; //幾路線 String location=data[1];/ /地名 String[] locations=location.split(","); List<Bus> list=new ArrayList<>(); for(int i=0;i<locations.length;i++){ int busnum=0; if(i%4==0){ //隨機busnum busnum=1; }if(i%5==0){ busnum=2; } Bus bus=new Bus(locations[i],busnum); list.add(bus); } WayList.add(way); //新增路線 BusMap.put(way,list); //新增車站 } } }catch (Exception e){ e.printStackTrace(); } }
路線查詢
@RequestMapping("/way") public String search(HttpServletRequest request,String way) { try { if(null==way||"".equalsIgnoreCase(way)){ request.setAttribute("list",BusMap.WayList); //沒有搜尋預設顯示所有路線 return "way"; }else{ List<String> wayList=new ArrayList<>(); //模糊查詢路線 for(String str:BusMap.WayList){ if(str.indexOf(way)>-1){ wayList.add(str); } } if(wayList.size()>0){ request.setAttribute("list",wayList); //模糊搜尋出來的路線列表 return "way"; }else{ return "noView"; //沒有所選路線 } } } catch (Exception e) { e.printStackTrace(); } return "way"; }
公交車路線站展示
@RequestMapping("/view") public String view(HttpServletRequest request,String way) { try { List<Bus> list= BusMap.getBusMap(way); if(list.size()>0){ request.setAttribute("list",list ); //獲取總路線 request.setAttribute("firstBus",list.get(0).getLocation()); //第一站 request.setAttribute("lastBus",list.get(list.size()-1).getLocation()); //最後一站 int size = list.size(); size =(size-1)*99; request.setAttribute("size",size); return "view"; } } catch (Exception e) { e.printStackTrace(); } return "noView";//沒有對應公交車站 } //前端頁面資料渲染 <div class="pageContent" style="background: #eeeeee;"> <div class="pageFormContent" layoutH="55"> <div class="timeText">${firstBus}<----->${lastBus} <span>( 首/末班車時間:<span style="color: red">6:00 / 23:00</span>)</span> </div> <div class="timezone" style="margin-top: 20px"> <c:forEach var="list" items="${list}" varStatus="s"> <div class="time" <c:if test="${s.index!=0}"> style="top: ${s.index*100+25}px;" a="1" </c:if> ><a onclick="javascript:alert(1);">${s.index+1}</a> <h2>${list.location}</h2> <c:if test="${list.busNum>0}"> <span class="timezone3"></span> <div> <p><span style="padding-left: 30px;">${list.busNum}輛公交</span></p> </div> </c:if> </div> </c:forEach> </div> </div> <div class="formBar"></div> </div>
專案總結
- 專案存放路徑最好不要帶中文路徑,否則可能存在靜態busData資源初始化失敗
- 頁面時間車站路線所採用時間軸方式展示,長度動態計算,部分瀏覽器顯示可能有點錯位
- 其他後續迭代功能後續開發,敬請關注
以上就是springboot整合jsp,實現公交車站路線圖的詳細內容,更多關於springboot整合jsp的資料請關注我們其它相關文章!