jsp mvc模式及例項計算一元二次方程的根
阿新 • • 發佈:2021-05-17
前言
這週一直比較忙,所以一直沒有學習新的東西,所以決定本週的部落格主要鞏固一下課堂知識。
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>
效果
總結
個人感覺程式碼並沒有太高的難度,主要是對這種模式的感悟和理解,再以後再編寫程式碼是要有意識的使用這種模式。