MVC实现复数运算

M:计算模型--javabean

V:视图--jsp

C:控制器--servlet

先写在前面吧,困了我好久的一个错误,竟然是:String 类型的比较需要用 “equals”  而不是“==”  我在上面栽了好几个小时,这回一定记住了。emmm

 equals  与  ==  区别:https://www.cnblogs.com/dongguol/p/5845076.html

下面是原文。

效果图:

输入数据--jsp

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>复数运算</title>
</head>
<body>
<form action="js" method="post">
  <table>
      <tr><td>第一个数实部:</td><td><input type="text" name="j1"></td></tr>
      <tr><td>第一个数虚部:</td><td><input type="text" name="i1"></td></tr>
      <tr><td colspan="2">
         运算:<select name="op">
            <option selected>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
         </select>
      <tr><td>第二个数实部:</td><td><input type="text" name="j2"></td></tr>
      <tr><td>第二个数虚部:</td><td><input type="text" name="i2"></td></tr>
      <tr align="center">
      <td colspan="2"><input type="submit" value="提交">&nbsp;&nbsp;
                      <input type="reset" value="取消">
      </td></tr>
  </table>
</form>
</body>
</html>

 计算Js(js)--sevlet

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		double x1=Double.parseDouble(request.getParameter("j1"));
		double y1=Double.parseDouble(request.getParameter("i1"));
		double x2=Double.parseDouble(request.getParameter("j2"));
		double y2=Double.parseDouble(request.getParameter("i2"));
		
		Fs c1 = new Fs(x1,y1);
		Fs c2 = new Fs(x2,y2);
		
		request.setAttribute("js1", c1);
		request.setAttribute("js2", c2);
		
//		Fs c3 = new Fs();
		
		String op=request.getParameter("op");
		
/*	第一版本,与javabean里的第一版本对应,但是错误,不知道原因
     	if(op=="+") {c3=c1.add(c2); }
		if(op=="-") {c3=c1.subtract(c2);}
		if(op=="*") {c3=c1.mutiply(c2);}
		if(op=="/") {c3=c1.divide(c2);}
		request.setAttribute("mm", c3);
*/	
	    Fs c3 = c1.opp(c2, op);
	    request.setAttribute("mm", c3);
	    
		RequestDispatcher rd=request.getRequestDispatcher("show.jsp");
		rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

 模型Fs--javabean

package javabean;

public class Fs {
	private double x;
	private double y;
	
	public double getX() {
		return x;
	}
	public void setX(double x) {
		this.x = x;
	}
	public double getY() {
		return y;
	}
	public void setY(double y) {
		this.y = y;
	}
	public Fs(double x, double y) {
		this.x = x;
		this.y = y;
	}
	public Fs() {}

	public Fs opp(Fs c,String op) {
		double j = 0;
		double i = 0;
		
		switch(op) {
		case "+" :
		    j=this.x+c.x;
		    i=this.y+c.y;
		    break;
		case "-" :
			j=this.x-c.x;
			i=this.y-c.y;
			break;
		
		case "*" :
			j=(this.x*c.x)-(this.y*c.y);
			i=(this.y*c.x)+(this.x*c.y);
			break;
		case "/" :
			j=(this.x*c.x+this.y*c.y)/((c.x*c.x)+(c.y*c.y));
			i=((this.y*c.x)-(this.x*c.y))/((c.x*c.x)+(c.y*c.y));
			break;
		}	
		return new Fs(j,i); 
	 }
	public String pp() {
		String r=null;
		if(y!=0) {
		    if(y>0)
			    r=""+x+"+"+y+"i";
		    else
			    r=""+x+y+"i";
		}
		else
			r=""+x;
		return r;
	}
//以下是计算函数的修改过程,错误原因应该都是c3没有正确的调用函数
//在if分支语句好像并不起作用,换成switch-case则正确,原因?
//原因:String 类型的比较需要用 “equals”  而不是“==”
/*	第一版本
		public Fs add(Fs c) {
			double j=this.x+c.x;
			double i=this.y+c.y;
			Fs m = new Fs(j,i);
			return m; 
		}
		
		public Fs subtract(Fs c) {
			double j=this.x-c.x;
			double i=this.y-c.y; 
			Fs m = new Fs(j,i);
			return m; 
		}
		public Fs mutiply(Fs c) {
			//(ac-bd)+(bc+ad)i 
			double j=(this.x*c.x)-(this.y*c.y);
			double i=(this.y*c.x)+(this.x*c.y);
			Fs m = new Fs(j,i);
			return m; 
		}
		
		public Fs divide(Fs c) {
			//(a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i
			double j=(this.x*c.x+this.y*c.y)/((c.x*c.x)+(c.y*c.y));
			double i=((this.y*c.x)-(this.x*c.y))/((c.x*c.x)+(c.y*c.y));
			Fs m = new Fs(j,i);
			return m; 
		}
*/	
		
/* 第三版本
     public Fs opp(Fs c,String op) {
 		if(op=="+") {
			
			return new Fs(this.x+c.x,this.y+c.y);
		}
		if(op=="-") {
			return new Fs(this.x-c.x,this.y-c.y);
		}
	}
*/	
		
/*	第二版本
      public Fs opp(Fs c,String op) {
    	if(op=="+") {
			j=this.x+c.x;
			i=this.y+c.y;
			return new Fs(this.x+c.x,this.y+c.y);
		}
		if(op=="-") {
			j=this.x-c.x;
			i=this.y-c.y;
		}
		if(op=="*") {
			j=(this.x*c.x)-(this.y*c.y);
			i=(this.y*c.x)+(this.x*c.y);
		}
		if(op=="/") {
			j=(this.x*c.x+this.y*c.y)/((c.x*c.x)+(c.y*c.y));
			i=((this.y*c.x)-(this.x*c.y))/((c.x*c.x)+(c.y*c.y));
		}
		Fs m = new Fs(j,i);
		return m;
	}
*/		

}

显示结果show--jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import="javabean.Fs"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
   Fs x=(Fs)request.getAttribute("js1");
   Fs y=(Fs)request.getAttribute("js2");
   Fs z=(Fs)request.getAttribute("mm");
   String op=request.getParameter("op");
%>
(<%=x.pp()%>)<%=op%>(<%=y.pp() %>)=(<%= z.pp() %>)
</body>
</html>

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC是一种基于Java的Web框架,它采用了MVC(Model-View-Controller)模式来实现Web应用程序的开发。下面是Spring MVC实现原理: 1. 请求处理流程:当客户端发起请求时,Spring MVC框架会首先通过DispatcherServlet来接收请求。DispatcherServlet是Spring MVC的核心组件,它拦截所有的请求并将请求交给处理器映射器(HandlerMapping)来确定具体处理该请求的控制器(Controller)。 2. 控制器的处理:确定了处理该请求的控制器之后,DispatcherServlet会将请求传递给相应的控制器进行处理。控制器会根据请求参数的不同,调用相应的Service层进行业务处理,并将处理结果封装成ModelAndView对象返回给DispatcherServlet。 3. 视图解析器:DispatcherServlet接收到控制器返回的ModelAndView对象之后,会将其传递给视图解析器(ViewResolver)进行视图解析。视图解析器会根据配置文件中的视图解析规则,将ModelAndView中的数据渲染成HTML等格式的视图并返回给客户端。 4. 视图渲染:视图渲染是将模型数据渲染成HTML等格式的视图的过程。Spring MVC提供了多种视图技术,如JSP、Freemarker、Velocity等。 5. 返回结果:视图渲染完成之后,DispatcherServlet会将视图返回给客户端,完成整个请求处理流程。 总的来说,Spring MVC实现原理是基于DispatcherServlet、HandlerMapping、Controller、ViewResolver和视图渲染等组件的协作完成的。它的优点是非常灵活,可以根据需要自由选择和配置不同的组件,以满足不同的业务需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值