转载

浅谈JSP与JDBC的灵活运用

1.<jsp:forward page="list.jsp"/>

相当于

  1. <%  
  2.     request.getRequestDispatcher("list.jsp").forward(request, response);  
  3. %> 

2、<jsp:useBean class="anni.ContactDao" id="contactDao" scope="application"/>

anni.ContactDao是一个封装了数据库操作的bean

相当于

  1. <%  
  2.     anni.ContactDao contactDao = (anni.ContactDao) application.getAttribute("contactDao");  
  3.     if (contactDao == null) {  
  4.         contactDao = new anni.ContactDao();  
  5.         application.setAttribute("contactDao", contactDao);  
  6.     }  
  7. %> 

在上面的代码中只是为了创建一个对象的实例,为什么不用new呢,那要比这样写的代码少许多,也更容易理解,为什么我们还要执意使用jsp:useBean?

注意一下标签中的scope="application",application正是我们介绍过的四个作用域之一

我们先从application中获得contactDao对应的对象,然后判断得到的是否为null,如果为null说明此变量还没有初始化,这时就要使用new创建一个对象实例并放入application中。最后我们得到的就是这个contactDao实例。

3、create.jsp包含表单提交的信息

save.jsp表单提交信息处理

Contact是对应的实体bean名称里面装有对应属性的get,set方法

  1. <jsp:useBean class="anni.ContactDao" id="contactDao" scope="application"/> 
  2. <jsp:useBean class="anni.Contact" id="contact"/> 
  3. <jsp:setProperty name="contact" property="*"/> 
  4. <%  
  5.     contactDao.save(contact);  
  6.     response.sendRedirect("list.jsp");  
  7. %> 

相当于

先从application中取出contactDao,再创建一个contact。在创建contact的时候没有指定scope,默认情况下只会使用new创建这个局部变量,不会对任何作用域产生影响。jsp:setProperty是新事物了,它的作用就是为某个javabean设置数据。之前我们已经使用jsp:useBean创建了一个 contact实例,现在我们通过name="contact"设置这个实例的数据,property可以指定一个属性,比如 property="username",也可以使用星号(*)批量设置所有可以找到的属性,这个jsp动作实际上与下面的代码等价。

  1. contact.setUsername(request.getParameter("username"));  
  2. contact.setSex(request.getParameter("sex"));  
  3. contact.setEmail(request.getParameter("email"));  
  4. contact.setQq(request.getParameter("qq"));  
  5. contact.setDescn(request.getParameter("descn")); contactDao.save(contact);response.sendRedirect("list.jsp"); 

正文到此结束
Loading...