首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

7.2 使用案例 html

2012-09-27 
7.2 应用案例 html7.2 应用案例本节通过二个案例来说明MVC的基本思想,MVC的工作模式。7.2.1 一个简单的例子

7.2 应用案例 html

7.2 应用案例本节通过二个案例来说明MVC的基本思想,MVC的工作模式。7.2.1 一个简单的例子第五章介绍了把triangle.jsp改造成为JSP+JavaBean模式,本节,在此基础上,改造成为MVC即JSP+JavaBean+servlet模式。在这个案例中,M层(JavaBean)保持原有设计不变,即为类Triangle(用于三角形的面积计算等功能)和类Stringtonum(用于把输入字符串转成三角形的三条边值)。按照MVC模式,设计servlet为TriangleMVC,参考代码如下。package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import model.Stringtonum;import model.Triangle;public class TriangleMVC extends HttpServlet {public TriangleMVC() {super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str=request.getParameter("boy");Stringtonum angle=new Stringtonum();boolean flag=false;RequestDispatcher dispatcher = null;Triangle tri=null;if(!angle.strtonum(str))request.setAttribute("result", "请输入数字");else{tri=new Triangle(angle.getNum1(),angle.getNum2(),angle.getNum3());if(!tri.isTriangle())request.setAttribute("result", "三边不能组成三角形");else{request.setAttribute("result", tri);flag=true;}}if (flag ==false)dispatcher= getServletContext().getRequestDispatcher("/trierror.jsp");elsedispatcher=getServletContext().getRequestDispatcher("/trisucess.jsp");dispatcher.forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}上面servlet设计中,其基本处理流程为:1、获取页面提交的数据(规格化的字符串)。2、调用业务类Stringtonum的功能,若字符串能转成三条边,则继续以下步骤;否则,进行页面跳转至trierror.jsp,并传值"请输入数字"。3、调用业务类Triangle的功能,若三条边能组成一个三角形,则继续以下步骤;否则,进行页面跳转至trierror.jsp,并传值"三边不能组成三角形"。4、进行页面跳转至trisucess.jsp,并把三角形实例(tri)传至该页面。JSP文件的参考代码如下。trierror.jsp<%@page contentType="text/html;charset=GB2312" %><HTML> <BODY BGCOLOR=cyan><FONT Size=5><%=(String)request.getAttribute("result") %></BODY></HTML>trisucess.jsp<%@page contentType="text/html;charset=GB2312" %><%@page  import="modle.*"%><HTML> <BODY BGCOLOR=cyan><FONT Size=5><% Triangle tri=new Triangle();tri=(Triangle)request.getAttribute("result"); %><P> 您输入的三边是:<BR><%=tri.getEdge1()%>        <BR><%=tri.getEdge2()%>        <BR><%=tri.getEdge3()%><P>三角形面积是:<%=tri.calArea()%></BODY>  </HTML>主页面trimvc.jsp<%@page contentType="text/html;charset=GB2312" %><HTML><BODY BGCOLOR=cyan><FONT Size=5><P>&nbsp; 请输入三角形的三个边的长度,输入的数字用逗号分割: <BR><FORM action="TriangleMVC" method=post name=form><INPUT type="text" name="boy"> <INPUT TYPE="submit" value="送出" name=submit></FORM>  </BODY></HTML>7.2.2 购物车MVC代码重构第五章设计了购物车,本节进行MVC模式代码重构。显然M层(JavaBean)保持原有设计不变。另外,由于采用MVC模式,不建议在V层调用M层,所以把购物车(car)放在session中,这是主要的变动。另外,把V层(JSP)拆分成V层和C层,主要任务是设计servlet(即:OderServlet和ModifyMVC)。MVC模式下购物车的流程图如下所示。 图7-2:MVC模式下购物车流程图。先设计主页面goodsmvc.jsp,参考代码如下。<%@ page contentType="text/html;charset=GB2312" %><html> <body><p>网上书斋<table border>     <tr>     <td>序号</td><td>书名</td><td>价格</td>     <td>简介</td><td>订购</td>     </tr><tr>    <td>1</td><td>computer</td>    <td>12</td><td><a href="in1.jsp">简介</a></td>    <td>    <form action="OrderServlet" method=post name="form" onSubmit="return confirm()"  >     <input type="hidden" name="goods" value="1#computer#12">     <input type=submit value=订购 >     </form>    </td></tr><tr>     <td>2</td><td>Cprogram</td><td>20</td>     <td><a href="in2.jsp">简介</a></td>     <td> <form action="OrderServlet" method=post name="form" onSubmit="return confirm()">     <input type="hidden" name="goods" value="2#Cprogram#20">     <input type=submit value=订购>     </form>     </td></tr><tr>     <td>3</td><td>database</td>     <td>30</td><td><a href="in3.jsp">简介</a></td>     <td>     <form action="OrderServlet" method=post name="form"onSubmit="return confirm()">     <input type="hidden" name="goods" value="3#database#30">     <input type=submit value=订购>     </form>     </td></tr>     </table>    <br>     <SCRIPT language="JavaScript">     funtion confirm(){if(confirm(" ","确认订购")==true)return true;return false;</SCRIPT>    <a href="lookmvc.jsp">购物详单</a> </body></html>主页面基本保持原有设计风格。但提交目的地由原来的JSP页面改为servlet (OrderServlet),另外,应用了一个JS技术,其目的让用户购买商品时多一次提醒和确认。lookmvc.jsp页面基本保持原有设计风格。同样,提交目的地由原来的JSP页面改为servlet(ModifyServlet)。代码如下。<%@ page contentType="text/html;charset=GB2312" %><%@ page import="shop.*"%><%@page import="java.util.*" %>  <html>  <body>   <% car car1=(car)session.getAttribute("shop");   if(car1==null){car1=new car();}//第一次;   Vector v=car1.getV();%><Form action="ModifyMVC" method=get><Table Border><TR><TH width=100>序号<TH width=50>书名<TH width=50>价格<TH width=50>数量<TH width=50>删除</TR>    <% for(int i=0;i<v.size();i++){   Book book=(Book)v.get(i);out.println("<TR>");out.println("<TD >"+book.getBooknum()+"</TD>"); out.println("<TD >"+book.getBookname()+"</TD>");out.println("<TD >"+book.getPrice()+"</TD>"); out.println("<TD >");out.println("<input type=text width=10 size=20 name="+book.getBooknum()+" value="+book.getNum()+">");out.println("</TD >");out.println("<TD >");String str=book.getBooknum();out.println("<input type=checkbox name=book value="+str+">");out.println("</TD >");}%></Table><input type=submit value=提交></form><p><a href="goodsmvc.jsp">返回购物</a></body></html>对于控制层(C层),主要设计二个servlet。分别是OrderServlet和ModifyMVC。其代码如下所示。OrderServlet.javapackage servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.*import shop.car;public class OrderServlet extends HttpServlet {public OrderServlet() {super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String goods=request.getParameter("goods"); HttpSession session=request.getSession();car car1=(car)session.getAttribute("shop");   if(car1==null){ car1=new car();}//第一次;   car1.add(car1.newgoods(goods));   session.setAttribute("shop",car1);   RequestDispatcher dispatcher = null;   dispatcher=getServletContext().getRequestDispatcher("/goodsmvc.jsp");   dispatcher.forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}显然,OrderServlet完成了第五章解决方案中的success.jsp功能。ModifyMVC,javapackage servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.*;import shop.car;public class ModifyMVC extends HttpServlet {public ModifyMVC() {super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {HttpSession session=request.getSession();car car1=(car)session.getAttribute("shop");String str[]= request.getParameterValues("book");if(str!=null){for(int i=0;i<str.length;i++)car1.delete(str[i]);  }String strbook=null;String booknum=null;for(int n=0;n<car1.length();n++){  strbook=car1.getBook(n).getBooknum();//书的编号(购物中心);  booknum=request.getParameter(strbook);//根据编号取出被修改的书的数量;  if(booknum==null)booknum="";  int num=Integer.parseInt(booknum);  car1.modify(strbook,num);//修改书的数量;  }   RequestDispatcher dispatcher = null;   dispatcher=getServletContext().getRequestDispatcher("/lookmvc.jsp");   dispatcher.forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}显然,ModifyMVC完成了第五章解决方案中的modify.jsp功能。7.2.3 项目结构图前节例子的工程结构图如下所示。 图7-3 项目结构图
?

热点排行