基于Servlet的MVC设计模式_第1页
基于Servlet的MVC设计模式_第2页
基于Servlet的MVC设计模式_第3页
基于Servlet的MVC设计模式_第4页
基于Servlet的MVC设计模式_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Servlet的MVC设计模式第1页/共32页回顾如何使用Map进行数据的存取?如何理解session在Web项目中的作用?常用的集合类有哪些?它们之间的区别是什么?第2页/共32页预习检查什么是设计模式?如何理解MVC设计模式?为什么需要MVC设计模式?第3页/共32页本章任务升级E-Book电子书店系统为MVC模式第4页/共32页理解MVC的优势掌握MVC的应用开发在MVC中会使用Servlet进行程序控制本章目标第5页/共32页JSP的缺点(2-1)JSP中登录功能的实现提交数据到register.jsp<%request.setCharacterEncoding("GBK");Stringpass=request.getParameter("password");Stringuser=request.getParameter("loginName");Stringsql="select*fromuserinfowhereloginname=?";Connectioncon=ConnectionManager.getConnction();PreparedStatementpStatement=con.prepareStatement(sql);pStatement.setString(1,user);ResultSetrs=pStatement.executeQuery();if(rs.next()&&rs.getString("password").equals(pass)){Userlogineduser=newUser(user,pass);session.setAttribute("LOGINED_USER",logineduser);response.sendRedirect("books.jsp");}else{response.sendRedirect("register.html");}%>访问数据库JSP中大量调用业务代码JSP的主要作用是什么?逻辑判断第6页/共32页JSP的缺点(2-2)美工进行页面编辑和维护美工<%

for(inti=0;i<titles.size();i++){

if(i%3==0){%><TR><%}%><TD><%=subStr(currentBook.getTitle())%></TD></TR><TR><TD><IMGsrc="/store/images/<%=currentBook.getImageFile()%>"/></TD></TR><%}%>这是什么呀?我只认识HTML标签如果将流程控制和数据显示分离就好了第7页/共32页如何解决JSP的缺点1、在你所写的程序中,很多JSP页面直接访问数据库,如果数据库表名改变了,你所要做的工作是什么?2、你的程序中所有的页面都需要美工进行美化,但是他不懂Java怎么办?第8页/共32页生活案例

顾客点菜顾客点菜厨师菜肴服务员加工菜肴服务员把菜单给厨师服务员上菜把菜单给服务员把菜给服务员以各自的功能进行分工第9页/共32页Web程序的功能分工

如果把Web容器处理请求的过程按功能划分,你如何进行划分?第10页/共32页设计模式的定义什么是设计模式是一套被反复使用、多数人知晓的、代码设计经验的总结模式必须是典型问题(不是个别问题)的解决方案设计模式的作用解决一类问题的成功经验是为了可重用代码、让代码更容易被他人理解、保证代码可靠性第11页/共32页MVC设计模式(2-1)MVC设计模式模型-----Model视图-----View控制器-----ControllerMVC

模式控制器模型视图JavaBeanJSPServlet第12页/共32页MVC设计模式(2-2)模型:代表应用程序状态和业务逻辑

控制器:根据客户的请求来操纵模型,并把结果经由视图展现给客户

视图:提供可交互的客户界面,向客户显示模型数据MVC设计模式的模块组成第13页/共32页Web程序的MVCWeb容器处理请求过程请求ServletJavaBeanJSP页面执行调用转向响应访问返回数据数据库客户端JSP视图动态显示数据数据库Servlet控制器,用于接收请求和控制应用程序的流程JavaBean数据模型进行业务逻辑和访问数据库第14页/共32页MVC编程思路MVC编程思路执行Servlet接收客户端请求,并调用业务类的方法进行数据处理Servlet根据数据处理的结果,控制下一个显示的HTML或者JSP页面ServletJSP页面转向JavaBean调用第15页/共32页MVC编程(2-1)

修改登录为MVC模式<formmethod="post"name="Regsiter"action="/store/register">……</form>提交给Servlet创建页面--register2.html使用Eclipce向导创建Servlet--Register.java…Stringpass=request.getParameter("password");Stringuser=request.getParameter("loginName");CheckLoginck=newCheckLogin();if(ck.validate(user,pass))response.sendRedirect("/store/ch05/books.jsp");else

response.sendRedirect("/store/ch05/register2.html");…创建一个业务类对象,并调用validate()方法判断用户是否存在演示示例1:Register.java第16页/共32页MVC编程(2-2)

修改登录为MVC模式--创建业务类CheckLogin.javapublic

classCheckLogin{

public

booleanvalidate(Stringuser,Stringpass){

booleanvalid=false;ConnectiondbConnection=null;ResultSetres=null;

try{Stringsql="select*fromuserinfowhereloginname=?";Connectioncon=ConnectionManager.getConnction();

PreparedStatementpStatement=con.prepareStatement(sql);pStatement.setString(1,user);res=pStatement.executeQuery();

if(res.next()&&res.getString("password").equals(pass))valid=true;}catch(SQLExceptionsqlE){sqlE.printStackTrace();}

returnvalid;}}查询数据库,如果存在该用户返回true,否则返回false演示示例2:CheckLogin.java第17页/共32页常见错误404是什么错误?地址栏信息哪里有错误?Register.javaStringpass=request.getParameter("password");Stringuser=request.getParameter("loginName");CheckLoginck=newCheckLogin();if(ck.validate(user,pass)){response.sendRedirect("/ch05/books.jsp");}else{response.sendRedirect("/store/ch05/register2.html");}应该是"/store/ch05/books.jsp"哪里有错误?404错误第18页/共32页小结MVC的三层结构是按什么来划分?每一层的功能和组件是什么?举几个例子说明在程序中使用MVC的好处?第19页/共32页MVC的优点MVC设计模式的优点各司其职、互不干涉代码的重用性有利于开发的分工MVC

的优点第20页/共32页MVC实现结账功能(3-1)增加结帐的功能创建订单管理页面和结束页面第21页/共32页MVC实现结账功能(3-2)增加结帐的功能创建处理订单的Servlet--ProcessOrder.javaStringusername=request.getParameter("username");//用户名Stringzipcode=request.getParameter("zipcode");//邮编Stringphone=request.getParameter("phone");//电话Stringcreditcard=request.getParameter("creditcard");//信用卡HttpSessionsession=request.getSession();doubletotal=((Double)session.getAttribute("total")).doubleValue();OrderOperationop=newOrderOperation();op.saveOrder(username,zipcode,phone,creditcard,total);session.invalidate();request.getRequestDispatcher("/ch05/bye.jsp") .forward(request,response);创建业务类对象,并调用操作数据库方法从session中取出total让session失效演示示例3:ProcessOrder.java第22页/共32页MVC实现结账功能(3-3)增加结帐的功能创建操作数据库业务类--OrderOperation.javapublic

classOrderOperation{

public

intsaveOrder(Stringusername,Stringzipcode,Stringphone,Stringcreditcard,doubletotal){

intresult=0;try{Connectioncon=ConnectionManager.getConnction();StringstrSql="insertintoBookOrder(username,zipcode,phone,"+"creditcard,total)values(?,?,?,?,?)";PreparedStatementpStatement=con.prepareStatement(strSql);pStatement.setString(1,username);…//设置其他参数值

result=pStatement.executeUpdate();}catch(SQLExceptionsqlE){sqlE.printStackTrace();}

returnresult;}}执行数据库添加的操作演示示例4:OrderOperation.java第23页/共32页常见错误…//获取客户端提交的数据

OrderOperationop=newOrderOperation();op.saveOrder(username,zipcode,phone,creditcard,total);request.getRequestDispatcher("/store/ch05/bye.jsp") .forward(request,response);session.invalidate();Servlet中转发--ProcessOrder.java请阅读代码,并指出哪里有错误应该是"/ch05/bye.jsp"第24页/共32页总结为什么使用MVC设计模式?MVC设计模式各部分对应的组件是什么?MVC各部分间是如何协作的?第25页/共32页回顾如何使用Map进行数据的存取?如何理解session在Web项目中的作用?常用的集合类有哪些?它们之间的区别是什么?第26页/共32页理解MVC的优势掌握MVC的应用开发在MVC中会使用Servlet进行程序控制本章目标第27页/共32页生活案例

顾客点菜顾客点菜厨师菜肴服务员加工菜肴服务员把菜单给厨师服务员上菜把菜单给服务员把菜给服务员以各自的功能进行分工第28页/共32页MVC实现结账功能(3-1)增加结帐的功能创建订单管理页面和结束页面第29页/共32页MVC实现结账功能(3-3)增加结帐的功能创建操作数据库业务类--OrderOperation.javapublic

classOrderOperation{

public

intsaveOrder(Stringusername,Stringzipcode,Stringphone,Stringcreditcard,doubletotal){

intresult=0;try{Connectioncon=ConnectionManager.getConnction();StringstrSql="insertintoBookOrder(username,zipcode,phone,"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论