版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章Servlet編程本課教學(xué)內(nèi)容Servlet的工作原理Servlet生命周期Servlet的API如何接收請(qǐng)求并返回響應(yīng)MVC模式的原理與應(yīng)用回顧Servlet概念
應(yīng)用在服務(wù)器端接收客戶端請(qǐng)求并作出響應(yīng)的JAVA類(lèi)Servlet作用
Servlet技術(shù)主要完成大量邏輯處理,可以處理瀏覽器請(qǐng)求,也可處理一個(gè)客戶端的應(yīng)用程序請(qǐng)求,可以訪問(wèn)數(shù)據(jù)庫(kù),進(jìn)行計(jì)算處理,將結(jié)果返回客戶端Servlet創(chuàng)建
Servlet類(lèi)繼承自HttpServlet,覆蓋doGet、doPost方法之一或全部Servlet的配置與部署
需要配置<servlet>和<servlet-mapping>兩個(gè)節(jié)點(diǎn),其中子節(jié)點(diǎn)包括<servlet-class>、<servlet-name>、<url-pattern>Servlet的測(cè)試
需在地址欄輸入http://IP/Port/WebContextName/servletURL來(lái)請(qǐng)求該ServletServlet生命周期Servlet運(yùn)行在Servlet容器中,其生命周期由容器來(lái)管理。Servlet的生命周期通過(guò)javax.servlet.Servlet接口中的init()、service()和destroy()方法來(lái)表示。Servlet的生命周期包含了下面4個(gè)階段:Servlet生命周期1、實(shí)例化Servlet容器創(chuàng)建Servlet的實(shí)例2、初始化該容器調(diào)用init()方法3、服務(wù)如果請(qǐng)求Servlet,則容器調(diào)用service()方法銷(xiāo)毀實(shí)例之前調(diào)用destroy()方法4、銷(xiāo)毀完成初始化工作,如建立數(shù)據(jù)庫(kù)連接、獲取配置信息,每個(gè)實(shí)例只初始化一次獲取請(qǐng)求參數(shù),并根據(jù)請(qǐng)求方式GET或POST調(diào)用doGet()或doPost()方法當(dāng)WEB容器被關(guān)閉時(shí)會(huì)調(diào)用destroy()方法銷(xiāo)毀Servlet實(shí)例,以釋放它所使用資源Servlet生命周期Servlet的生命周期由Servlet容器(如:Tomcat)控制servlet容器處理請(qǐng)求過(guò)程:HTTP請(qǐng)求容器請(qǐng)求響應(yīng)12Servlet實(shí)例Servlet執(zhí)行service(請(qǐng)求,響應(yīng))34doGet(請(qǐng)求,響應(yīng))5響應(yīng)6通過(guò)URL找到生命周期相關(guān)方法public
classHelloServletextendsHttpServlet{
public
voidinit()throwsServletException{ System.out.println("初始化時(shí)第一次調(diào)用!");}
public
voiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ PrintWriterout=response.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>HelloServlet</TITLE></HEAD>"); out.println("<BODY>"); out.println("你好"+newDate()); out.println("</BODY></HTML>"); }
public
voiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ doGet(request,response);}
public
voiddestroy(){System.out.println(“釋放資源!"); }}初始化方法doGet()方法doPost()方法銷(xiāo)毀方法Servlet與JSP分工首先考慮以下問(wèn)題,既然Serlvet比JSP代碼復(fù)雜,什么情況下寫(xiě)成Servlet?以下情況適合寫(xiě)成Servlet處理請(qǐng)求,調(diào)用DAO某些純編程的場(chǎng)合相反如果是一些與顯示相關(guān)的內(nèi)容,可以考慮寫(xiě)成JSP。Servlet與JSP分工思考:以下哪些工作適合寫(xiě)成JSP?哪些適合寫(xiě)成Servlet?顯示登錄表單。接受登錄表單中的賬號(hào)、密碼并調(diào)用DAO進(jìn)行驗(yàn)證。模糊查詢學(xué)生界面獲取查詢關(guān)鍵字,調(diào)用DAO查詢。顯示查詢的結(jié)果結(jié)論:1、3、5為顯示界面適合寫(xiě)成JSP,2、4為處理請(qǐng)求適合寫(xiě)成Servlet!Servlet內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)servlet可以跳轉(zhuǎn)到另一個(gè)servlet或Jsp頁(yè),并且可以數(shù)據(jù)傳遞過(guò)去。跳轉(zhuǎn)方式為兩種:(1)重定向,這種方式屬于客戶端跳轉(zhuǎn),不能傳遞請(qǐng)求request,意味著跳轉(zhuǎn)后頁(yè)面取不到上一頁(yè)面請(qǐng)求對(duì)象,容器重新創(chuàng)建新的request請(qǐng)求對(duì)象。也就是說(shuō),用戶提交的表單參數(shù)在重定向之后的頁(yè)面中將無(wú)法取到。如果用這種方式跳轉(zhuǎn),要在請(qǐng)求跳轉(zhuǎn)和跳轉(zhuǎn)目標(biāo)頁(yè)共享數(shù)據(jù),需使用session對(duì)象。重定向后瀏覽器地址欄能看到地址發(fā)生變化,顯示為跳轉(zhuǎn)后地址。 serlvet內(nèi)重定向語(yǔ)句與JSP相同,如下:
response.sendRedirect(“url”);Servlet內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)關(guān)于重定向中URL路徑的說(shuō)明:url通常使用相對(duì)路徑,如果以”/”開(kāi)頭是相對(duì)于WEB服務(wù)器的根路徑(http://localhost:8080)。如重定向response.sendRedirect(“/stuSystem/index.jsp”);
表示請(qǐng)求的文件完整路徑為
http://localhost:8080/stuSystem/index.jsp如果不以”/”開(kāi)頭的相對(duì)路徑則相對(duì)于WEB應(yīng)用程序根目錄(http://localhost:8080/stuSystem/),如:response.sendRedirect(“index.jsp”);
則重定向的到達(dá)頁(yè)面完整路徑為http://localhost:8080/stuSystem/index.jspServlet內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)(2)服務(wù)器內(nèi)跳轉(zhuǎn),可以傳遞請(qǐng)求對(duì)象request,請(qǐng)求跳轉(zhuǎn)和跳轉(zhuǎn)目標(biāo)頁(yè)可以共享請(qǐng)求數(shù)據(jù)。跳轉(zhuǎn)后瀏覽器地址欄能看不到地址發(fā)生變化,仍顯示為跳轉(zhuǎn)前地址。作用等價(jià)于JSP中的<jsp:forward>標(biāo)簽。Servlet內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)Servlet中服務(wù)器內(nèi)部跳轉(zhuǎn)的實(shí)現(xiàn):ServletContexapplication
=this.getServletContex();
RequestDispatcherrd
=application.getRequestDispatcher(“url”);
rd.forward(request,response);注:這里的url必須以”/”開(kāi)頭的路徑,是相對(duì)于當(dāng)前WEB應(yīng)用程序根路徑(http://localhost:8080/stuSystem)一個(gè)簡(jiǎn)單用戶登錄的例子publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringuname=request.getParameter("username");Stringupass=request.getParameter(“password");Useruser=null;user.setUname(uname);user.setUpass(upass);UserDAOuserDAO=newUserDAO();user=userDAO.getUserByUname(uname);if(user!=null){HttpSessionsession=request.getSession();session.setAttribute("user",user);response.sendRedirect("index.jsp");}else{ response.sendRedirect("error.jsp");
}}request.setAttribute("user",user);ServletContexapplication=this.getServletContex();RequestDispatcherrd=application.getRequestDispatcher(“/index.jsp”);rd.forward(request,response);或者將查詢到的JavaBean對(duì)象user存入request,并將request轉(zhuǎn)發(fā)給下一JSP頁(yè)面,這樣user只在下一個(gè)頁(yè)面中可見(jiàn),使用forward方法跳轉(zhuǎn)獲取用戶輸入?yún)?shù)創(chuàng)建JavaBean數(shù)據(jù)庫(kù)操作將查詢到的JavaBean對(duì)象user存入session,以使得后面多個(gè)JSP頁(yè)面可獲取到user對(duì)象,使用sendRedict方法跳轉(zhuǎn)MVC模式MVC是三個(gè)單詞的縮寫(xiě),分別是模型(Model),視圖(view)和控制器(Controller)。Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂胘avabean或EJB實(shí)現(xiàn)。View層用于與用戶的交互,通常用JSP來(lái)實(shí)現(xiàn)。Controller層是Model與View之間溝通的橋梁,通??梢杂蓅ervlet來(lái)實(shí)現(xiàn),它可以分派用戶的請(qǐng)求,并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。MVC模式的優(yōu)勢(shì)各施其責(zé),互不干涉在MVC模式中,三個(gè)層各司其責(zé),所以如果一旦哪一層的需求發(fā)生了變化,就只需要修改相應(yīng)層中的代碼而不會(huì)影響到其他層中的代碼。有利于開(kāi)發(fā)中的分工在MVC模式中,由于按層把系統(tǒng)分開(kāi),那么就能更好的實(shí)現(xiàn)開(kāi)發(fā)中的分工。網(wǎng)頁(yè)設(shè)計(jì)人員可以開(kāi)發(fā)視圖層,而其他開(kāi)發(fā)人員可以開(kāi)發(fā)控制層、模型層。有利于組件的重用分層后更有利于組件的重用。如控制層可獨(dú)立成一個(gè)能用的組件,視圖層也可以做成通用的操作界面。MVC模式架構(gòu)Web服務(wù)器瀏覽器HtmlJSP(視圖)JavaBeans(模型)數(shù)據(jù)庫(kù)請(qǐng)求響應(yīng)Servlet(控制器)選擇視圖實(shí)例化請(qǐng)求圖MVC模式架構(gòu)示意圖“用戶登錄”模塊的MVC模式MVC結(jié)構(gòu)設(shè)計(jì)Model層:由Manager.java、Teacher.java、Student.java、ManagerDao.java、TeacherDao.java、StudentDao.java作為Model層,其中Manager、Teacher、Student用來(lái)封裝管理員、教師、學(xué)生對(duì)象信息(編號(hào)、名稱、密碼等),XXXDao用來(lái)實(shí)現(xiàn)連接數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)相應(yīng)表的增加、查詢、修改、刪除等操作。
View層:用來(lái)顯示登陸界面、登陸成功后用戶角色的入口界面的JSP頁(yè)面,如登陸界面index.jsp、管理員入口studentManage/stuAdminEntry.jsp、學(xué)生入口studentEntry/stuEntry.jsp、教師入口teaherEntry/teaEntryjsp。Controller層:控制層由Servlet來(lái)?yè)?dān)任,本模塊中l(wèi)oginServlet.java來(lái)?yè)?dān)任登陸驗(yàn)證的控制層,它負(fù)責(zé)獲取用戶登陸信息,根據(jù)用戶登陸身份選擇調(diào)用相應(yīng)DAO,連接數(shù)據(jù)庫(kù)查詢?cè)撚脩羰欠翊嬖?,若存在則將該用戶對(duì)象放入session并跳轉(zhuǎn)到相應(yīng)入口界面,若用戶對(duì)象不存在則跳轉(zhuǎn)回登陸界面lndex.jsp,給出“登陸失敗”的提示信息,要求用戶重新登陸?!坝脩舻卿洝蹦K調(diào)用流程servlet.LoginServletindex.jsp數(shù)據(jù)庫(kù)t_student表
t_teacher表t_manager表manEntry.jspdao.LoginDao判斷用戶角色vo.Managervo.Teachervo.StudentteaEntry.jspstuEntry.jspController控制層Model模型層JavaBeanView視圖層實(shí)現(xiàn)程序:LoginServlet.java
登錄處理控制器的創(chuàng)建
在src目錄下選擇【new】菜單創(chuàng)建【Servlet】,創(chuàng)建LoginServlet.java
類(lèi),package包為servlet,繼承自javax.http.servlet.HttpServlet父類(lèi),創(chuàng)建過(guò)程如圖:
Servlet的創(chuàng)建Servlet創(chuàng)建,指定Package包和Name類(lèi)名Servlet配置創(chuàng)建,指定ServletName及訪問(wèn)Servlet的映射URL實(shí)現(xiàn)程序:LoginServlet.java作為登錄請(qǐng)求處理控制器,需重寫(xiě)其中的doGet()和doPost()方法。
登錄處理控制器的作用用來(lái)接收登錄表單數(shù)據(jù),并調(diào)用dao.LoginDao操作訪問(wèn)數(shù)據(jù)庫(kù),LoginDao會(huì)根據(jù)用戶角色不同查詢t_manager管理員表、t_teacher教師表或t_student學(xué)生表。查詢到該用戶則表明登錄成功,并將用戶名保存至session。這里模擬管理員登錄過(guò)程,管理員輸入用戶名和密碼合法后將跳轉(zhuǎn)到studentManage/stuAdmin.jsp頁(yè)面。LoginServlet.java關(guān)鍵源碼(一)LoginServlet.java關(guān)鍵源碼(二)doPost()方法與doGet()方法的處理相同,doPost()中調(diào)用doGet()實(shí)現(xiàn)程序:index.jsp登錄頁(yè)面將用戶登錄表單請(qǐng)求提交給LoginServlet控制器處理,LoginServlet控制器的訪問(wèn)URL為/login,將index.jsp的form的action屬性做修改如下,請(qǐng)求LoginServlet的URL: <formaction=“/stuSystem/login”name=“l(fā)oginform”method=“post”>
或<formaction=“l(fā)ogin”name=“l(fā)oginform”method=“post”>請(qǐng)求的servlet的URL相對(duì)路徑表示有/stuSystem/login和login兩種寫(xiě)法,前者相對(duì)web服務(wù)器根目錄(http://localhost:8080),后者相對(duì)web應(yīng)用程序根目錄(http://localhost:8080/stuSystem/)程序說(shuō)明:
LoginServlet配置文件web.xml在webRoot/WEB-INF目錄下,web.xml對(duì)Servlet的名字,對(duì)應(yīng)的類(lèi)以及訪問(wèn)該類(lèi)的URL進(jìn)行了部署,具體內(nèi)容為:<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.5"
xmlns="http:///xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="http:///xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>程序說(shuō)明:通過(guò)登錄控制器處理,管理員登錄成功后會(huì)跳轉(zhuǎn)到管理員主界面studentManage/stuAdmin.jsp,并在studentManage/stuAdmin.jsp的左框架的studentManage/left.jsp頁(yè)面獲取登錄者姓名并顯示歡迎。studentManage/Left.jsp做如下修改:
<%Stringusername=(String)session.getAttribute("uname");%><%if(null!=username&&!"".equals(username)){%><p><%=username%>,歡迎你!<ahref="../logout.jsp">退出</a></p><divid="menu"><ul>學(xué)生信息管理
<li><ahref="lookStudent.jsp"
target="main">學(xué)生信息查詢</a></li><li><ahref="addStudent.jsp"
target="main">學(xué)生信息添加</a></li><li><ahref="deleteStudent.jsp"
target="main">學(xué)生信息刪除</a></li><li><ahref="updateStudent.jsp"
target="main">學(xué)生信息修改</a></li></ul> ……</div><%}else{%><scripttype="text/javascript">alert("請(qǐng)先登錄!");window.parent.location.href="../index.jsp";</script><%}%>MVC模式應(yīng)用舉例二設(shè)計(jì)使用MVC開(kāi)發(fā)模式實(shí)現(xiàn)電子商城中“新品上市”模塊功能功能說(shuō)明用戶單擊首頁(yè)上“新品上市”超鏈接,可以在右下方div框架中顯示出所有的新品的名稱、價(jià)格、介紹、圖片等信息。顯示效果如圖:如用戶已登陸,則可以顯示出“購(gòu)買(mǎi)”按鈕,否則只顯示“查看”按鈕,顯示效果如下圖:MVC結(jié)構(gòu)設(shè)計(jì)Model層:由Goods.java和GoodsDao.java兩個(gè)類(lèi)作為Model層,其中Goods用來(lái)封裝商品信息(商品編號(hào)、商品名稱、商品價(jià)格等,與數(shù)據(jù)庫(kù)商品表字段一致),GoodsDao用來(lái)連接數(shù)據(jù)庫(kù),并實(shí)現(xiàn)對(duì)新品、特價(jià)商品的增加、查詢、修改、刪除相應(yīng)操作方法。
說(shuō)明:在數(shù)據(jù)庫(kù)中新品是指newgoods=1的所有商品,
特價(jià)商品是sale=1的所有商品。View層:JSP技術(shù)作為View表現(xiàn)層,采用Html標(biāo)簽與java代碼混合的形式。該模塊包括用來(lái)顯示新品和特價(jià)商品的JSP頁(yè)面,如顯示新品的newGoods.jsp,顯示特價(jià)商品的saleGoods.jspController層:控制層由Servlet來(lái)完成,作為模型層與試圖層的中間層來(lái)實(shí)現(xiàn)請(qǐng)求處理與顯示的控制任務(wù)。本模塊中NewGoodsServlet.java來(lái)?yè)?dān)任新品上市的控制層,它負(fù)責(zé)調(diào)用GoodsDao的getNewGoods()方法查詢得到所有新品的集合,并將新品集合放入request中轉(zhuǎn)發(fā)給newGoods.jsp,在newGoods.jsp中顯示出所有新品的信息?!靶缕飞鲜小蹦K的調(diào)用流程servlet.NewGoodsServlettop.jspdao.GoodsDaovo.Goods數(shù)據(jù)庫(kù)newGoods.jspModel模型層JavaBeanController控制層View視圖層NewGoodsServlet.java新品上市控制器packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.GoodsDao;importvo.Goods;publicclassNewGoodsServletextendsHttpServlet{@Override//重寫(xiě)doGet方法publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ doPost(request,response);//調(diào)用doPost() }@Override//重寫(xiě)doPost方法publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//實(shí)例化商品集合對(duì)象al ArrayList<Goods>al=newArrayList<Goods>(); GoodsDaogdao=newGoodsDao();//實(shí)例化數(shù)據(jù)訪問(wèn)對(duì)象gdaotry{ al=gdao.getNewGoods();//getNewGoods方法獲取新品集合}catch(Exceptione){ e.printStackTrace();}//將新品集合存入request對(duì)象request.setAttribute("newGoods",al);//獲取Servlet上下文環(huán)境對(duì)象ServletContextsc=this.getServletContext();//跳轉(zhuǎn)到newGoods.jsp頁(yè)面,并將請(qǐng)求轉(zhuǎn)發(fā)到該頁(yè)面RequestDispatcherrd=sc.getRequestDispatcher("/newGoods.jsp");rd.forward(request,response);}}【top.jsp】請(qǐng)求NewGoodsServlet控制器 <td><ahref=“/shop/NewgoodsServlet”target=“main_frame”>新品上 市</a></td>【newGoods.jsp】顯示新品上市
<%Goodsg=newGoods(); ArrayList<Goods>al=(ArrayList)request.getAttribute("newGoods");for(inti=0;i<al.size();i++){ g=al.get(i); intid=g.getId(); Stringpicture=g.getPicture(); Stringgoodsname=g.getGoodsname(); Doubleprice=g.getPrice(); Stringintroduce=g.getIntroduce();%>【web.xml】servlet配置
<servlet> <servlet-name>NewgoodsServlet</servlet-name> <servlet-class>servlet.NewgoodsServlet</servlet-class></servlet><servlet-mapping> <servlet-name>NewgoodsServlet</servlet-name> <url-pattern>/NewgoodsServlet</url-pattern></servlet-mapping>MVC模式應(yīng)用舉例三使用MVC開(kāi)發(fā)模式設(shè)計(jì)實(shí)現(xiàn)電子商城中“購(gòu)物車(chē)”模塊功能需求分析用戶單擊首頁(yè)上“購(gòu)物車(chē)”超鏈接,可以對(duì)購(gòu)物車(chē)中的商品信息進(jìn)行查看。此操作只對(duì)登陸用戶有效,所以在查看前需對(duì)session檢查判斷用戶是否登陸,若未登陸則給出提示要求用戶“需要先登陸再購(gòu)物”。用戶登陸后查看購(gòu)物車(chē),若購(gòu)物車(chē)為空則跳轉(zhuǎn)至購(gòu)物車(chē)為空頁(yè)面,并在該頁(yè)面提供“購(gòu)買(mǎi)商品”超鏈接,用戶單擊后跳轉(zhuǎn)至首頁(yè)繼續(xù)購(gòu)物,該頁(yè)面顯示效果如下:若購(gòu)物車(chē)不為空則顯示出購(gòu)物車(chē)中的每一項(xiàng)商品信息(包括編號(hào)、商品編號(hào)、商品名稱、商品價(jià)格、商品數(shù)量、單價(jià)、合計(jì)總金額)用戶可以選中購(gòu)物車(chē)中某商品,從購(gòu)物車(chē)中刪除可以清空購(gòu)物車(chē),跳轉(zhuǎn)至購(gòu)物車(chē)為空界面MVC結(jié)構(gòu)設(shè)計(jì)Model層:vo.CartItem:封裝購(gòu)物車(chē)中的一項(xiàng)商品信息(商品編號(hào)id,商品名稱goodsname、商品價(jià)格price、商品數(shù)量goodsnumber)vo.Goods:封裝商品的全部信息dao.GoodsDao:增加getGoodById(intid)方法,根據(jù)id查出該商品全部信息。View層:cart_null.jsp:購(gòu)物車(chē)為空界面cart_see.jsp:查看購(gòu)物車(chē)界面cart_move.jsp:刪除購(gòu)物項(xiàng)并跳轉(zhuǎn)回cart_see.jspcart_clear.jsp:清空購(gòu)物車(chē)并跳轉(zhuǎn)回cart_see.jspController層servlet.CartAddServlet:1)獲取用戶購(gòu)買(mǎi)商品的id,調(diào)用GoodsDao查詢到該商品全部信息,并將其中部分信息保存至CartItem中。2)判斷購(gòu)物車(chē)中是否已有該商品,如果已有則更新該購(gòu)物項(xiàng)的商品數(shù)量,沒(méi)有則將該商品加入購(gòu)物車(chē)。3)將購(gòu)物車(chē)放入session并將請(qǐng)求轉(zhuǎn)發(fā)到cart_see.jsp“購(gòu)物車(chē)”模塊調(diào)用流程CartAddServletGoods.jspdao.GoodsDaovo.Goods數(shù)據(jù)庫(kù)cart_see.jspModel模型層JavaBeanController控制層View視圖層cart_move.jspGoods.java封裝商品對(duì)象CartItem.java封裝購(gòu)物項(xiàng)對(duì)象GoodsDao.java(一)GoodsDao.java(二)web.xmlCartAddServlet.java購(gòu)物車(chē)添加控制器packageservlet;publicclassCartAddServletextendsHttpServlet{
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)業(yè)投資信托協(xié)議書(shū)(2篇)
- 2024年草船借箭教學(xué)設(shè)計(jì)(53篇)
- 2024年福建省莆田市涵江區(qū)三江口鎮(zhèn)招聘社區(qū)工作者考前自測(cè)高頻考點(diǎn)模擬試題(共500題)含答案
- 2024年福建省《消防員資格證之一級(jí)防火考試》必刷500題標(biāo)準(zhǔn)卷
- 黃金卷3-【贏在中考·黃金八卷】(原卷版)
- 2024屆四川省綿陽(yáng)市高三上學(xué)期第二次診斷性考試(二模)文綜試題
- 2025屆南開(kāi)中學(xué)初中考生物押題試卷含解析
- 互補(bǔ)發(fā)電系統(tǒng)行業(yè)深度研究報(bào)告
- 2025公司質(zhì)押借款合同范本
- 2024年度天津市公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師綜合檢測(cè)試卷A卷含答案
- 二級(jí)建造師繼續(xù)教育考試題及答案
- 冀少版八年級(jí)下冊(cè)生物期末復(fù)習(xí)知識(shí)點(diǎn)考點(diǎn)提綱
- 八年級(jí)語(yǔ)文上冊(cè)《作文》專(zhuān)項(xiàng)測(cè)試卷及答案
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之26:“10改進(jìn)”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之23:“8運(yùn)行-8.3創(chuàng)新過(guò)程”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 函數(shù)的零點(diǎn)與方程的解 教學(xué)設(shè)計(jì) 高一上學(xué)期數(shù)學(xué)人教A版(2019)必修第一冊(cè)
- 【安踏集團(tuán)國(guó)際化戰(zhàn)略環(huán)境的PEST分析及SWOT分析4100字(論文)】
- 部編版高中語(yǔ)文必修上冊(cè)第二單元測(cè)試題及答案
- 2024年高考地理試卷(浙江)(1月)(解析卷)
- 《腸造口并發(fā)癥的分型與分級(jí)標(biāo)準(zhǔn)(2023版)》解讀
- 清熱解毒片的復(fù)方配伍研究
評(píng)論
0/150
提交評(píng)論