淺談JSP與JDBC的靈活運用
1.<jsp:forward page="list.jsp"/>
相當于
- <%
- request.getRequestDispatcher("list.jsp").forward(request, response);
- %>
2、<jsp:useBean class="anni.ContactDao" id="contactDao" scope="application"/>
anni.ContactDao是一個封裝了數(shù)據(jù)庫操作的bean
相當于
- <%
- anni.ContactDao contactDao = (anni.ContactDao) application.getAttribute("contactDao");
- if (contactDao == null) {
- contactDao = new anni.ContactDao();
- application.setAttribute("contactDao", contactDao);
- }
- %>
在上面的代碼中只是為了創(chuàng)建一個對象的實例,為什么不用new呢,那要比這樣寫的代碼少許多,也更容易理解,為什么我們還要執(zhí)意使用jsp:useBean?
注意一下標簽中的scope="application",application正是我們介紹過的四個作用域之一
我們先從application中獲得contactDao對應的對象,然后判斷得到的是否為null,如果為null說明此變量還沒有初始化,這時就要使用new創(chuàng)建一個對象實例并放入application中。***我們得到的就是這個contactDao實例。
3、create.jsp包含表單提交的信息
save.jsp表單提交信息處理
Contact是對應的實體bean名稱里面裝有對應屬性的get,set方法
- <jsp:useBean class="anni.ContactDao" id="contactDao" scope="application"/>
- <jsp:useBean class="anni.Contact" id="contact"/>
- <jsp:setProperty name="contact" property="*"/>
- <%
- contactDao.save(contact);
- response.sendRedirect("list.jsp");
- %>
相當于
先從application中取出contactDao,再創(chuàng)建一個contact。在創(chuàng)建contact的時候沒有指定scope,默認情況下只會使用new創(chuàng)建這個局部變量,不會對任何作用域產(chǎn)生影響。jsp:setProperty是新事物了,它的作用就是為某個javabean設置數(shù)據(jù)。之前我們已經(jīng)使用jsp:useBean創(chuàng)建了一個 contact實例,現(xiàn)在我們通過name="contact"設置這個實例的數(shù)據(jù),property可以指定一個屬性,比如 property="username",也可以使用星號(*)批量設置所有可以找到的屬性,這個jsp動作實際上與下面的代碼等價。
- contact.setUsername(request.getParameter("username"));
- contact.setSex(request.getParameter("sex"));
- contact.setEmail(request.getParameter("email"));
- contact.setQq(request.getParameter("qq"));
- contact.setDescn(request.getParameter("descn")); contactDao.save(contact);response.sendRedirect("list.jsp");
【編輯推薦】