文章目录

  • 一、实验目的
  • 二、实验内容
    • 实验6-1:
    • 实验6-2:
  • 三、参考代码
    • 实验6-1:
    • 实验6-2:
  • 四、实验结果
    • 实验6-1:
    • 实验6-2:
  • 五、讨论

一、实验目的

本实验的目的是掌握在MVC模式中怎样使用scope是request的bean及scope是session的bean。

二、实验内容

实验6-1:

视图:提供两个JSP页面,一个页面使得用户可以输入一元二次方程的系数;另一个页面可以显示一元二次方程的系数和根。
数据模型:提供的Javabean负责刻画一元二次方程,即可以存储一元二次方程的系数以及方程的根,提供简单的获取数据和修改数据的方法。
控制器:负责计算一元二次方程的根,然后将有关数据存储到Javabean数据模型中,然后用转发的方式请求视图中负责显示数据的JSP页面显示Javabean数据模型中的数据。

实验6-2:

视图:提供一个JSP页面,该页面使得用户可以输人梯形的上底、下底和高,并能显示梯形的上底、下底和高以及面积。
数据模型:提供的Javabean负责刻画梯形,即可以存储梯形的有关数据,提供简单的获取数据和修改数据的方法。
控制器:负责计算梯形的面积,然后将有关数据存储到Javabean数据模型中,然后用转发或重定向的方式请求视图中负责显示数据的JSP页面显示Javabean数据模型中的数据。

三、参考代码

实验6-1:

Web.xml添加映射代码:

 <servlet><servlet-name>handle</servlet-name><servlet-class>myservlet.control.HandleData</servlet-class></servlet><servlet-mapping><servlet-name>handle</servlet-name><url-pattern>/handleData</url-pattern></servlet-mapping>

Equation.java

 package mybean.data;public class Equation{  double a,b,c;String rootOne,rootTwo;boolean squareEquation;public void setA(double a){ this.a=a;}public double getA(){  return a;}public void setB(double b){  this.b=b;}public double getB(){  return b;}public void setC(double c){  this.c=c;}public double getC(){  return c;}public void setRootOne(String root){ rootOne=root;}public String getRootOne(){  return rootOne;}public void setRootTwo(String root){ rootTwo=root;}public String getRootTwo(){  return rootTwo;}public void setIsSquareEquation(boolean b){ squareEquation=b;}public boolean getIsSquareEquation(){  return squareEquation;}}

Input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<HTML><BODY ><Font size=2><FORM action="handleData" Method="post" ><BR>输入一元二次方程的系数:<BR> 二次项系数a:<Input type=text name="a" size=4>一次项系数b:<Input type=text name="b" size=4>常数项c:<Input type=text name="c" size=4><Input type=submit value="提交"></FORM></Font></BODY></HTML>

Show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import="mybean.data.*"%>
<!DOCTYPE html><jsp:useBean id="equation" type="mybean.data.Equation" scope="request"/><HTML><BODY ><Font size=2>一元二次方程的系数是:
<BR> 二次项系数:<jsp:getProperty name="equation"  property="a"/>一次项系数:<jsp:getProperty  name="equation" property="b"/>常数项:<jsp:getProperty name="equation" property="c"/>
<BR>是一元二次方程吗?<jsp:getProperty name="equation" property="isSquareEquation"/>
<BR>方程的两个根是:<jsp:getProperty name="equation" property="rootOne"/>,
<jsp:getProperty name="equation" property="rootTwo"/>
</FONT></BODY></HTML>

HandleData.java

package myservlet.control;import mybean.data.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleData extends HttpServlet{  public void init(ServletConfig config) throws ServletException{super.init(config);}public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{   Equation equ=new Equation();  //创建Javabean对象request.setAttribute("equation",equ);// 将equ存储到HttpServletRequest对象中double a=Double.parseDouble(request.getParameter("a"));double b=Double.parseDouble(request.getParameter("b"));double c=Double.parseDouble(request.getParameter("c"));equ.setA(a);            //将数据存储在equ中 equ.setB(b);           equ.setC(c);if(a!=0)equ.setIsSquareEquation(true);elseequ.setIsSquareEquation(false);double disk=b*b-4*a*c;if(disk<0){  equ.setRootOne("无实根");equ.setRootTwo("无实根");}  else{ double root1=(-b+Math.sqrt(disk))/(2*a),root2=(-b-Math.sqrt(disk))/(2*a);equ.setRootOne(""+root1); equ.setRootTwo(""+root2); }RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp");dispatcher.forward(request,response);    //请求show.jsp显示equ中的数据         } public  void  doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{   doPost(request,response);}}

实验6-2:

Web.xml映射添加代码:

<servlet><servlet-name>handle</servlet-name><servlet-class>myservlet.control.HandleArea</servlet-class></servlet><servlet-mapping><servlet-name>handle</servlet-name><url-pattern>/handleArea </url-pattern ></servlet-mapping>

Area.java

package mybean.data;
public class Area{double a, b, c, area;String mess;public void setMess(String mess) {this.mess = mess;}public String getMess(){return mess;}public void setA(double a){this.a=a;}public void setB(double b){this.b= b;}public void setC(double c){this.c=c;}public double getA(){return a;}public double getB(){return b;}public double getC(){return c;}public void setArea(double s){area= s;}public double getArea(){return area;}
}

inputData.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<jsp:useBean id= "data" class = "mybean.data.Area" scope = "session"/>
<html><body bgcolor= cyan><Font size=2>
<form action="handleArea" Method="get">梯形:<br>输人上底:<input type= text name= "a" size=4>输人下底:<input type= text name= "b" size=4>输人高: <input type= text name= "c" size=4><input type= submit value= "提交">
</form><jsp:getProperty name="data" property= "mess"/>:上底<jsp:getProperty name="data" property="a"/>,下底<jsp:getProperty name="data" property="b"/>,高<jsp:getProperty name="data" property="c"/><br>的面积是<jsp:getProperty name="data" property= "area"/>
</font></body></html>

HandelArea.java

package myservlet.control;
import mybean.data.Area;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleArea extends HttpServlet{public void init(ServletConfig config) throws ServletException{super.init(config);}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{Area dataBean= new Area();//创建Javabean对象HttpSession session = request.getSession(true);session.setAttribute("data" ,dataBean);//将dataBean存储到request对象中try{ double a= Double.parseDouble(request.getParameter("a"));double b= Double.parseDouble(request.getParameter("b"));double c= Double.parseDouble(request.getParameter("c"));dataBean.setA(a);//将数据存储在dataBean中dataBean.setB(b);dataBean.setC(c);double s=-1;s= (a+b)*c/2.0;dataBean.setArea(s);//将数据存储在dataBean中dataBean.setMess("梯形");}catch(Exception e){dataBean.setArea(-1);dataBean.setMess("" + e);}response.sendRedirect("inputData.jsp");}
}

四、实验结果

实验6-1:

运行input.jsp

验证a=0时:

提交后:

验证有实根:

验证无实根:

实验6-2:

运行inputData.jsp

输入数据:

提交后:

五、讨论

1.MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。
2.在JSP技术中,视图是一个或多个JSP页面,其作用主要是向控制器提交必要的数据和为模型提供数据显示。
3.模型是一个或多个Javabean对象,用于存储数据。
4.控制器是一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到Javabean中,然后servlet使用重定向方式请求视图中的某个JSP页面更新显示。
5.在MVC模式中,模型也可以由控制器负责创建和初始化。

MVC模式计算一元二次方程的根及梯形面积相关推荐

  1. 可以计算一元二次方程复数根的模拟计算机

    可以计算一元二次方程复数根的模拟计算机 模拟计算机采用模拟电路计算加减乘除.例如计算,(28+80-65)×56÷79,可以先用直流电源电路产生一个DC28V,1A的信号,这个信号代表实数28.再用直 ...

  2. Java简单题-----计算一元二次方程的根

    计算一元二次方程的根: import java.util.*;public class theSolutionOfEquation {public static void main(String [] ...

  3. java——计算一元二次方程的根

    class FindRoot{ //计算一元二次方程的根static double[] root(double a, double b, double c) throws Exception{doub ...

  4. EduCoder-程序设计技术R-选择结构程序设计进阶-(第1关:快递费用计算)(第2关:计算一元二次方程的根)(第3关:产品信息格式化)

    目录 第1关:快递费用计算 代码示例 第2关:计算一元二次方程的根 代码示例 第3关:产品信息格式化 代码示例 第1关:快递费用计算 任务描述 本关任务:编写一个计算机快递费的程序. 上海市的某快递公 ...

  5. 3-4 3.4编程计算一元二次方程的根

    3-4 3.4编程计算一元二次方程的根 3.4. A quadratic equation is an equation that either has the from or an equation ...

  6. python计算一元二次方程的根

    python计算一元二次方程的根 小编也是一个小白,,只因突然想起写个求解方程,所以写了一个求解一元二次方程的代码. 发现使用python写求解方程要比c语言简单..但是学艺不精,,勿喷 以下代码能够 ...

  7. java计算一元二次方程的根_java基础 --- 求一元二次方程的根(分情况讨论)-Go语言中文社区...

    package com.test;//创建一个test包 import java.util.Scanner;//导入java.util包中的Scanner类(使用此类可以方便的完成输入流的输入操作) ...

  8. C语言计算一元二次方程的根(完全版)

    题目(Description): 求一元二次方程ax2+bx+c=0的根.a.b.c为任意实数. 输入(Input): 任意三个系数a.b.c. 输出(Output): x1 x2实根(保留2位小数) ...

  9. 计算一元二次方程的根

    根据下面给出的求根公式,计算并输出一元二次方程ax2+bx+c=0的两个实根,要求精确到小数点后4位.其中a,b,c的值由用户从键盘输入.如果用户输入的系数不满足求实根的要求,输出错误提示 " ...

最新文章

  1. 矩阵的三角分解(LU)法(高斯消去法的矩阵形式分析)
  2. 面试归来,我有一个重要发现……
  3. 四、redis比mysql快的原因
  4. OpenCV图像剪切,超出图像区域指定颜色填充
  5. linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...
  6. csharp read excel file get sheetName list
  7. 一台CentOS云主机更改源的记录
  8. Intellij Idea选中内容后Backspace删除无法使用,Ctrl+c/Ctrl+v/Ctrl+s/Ctrl+d等等快捷键无法使用的问题的解决
  9. 7.2 HAVING子句
  10. docker的核心原理-cgroup
  11. 电子器件系列二十一:混频器
  12. 捕鱼达人 FishMaster 记录(Done)
  13. Maxwell简单使用
  14. Python数据分析——matplotlib折线图和散点图
  15. WY-2000B空气质量检测系统
  16. AD在PCB设计中导入LOGO
  17. Python爬取并分析 201865 条《隐秘的角落》弹幕
  18. python你好怎么写_python学习之python入门
  19. linux+ibm+was+版本,IBM WAS 9.0完整版安装参考手册
  20. Java实验一—创建用于计算身体质量指数的BMI类

热门文章

  1. 【理解RESTful架构】——阮一峰版
  2. 2022年流动式起重机司机模拟试题及流动式起重机司机证考试
  3. 【当Idea出现Artifact xx:war exploded: Error during artifact deployment. See server log for details】
  4. 抓包工具:Fiddler下载、安装、使用 教程
  5. 计算机学院部长换届答辩,电子信息工程学院分团委换届答辩顺利举行
  6. 学习python第三天数据库day2
  7. BZOJ P1966[Ahoi2005]VIRUS 病毒检测
  8. 论文笔记:Extendability for Threshold Ring Signatures
  9. [经验教程]淘宝粉丝福利购优惠券入口在哪里怎么找到?
  10. shellexecute 执行完成_「shellexecute」C++之ShellExecute使用详解 - seo实验室