您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 5尚硅谷_佟刚_JavaWEB-jdbc_javaweb练习
建数据表为name字段添加唯一约束:altertablecustomersaddconstraintname_ukunique(name);Createtablecustomers(idintprimarykeyauto_increment,namevarchar(30)notnullunique,addressvarchar(30),phonevarchar(30));JSPServletDAODB显示数据处理请求:1.获取请求参数2.对请求参数进行检验3.或需要把请求参数进行封装调用方法:1.调用DAO方法派发页面1.根据DAO方法的执行情况来转发不同的页面对数据进行增,删,改,查操作保存数据Databaseaccessobject没有任何的业务逻辑.使用C3P0数据库连接池添加新客户流程success.jspPOST请求添加新用户请求addCustomerServlet1.解析客户端浏览器的提交数据2.封装请求参数到一个JavaBean3.调用CustomerDAO的方法4.根据方法的返回情况进行页面的派发:1.若不出现异常,则派发到2.若出现用户名重复,则派发到CustoemrDAOpublicvoidsave(Customercustomer);success.jspJDBCUtilsaddCustomer.jspCustomerCustoemrDAOpublicvoidsaveCustomer(Customercustomer);JDBCUtils调用publicConnectiongetConnection()addCustomerServlet调用查询操作SearchCustomerServlet1.获取客户端浏览器的请求参数2.封装请求信息到一个JavaBean中3.调用CustomerDAO方法4.根据方法的执行情况确定派发页面1.若不出现异常2.出现异常5.派发页面publicListsearchCustomers(Customercustomer)CustoemrDAOsearchCustomers.jspfail.jsp删除操作DeleteCustomer?id=%=cust.getId()%1.获取id值2.调用CustomerDAO方法执行删除操作3.根据方法的执行情况派发页面1.没有异常派发页面到2.若出现异常CustomerDAOpublicvoiddelete(intid);转发OR重定向error.jsp/SearchCustomerServlet/index.jsp删除时需要注意:1.在”Delete”连接上需要加上id参数2.在执行CustomerDAO方法若不出现异常,派发页面若为“searchCustomers.jsp”将在该页面不能获取customer的信息,所以派发页面应该为servlet的一个映射地址“searchCustomerServlet”;但此时在searchCustomerServlet中request.getParameter(“name”)值将为null,这可以通过修改customerDAO的方法来修正。1.Customercust=newCustomer();Cust.setName(“Tom”)修改操作CustomerUIServletcustomerUI.jsp1.获取客户端的请求参数,customerId2.调用CustomerDAO.findCustomerById(intcustomerId);返回对应的Customer对象3.若不出现异常,把2得到的Customer对象放到request域中.4.派发到customerUI.jsp页面.5.若出现异常,把异常信息放到request域中6.派发到searchcustomers.jsp页面,显示提示信息和先前显示的customer信息1.使用JSTL和EL显示数据根据customerId到数据库中查询对应的记录,并把记录封装成一个Customer对象返回;若该记录不存在,抛出一个信息为:“要修改的客户不存在”的RuntimeException。修改操作CustomerUIServletcustomerUI.jspupdateCustomerServlet注意:需要获取隐藏域的id值searchCustomerServletjdbc_javaweb_2/customerui?id=9aCustomerUIServletSearchCustomerssearchCustomers.jspSearchCustomerssearchCustomers.jsp提交请求转发:forwardCustomerUIServlet转发:forwardcustomerUI.jsp提交请求UpdateCustomerServlet提交请求ActionServletAddCustomerSearchCustomerDeleteCustomerabstractcalssActionabstractStringexecute(HttpServletRequestrequest,HttpSerlvetResponseresponse){}}AddCustomerActionSearchCustomerActionDeleteCustomerActionactionpath=“/AddCustomer”class=“net.lampbrother.AddCustomerAction”forwardname=“success”path=“/index.jsp”//action读取JSPServletDAO显示数据处理请求,调用方法,派发页面对数据进行增,删,改,查操作若DAO出现异常,DAO内部:1.打印异常信息,有利于排错2.把异常信息经过重新封装以RuntimeException的形式跑出去在Servlet中:1.需要用trycatch捕捉异常,因为若再不抓异常,则服务器会以error页面的形式显示异常信息,这显然不是用户所能够接受的2.在catch块中把异常信息放到request中,在页面显示异常信息1.数据库的配置文件:为了在底层可以随意的切换数据库而不用修改程序的源代码,则连接数据库的user,password,driver,url这些参数就不能以硬编码的方式写在程序代码中,而是将它们保存在一个文件中2.这个资源文件一般被保存在WEB-INF目录或其子目录下(一般不放在lib目录下)3.在Servlet中不可以使用FileInputStream类来直接访问资源文件,原因有二:1.在程序中不应该使用绝对路径的形式来访问web应用程序的某个文件2.在某个java类中使用的相对路径是相对于当前的工作目录而言的,这个目录通常是执行Java命令的目录,而不是当前正在执行的Java类所在的目录。4.解决方案:1.使用JDK中提供的ClassLoader类提供的getResource等方法加载资源文件,它们使用与查找Java类文件同样的方案去查找资源文件,即在类加载器所搜索的目录中查找。由于web应用程序的类装载器会搜索WEB-INF/classes目录,所以当配置文件放置在该目录下时利用ClassLoader.getResourceAsStream()方法可以访问到配置文件2.调用ServletContext.getResourceAsStream()方法3.ServletContext.getRealPath先读取文件的绝对路径,再利用FileInputStream完成加载当前web应用时Web服务器会初始化这个Servlet,调用init方法读取web.xml中为当前web应用配置的初始化参数dbType,并把该值赋给WebAppConfig的dbType静态属性DAO对象调用DBManager的getConnection方法根据在WebAppConfig中静态变量dbType的值来决定加载那个数据库配置文件需求:存储媒介由mysql改为xml文件1.JSP是负责显示的,JSP不用改动2.Servlet负责接受请求,调用DAO方法,进行页面派发。需要小范围改动:改动调用的DAO对象SearchCustomerServletCustomerDAOMysqlImplCustomerDAOXMLImplinterfaceCustomerDAOCustomerDAOMysqlImplCustomerDAOXMLImplinterfaceCustomerDAOCustomerDAOFactory创建CustomerDAO的一个实现类对象SearchCustomerServlet调用接口中定义的方法Web.xml获取CustomerDAO实现类对象WebConfigInitMvcAppServlet关于InitMvcAppServlet的说明:1.作用:读取web应用的初始化参数(该Servlet中只有一个init方法)2.要求:在web应用真正运行前,把参数读取出来并且赋给WebConfig对象的dbType(load-on-startup)3.该Servlet不需要被客户端访问(该Servlet只需注册不需要进行映射)请求AddCustomerServletCustomerDAOMysqlImplCustomerDAOXmlImplWeb.xmlCustomerDAOCustomerDAOFactory获取CustomerDAO实现类的对象根据传过来的web.xml中的参数值来创建对象用于查询Customer对象条件查询的条件customerUIServletGet请求派发在该页面能够得到(连接1)处的name,address和phone,即能够得到条件查询的条件(连接1)updateCustomerServlet在该Servlet中不能得到(连接1)处的name,address和phone,即不能得到条件查询的条件派发searchCustomerServlet在该Servlet中得不到查询条件用于查询Customer对象条件查询的条件customerUIServletGet请求派发在该页面能够得到(连接1)处的name,address和phone,即能够得到条件查询的条件(连接1)updateCustomerServlet在该Servlet中能够得到updateCustomers.jsp表单提交的数据,所以能够得到该表单中隐藏域的值,即能够得到(连接1)处的name,address和phone,即能够得到条件查询的条件派发searchCustomerServlet在该Servlet中能够得到查询条件web.xmldaoConfig.xml
本文标题:5尚硅谷_佟刚_JavaWEB-jdbc_javaweb练习
链接地址:https://www.777doc.com/doc-2929408 .html