jsp mvc模式及实例计算一元二次方程的根

前言

这周一直比较忙,所以一直没有学习新的东西,所以决定本周的博客主要巩固一下课堂知识。


MVC模式

  • M(模型:Model):用于储存数据的对象。
  • V(视图:View):向控制器提交所需数据、显示模型的数据。
  • C(控制器:Controller):负责具体的业务逻辑操作

个人感悟

MVC模型的思想与博主之前学python时的分而治之的思想有很大的相似的,可以彼此借鉴,主要就是让一个大的项目进行分割,然后各司其职,也和大数据思想中的“松耦合,紧内聚”,有一定相似之处。

实例(计算一元二次方程的根)

Model:主要采用Javabean进行数据的储存的修改。

package pg1;

public class Equation {
	double a, b, c; //方程的三个系数
	String rootOne, rootTwo;//储存储存方程的两个跟
	boolean squareEquation;//储存方程是否为二次方程 True/False

	public double getA() {
		return a;
	}

	public void setA(double a) {
		this.a = a;
	}

	public double getB() {
		return b;
	}

	public void setB(double b) {
		this.b = b;
	}

	public double getC() {
		return c;
	}

	public void setC(double c) {
		this.c = c;
	}

	public String getRootOne() {
		return rootOne;
	}

	public void setRootOne(String rootOne) {
		this.rootOne = rootOne;
	}

	public String getRootTwo() {
		return rootTwo;
	}

	public void setRootTwo(String rootTwo) {
		this.rootTwo = rootTwo;
	}

	public boolean getIsSquareEquation() {
		return squareEquation;
	}

	public void setIsSquareEquation(boolean b) {
		squareEquation = b;

	}
}

视图:采用jsp页面进行数据的获取以及结果的展示
input.jsp:获取数据

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<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>//from表单让用户提交数据
</body>
</html>

show.jsp:展示结果

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="equation" class="pg1.Equation" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
一元二次方程的系数是:
<br>二次项系数:<jsp:getProperty property="a" name="equation"/>
	一次项系数:<jsp:getProperty property="b" name="equation"/>
	常数项:<jsp:getProperty property="c" name="equation"/>
<br>是一元二次方程吗?<jsp:getProperty property="isSquareEquation" name="equation"/>
<br>方程的两个根是:<jsp:getProperty property="rootOne" name="equation"/>
<jsp:getProperty property="rootTwo" name="equation"/>

</body>
</html>

控制器:使用servlet进行数据的逻辑运行。

package pg1;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HandleData extends HttpServlet {
	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
	}

	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Equation equ = new Equation();
		request.setAttribute("equation", equ);
		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.setB(b);
		equ.setC(c);
		if (a != 0)
			equ.setIsSquareEquation(true);
		else
			equ.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);
	}

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
}

web.xml可用于不同模块之间的链接。

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

效果

在这里插入图片描述
在这里插入图片描述

总结

个人感觉代码并没有太高的难度,主要是对这种模式的感悟和理解,再以后再编写代码是要有意识的使用这种模式。

  • 1
    点赞
  • 2
    评论
  • 5
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

超哥--

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值