Design a Web application using MVC pattern based on Servlet

Design a Web application using MVC pattern based on Servlet

Requirements : The user inputs 2 operands through the JSP page inputNumber.jsp, selects an operator, and clicks the "Submit" button to call the HandleComputer.java Servlet. In HandleComputer, first get the numbers and operators entered by the user, and store these contents into the entity model (created by Computer.java), and then call the business model (created by CalculateBean.java) to perform calculations, and store the results in In the entity model, call JavaBean in showResult.jsp to display the result of the calculation. If the input format is incorrect but submit, the page will be reset.

Create project and files : First create a new Dynamic Web Project and
create the files as shown below: The
Insert picture description here
code part is as follows:
Computer.java:

package dto;

public class Computer {
    
    
	private String number1;
	private String number2;
	private String sign;
	private double result;
	public String getNumber1(){
    
    
		return number1;
		}
	public void setNumber1(String number1){
    
    
		this.number1=number1;
	}
	public String getNumber2(){
    
    
		return number2;
		}
	public void setNumber2(String number2){
    
    
		this.number2=number2;
	}
	public String getSign(){
    
    
		return sign;
		}
	public void setSign(String sign){
    
    
		this.sign=sign;
	}
	public double getResult(){
    
    
		return result;
		}
	public void setResult(double result){
    
    
		this.result=result;
	}
}

CalculateBean.java:

package service;

import dto.Computer;
public class CalculateBean{
    
    
	public boolean test(Computer user) {
    
    
		if(user!=null&&user.getSign().equals("+")||user.getSign().equals("-")||user.getSign().equals("*")||user.getSign().equals("/")&&user.getNumber1()!=null&&user.getNumber2()!=null&&user.getSign()!=null) {
    
    
			return true;
		}
		else {
    
    
			return false;
		}
	}
	public void validate(Computer user){
    
    
		if(user.getNumber1()!=null&&user.getNumber2()!=null) {
    
    
			if(user.getSign().equals("+")) {
    
    
				user.setResult(Double.parseDouble(user.getNumber1())+Double.parseDouble(user.getNumber2()));
				}
			else if(user.getSign().equals("-")) {
    
    
				user.setResult(Double.parseDouble(user.getNumber1())-Double.parseDouble(user.getNumber2()));
				}
			else if(user.getSign().equals("*")) {
    
    
				user.setResult(Double.parseDouble(user.getNumber1())*Double.parseDouble(user.getNumber2()));
				}
			else {
    
    
				user.setResult(Double.parseDouble(user.getNumber1())/Double.parseDouble(user.getNumber2()));
				}
			}
		}
	}

HandleComputer.java:

Note 1: Here uc.validate(user) must be called when it is determined that both getNumber1() and getNumber2() are not empty. Otherwise, if you do not enter the number one or two, it will throw a null pointer exception
. 2. Here Double.parseDouble (user.getNumber1()) is a statement that converts a string into a Double type number

package servlet;

import java.io.IOException;
import service.CalculateBean;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dto.Computer ;
@WebServlet(name="HandleComputer",urlPatterns={
    
    "/HandleComputer"})
public class HandleComputer extends HttpServlet{
    
    
	private static final long serialVersionUID = -5323681476108301191L;
	protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		doPost(request,response);
	}

	protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    
    
		request.setCharacterEncoding("GBK");
		String number1=request.getParameter("number1");
		String number2=request.getParameter("number2");
		String sign=request.getParameter("sign");
		Computer user=new Computer();
		user.setNumber1(number1);
		user.setNumber2(number2);
		user.setSign(sign);
		CalculateBean uc=new CalculateBean();
		
		if (uc.test(user)){
    
    
			uc.validate(user);
			request.setAttribute("user",user);
			RequestDispatcher dis=request.getRequestDispatcher("showResult.jsp");
			dis.forward(request,response);
} 
		else {
    
    
			response.sendRedirect("inputNumber.jsp");
			} 
		}
}

inputNumber.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>inputNumber</title>
</head>
<body>
<form action="HandleComputer" method="post">
<table>
<tr>
<td>数字一:</td>
<td><input type="text" name="number1"/></td>
</tr>
<tr>
<td>数字二:</td>
<td><input type="text" name="number2"/></td>
</tr>
<tr>
<tr>
<td>运算符:</td>
<td><input type="text" name="sign"/></td>
</tr>
<tr>
<td><input type="submit" value="提交"/></td>
<td><input type="reset" value="重置"/></td>
</tr>
</table>
</form>
</body>
</html>

showResult.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>showResult</title>
</head>
<body>
<jsp:useBean id="user" type="dto.Computer" scope="request"/>
<jsp:getProperty property="number1" name="user"/>
<jsp:getProperty property="sign" name="user"/>
<jsp:getProperty property="number2" name="user"/>
=<jsp:getProperty property="result" name="user"/>
</body>
</html>

Guess you like

Origin blog.csdn.net/weixin_46020391/article/details/109299599