jsp第八课-基于servlet的MVC模式

MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。本章将介绍MVC模式,掌握该模式对于设计合理的Web应用框架有着十分重要的意义。 
 
1. MVC模式介绍 
MVC是一种通过3个不同部分构造一个软件或组件的理想办法:
§ 模型(Model)——用于存储数据的对象。
§ 视图(View)——为模型提供数据显示的对象。
§ 控制器(Controller)——负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。 


2. JSP中的MVC模式 
模型(Model):一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。
视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。
控制器(Controller):一个或多个Servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后Servlet使用重定向方式请求视图中的某个JSP页面更新显示.


3. request周期的JavaBean 
(1)用CreateJavaBeanClass类的某个构造方法创建Javabean对象,例如:
CreateJavaBeanClass bean=new CreateJavaBeanClass();
(2)将所创建的JavaBean对象存放到HttpServletRequest对象request中,并指定查找该JavaBean的关键字,例如:
request.setAttribute("keyWord",bean); 


4. 视图更新 
JSP页面使用如下标记获得Servlet所创建的JavaBean的引用 :
<jsp:useBean id="keyWord" type="flower.grass. CreateJavaBeanClass" scope="request" /> 


5. session周期的JavaBean 
 (1)用CreateJavabeanClass类的某个构造方法创建JavaBean对象,例如:
CreateJavaBeanClass bean=new CreateJavaBeanClass();
(2)将所创建的JavaBean对象存放到HttpServletSession对象session中,并指定查找该JavaBean的关键字,例如:
HttpSession session=request.getSession(true);
session.setAttribute("keyWord",bean);




6. application周期的JavaBe
(1)用CreateJavaBeanClass类的某个构造方法创建JavaBean对象,例如:
CreateJavaBeanClass bean=new CreateJavaBeanClass();
(2)Servlet可以使用getServletContext()方法返回服务器创建的ServletContext对象的引用,将所创建的JavaBean对象存放到服务器创建的ServletContext对象中,并指定查找该JavaBean的关键字,例如:
getServletContext().setAttribute("keyWord",bean); 


web.xml
<?xml version="1.0" encoding=" ISO-8859-1"?>
<web-app>
<servlet>
    <servlet-name>computerSum</servlet-name>
    <servlet-class>sun.yourservlet.HandleSum</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>computerSum</servlet-name>
  <url-pattern>/lookSum</url-pattern>
</servlet-mapping>
</web-app>
Series.java
package moon.yourbean;
public class Series
{  double firstItem;  //数列首项
  double var;        //公差或公比
  int number;        //求和项数
  double sum;       //求和结果
  String name="";   //数列类别       
  public void setFirstItem(double a)
  { firstItem=a;
  }
  public double getFirstItem()
  {  return firstItem;
  }
  public void setVar(double b)
  {  var=b;
  }
  public double getVar()
  {  return var;
  }
  public void setNumber(int n)
  {  number=n;
  }
  public double getNumber()
  {  return number;
  }
  public void setSum(double s)
  { sum=s;
  }
  public double getSum()
  {  return sum;
  }
 public void setName(String na)
 {  name=na;
 }
 public String getName()
 {  return name;
 }
}
inputMess.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><Font size=2>
<FORM action="lookSum" Method="post" >
  等差数列求和:
 <BR>输入首项:<Input type=text name="firstItem" size=4>
     输入公差:<Input type=text name="var" size=4>
     求和项数:<Input type=text name="number" size=4>
 <Input type=submit value="提交">
</FORM>
<FORM action="lookSum" Method="get" >
  等比数列求和:
 <BR>输入首项:<Input type=text name="firstItem" size=4>
     输入公比:<Input type=text name="var" size=4>
     求和项数:<Input type=text name="number" size=4>
 <Input type=submit value="提交">
</FORM>
</Font></BODY></HTML>
showResult.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="moon.yourbean.*"%> 
<jsp:useBean id="lie" type="moon.yourbean.Series" scope="request"/>
<HTML><BODY>
 <Table border=1>
  <tr> 
   <th> 数列的首项</th>
   <th> <jsp:getProperty name="lie" property="name"/></th>
   <th> 所求项数</th>
   <th> 求和结果</th>
  </tr>
   <td><jsp:getProperty name="lie" property="firstItem"/></td>
   <td><jsp:getProperty name="lie" property="var"/></td>
   <td><jsp:getProperty name="lie" property="number"/></td>
   <td><jsp:getProperty name="lie" property="sum"/></td>
  </tr>
  </Table>
</BODY></HTML>
HandleSum.java
package sun.yourservlet;
import moon.yourbean.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleSum extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
   {super.init(config);
   }
  public void doPost(HttpServletRequest request,HttpServletResponse response) 
                       throws ServletException,IOException
   {   Series shulie=new Series();  //创建Javabean对象
       request.setAttribute("lie",shulie);//将shulie存储到HttpServletRequest对象中
       double a=Double.parseDouble(request.getParameter("firstItem"));
       double d=Double.parseDouble(request.getParameter("var"));
       int n=Integer.parseInt(request.getParameter("number"));
       shulie.setFirstItem(a);            //将数据存储在shulie中 
       shulie.setVar(d);           
       shulie.setNumber(n);
       //计算和:
       double sum=0,item=a;
       int i=1;
       shulie.setName("等差数列的公差");
       while(i<=n)                        //计算等差数列的和
       { sum=sum+item;
         i++;
         item=item+d;  
       }
       shulie.setSum(sum);
       RequestDispatcher dispatcher=request.getRequestDispatcher("showResult.jsp");
       dispatcher.forward(request,response); //请求showResult.jsp显示shulie中的数据         
   } 
  public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                       throws ServletException,IOException
   {   Series shulie=new Series(); 
       request.setAttribute("lie",shulie);
       double a=Double.parseDouble(request.getParameter("firstItem"));
       double d=Double.parseDouble(request.getParameter("var"));
       int n=Integer.parseInt(request.getParameter("number"));
       shulie.setFirstItem(a);            
       shulie.setVar(d);           
       shulie.setNumber(n);
       //计算和:
       dou
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值