亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

手把手做一個JSP入門程序(六):獲取單一商品詳情

2019-11-08 02:36:32
字體:
來源:轉載
供稿:網友

獲取單一商品詳情

拓展BookDAO類,實現根據isbn值獲取書籍信息方法

??其實現和獲取所有的商品是非常相似的。這里還用到了一個PReparedStatment的一個可以傳參的屬性。

public Book getBookByISBN(String isbn){ Connection conn = null; PreparedStatement preStmt = null; ResultSet bookSet = null; try{//--------------- 1. 連接數據庫------------------ conn = DBHelper.getConnection();//--------------- 2. 執行SQL語句,接收執行結果集ResultSet ------------------ String sql = "select * from book where isbn=?;"; preStmt = conn.prepareStatement(sql); preStmt.setString(1, isbn); bookSet = preStmt.executeQuery();//--------------- 3. 處理執行結果集ResultSet ------------------ if(bookSet.next()){ Book book = new Book(); book.setAuthor(bookSet.getString("author")); book.setImg(bookSet.getString("img")); book.setIntro(bookSet.getString("intro")); book.setIsbn(bookSet.getString("isbn")); book.setName(bookSet.getString("name")); book.setPrice(Float.parseFloat(bookSet.getString("price"))); book.setPrice_original(Float.parseFloat(bookSet.getString("price_original"))); book.setPublish_company(bookSet.getString("publish_company"));// 時間格式化 SimpleDateFormat dateformat = new SimpleDateFormat( "yyyy年MM月dd日 "); ParsePosition pos = new ParsePosition(0); book.setPublish_time(dateformat.parse(bookSet.getString("name"),pos)); return book; }else{ return null; } }catch(Exception ex){ ex.printStackTrace(); return null; }finally{//--------------- 4. 必要的關閉ResultSet、Statement ------------------// 為了確保資源不被占用,需要在fianlly釋放資源,注意這里不可以關閉Connection,否則會報錯// 釋放 ResultSet if(bookSet != null){ try{ bookSet.close(); bookSet = null; }catch(Exception ex){ ex.printStackTrace(); } }// 釋放語句對象:PreparedStatement if(preStmt != null){ try{ preStmt.close(); preStmt = null; }catch(Exception ex){ ex.printStackTrace(); } } }}

顯示單一商品詳細頁

??我們不難發現,index.jsp頁和single頁的頭部和尾部是一樣的,因此我們可以用JSP的3個編譯指令(page、include和taglib)中的include指令來優化代碼。 使用include指令,可以將一個外部文件嵌入到當前JSP文件中,同時解析這個頁面中的JSP語句。語法如下:

<%@ include file="文件相對路徑" %>

所以,下面我們創建兩個文件:header.jsp和footer.jsp分別存放網頁的頭部和尾部代碼。然后single.jsp代碼如下。同時用同樣的方法修改index.jsp文件。 header.jsp

<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html><html lang="en"><head> <base href="<%=basePath%>"> <meta charset="UTF-8"> <title>DIAGRAM</title> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <link href="./bootstrap-3.3.0/CSS/bootstrap.min.css" rel="stylesheet"/> <link href="./css/style.css" rel="stylesheet"/> <link href="./css/single.css" rel="stylesheet"/></head><body> <nav class="navbar navbar-default" role="navigation"> <div class="logo-big"><span>D&nbsp;I&nbsp;A&nbsp;G&nbsp;R&nbsp;A&nbsp;M</span></div> <div class="container-fluid"> <div class="row nav-menuare"> <div class="navbar-header"> <a class="navbar-brand logo-small" href="#">DIAGRAM</a> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="row navbar-row"> <div class="nav-divider col-md-3 col-sm-3"><span class="divider"></span></div> <div id="navbar" class="col-md-6 col-sm-6 collapse"> <ul> <li class="li-col"><a href="#">SHOPINDEX</a></li> <li class="li-col"><a href="#">NEWBOOK</a></li> <li class="li-col li-logo"><a href="./index.jsp"><img class="logo-img" src="./img/robot.png"/></a></li> <li class="li-col"><a href="#">CART(2)</a></li> <li class="li-col"><a href="#">CUSTOMER</a></li> </ul> </div> <div class="nav-divider col-md-3 col-sm-3"><span class="divider"></span></div> </div> </div> </div> </nav>

footer.jsp

<div class="footer"> <div class="container-fluid"> <div class="row"> <div class="col-md-3"> </div> <div class="blog-coyp col-md-6"> <div class="blog text-left"><a target="_blank">GITHUB</a> | <a target="_blank">CSDN</a> | EMAIL:yangguanr@Gmail.com </div><div class="copy text-right">&copy;DoneSpeak.inc</div> </div> </div> </div> </div> <script src="./js/jquery-2.1.4.min.js"></script> <script src="./bootstrap-3.3.0/js/bootstrap.min.js"></script> <script src="./js/script.js"></script></body></html>

single.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ page import="entity.Book" %><%@ page import="dao.BookDAO" %><%@ include file="header.jsp" %> <div class="main newbook-all"> <div class="container-fluid"> <div class="row"> <% BookDAO bookdao = new BookDAO(); Book book = bookdao.getBookByISBN(request.getParameter("isbn")); if(book != null){ %> <div class="col-md-3 col-md-offset-1 col-sm-4 col-sm-offset-1"> <div class="book-img"> <img src="img/<%= book.getImg() %>" /> </div> </div> <div class="sell col-md-5 col-sm-6"> <div class="booktext"> <h3>《<%= book.getName() %>》</h3> <div class="divider divider-bookinfo"></div> <p><span class="t1">作者:<%= book.getAuthor() %></span><span class="t1">著出版社:<%= book.getPublish_company() %></span><span class="t1">出版時間:<%= book.getPublish_time() %></span><p> <p class="newbook-intro">《<%= book.getIntro() %></p> </div> <div class="snapped-up-btn-area"> <span class="cost">¥<%= book.getPrice() %></span> / <span class="cost-original">¥<%= book.getPrice_original() %></span><button class="snapup">Add To Cart</button> </div> </div> <% } %> <div class="col-md-2 record"> <div class="rec-head">瀏覽記錄</div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> <div class="rec-card"> <a href="single.html"><img class="img-rec pull-left" src="img/圖解網站分析.jpg"/></a> <div class="pull-left txt-rec">圖解網站分析<br />¥34.8</div> </div> </div> </div> </div> </div><%@ include file="footer.jsp" %>

include指令 ??以上使用include的方式屬于靜態的include指令,該指令會之間將指定文件中的內容嵌入到指令所在位置中,在進行編譯。如果被嵌入的文件需要經常改變,建議使用操作指令。 是動作指令,其與上面的<%@include %>編譯指令有很大不同,它不是將文件的內容直接嵌入,而是獨立運行完之后,將生成的輸出結果(html)嵌入,所以里面的java代碼是不會被導入的。事實上,用指定的文件會獨立的生成一個Servlet,而<%@ include%>不會。基本語法格式如下:

<jsp:include page="{relativeURL | <%=expression%>}" flush="true"/><%-- 或者 --%><jsp:include page="{relativeURL | <%=expression%>}" flush="true"> <jsp:param name="parameterNmae" value="parameterValue" /></jsp:include>

(動態導入)與<%@ include%>(靜態導入)的區別:

靜態導入是代碼完全融入被導入文件的代碼,動態導入只是導入被導入的文件運行之后的內容; 靜態導入是原文件和被導入文件融合成一個Servlet,而動態導入被導入文件會成為一個獨立的于原文件的Servlet。 靜態導入的編譯指令有效,動態導入的編譯指令失效;

動態代碼可以添加額外的參數。

??此外,每個JSP開始的那行代碼為page編譯指令,還有<%@ page import="dao.BookDAO"%>也是page編譯指令。taglib編譯指令的作用是用于定義和訪問自定義標簽。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久999| 欧美电影第一页| 久久视频在线观看免费| 57pao精品| 日韩一区二区精品视频| 伊是香蕉大人久久| 在线精品播放av| 国产午夜精品一区二区三区| 91po在线观看91精品国产性色| 欧美成人精品一区二区| 欧美国产日产韩国视频| 欧美在线视频免费观看| 日韩欧中文字幕| 97久久精品人人澡人人爽缅北| 北条麻妃99精品青青久久| 欧美高清在线播放| 在线精品高清中文字幕| 久久综合久久八八| 一本大道香蕉久在线播放29| 国产精品黄色av| 久久香蕉精品香蕉| 亚洲成av人影院在线观看| 国内揄拍国内精品少妇国语| 国内外成人免费激情在线视频网站| 亚洲成av人片在线观看香蕉| 国产剧情日韩欧美| 国产精品99久久久久久久久久久久| 黄色成人在线播放| 久久91精品国产91久久跳| 日韩精品久久久久久久玫瑰园| 成人高清视频观看www| 欧美日韩一区二区在线播放| 亚洲人成电影在线播放| 91av视频在线| 久久人人爽人人爽人人片亚洲| 亚洲天堂色网站| 38少妇精品导航| 国产亚洲a∨片在线观看| 欧美一区二区影院| 欧美日韩高清区| 欧美自拍大量在线观看| 国产精品视频免费在线观看| 亚洲美女性生活视频| 国产精品亚洲一区二区三区| 中文字幕av日韩| 热99精品只有里视频精品| 成人免费观看网址| 亚洲欧美国产精品久久久久久久| 国语自产精品视频在线看一大j8| 欧美性xxxxxxxxx| 亚洲天堂免费视频| 国产日韩欧美日韩| 国产aaa精品| 国产亚洲精品久久久久久777| 97不卡在线视频| 精品国产乱码久久久久久虫虫漫画| 国产亚洲一级高清| 69影院欧美专区视频| 亚洲桃花岛网站| 欧美在线一区二区视频| 国产日韩精品在线观看| 2018日韩中文字幕| 国产深夜精品福利| 日韩电影免费在线观看| 91久久国产婷婷一区二区| 国产精品亚洲美女av网站| 久久精品国产精品亚洲| 中文字幕亚洲无线码在线一区| 精品视频www| 国产精品久久一区主播| 久久久综合av| 欧美另类交人妖| 久久在精品线影院精品国产| 日韩精品视频中文在线观看| 国产视频亚洲精品| 久久久久久成人精品| 欧美成人精品不卡视频在线观看| 中文日韩在线观看| 久久久久久久久久久网站| 欧美在线亚洲一区| 国产精品视频区| 日韩大陆欧美高清视频区| 国产97在线亚洲| 久久中文精品视频| 国产精品女人久久久久久| 97在线看免费观看视频在线观看| 国产精品草莓在线免费观看| 国产欧美韩国高清| 在线看国产精品| 韩国精品久久久999| 亚洲成人精品视频| www.欧美精品一二三区| 日本久久久久久| 久久手机精品视频| 成人xvideos免费视频| 欧美午夜精品在线| 久久人人爽人人爽爽久久| 国产精品6699| 久久精品国产久精国产思思| 一区二区三区在线播放欧美| 成人写真福利网| 国产精品自拍偷拍视频| 欧美自拍大量在线观看| 久久免费国产精品1| 亚洲人成欧美中文字幕| 国产精品久久久久久久久| 欧美福利小视频| 最近2019中文字幕在线高清| 九九视频这里只有精品| 久久天天躁狠狠躁老女人| 精品久久久久久亚洲精品| 成人黄色免费网站在线观看| 日韩久久精品成人| 日韩在线播放av| 中文字幕亚洲情99在线| 欧美激情二区三区| 欧美激情精品久久久久久变态| 久久777国产线看观看精品| 色综合天天综合网国产成人网| 亚洲成人黄色网址| 日韩一区二区三区国产| 亚洲天天在线日亚洲洲精| 欧美激情xxxxx| 91九色国产视频| 国产不卡精品视男人的天堂| 91在线免费看网站| 5278欧美一区二区三区| 亚洲成人网av| 亚洲jizzjizz日本少妇| 久久久精品在线观看| 久久久久中文字幕| 精品久久久久久久大神国产| 疯狂做受xxxx高潮欧美日本| 成年人精品视频| 日韩欧美在线看| 亚洲精品美女在线| 国产a级全部精品| 日韩欧美大尺度| 久久夜色精品亚洲噜噜国产mv| 国产大片精品免费永久看nba| 日韩在线播放一区| 亚洲精品中文字幕av| 国产91热爆ts人妖在线| 日韩成人中文字幕| 亚洲成人性视频| 日本一区二三区好的精华液| 91在线高清视频| 正在播放国产一区| 国产欧美亚洲精品| 国产极品精品在线观看| 日韩精品在线观看视频| 夜夜嗨av色一区二区不卡| 国产欧美精品日韩| 日韩中文字幕在线视频| 久久久久久这里只有精品| 国产日韩欧美成人| 怡红院精品视频| 午夜精品久久久久久久99黑人| 成人女保姆的销魂服务| 欧美一区二区大胆人体摄影专业网站| 欧美在线免费视频| 国产精品h片在线播放| 韩国国内大量揄拍精品视频| 91精品国产高清自在线看超|