JavaWeb 实践环节-四则运算总结

【前言】

这次的javaweb课后练习,帮助了我去将前面所学的jsp、javabean和javaservlet 三种知识联系起来,拥有了更深一步的理解

【不多说,先上代码】

一、inpuNumber.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 = "/MyJspProject/handleComputer" method = "post">
第一个数<input type = "text" name = "first"> <br>
第二个数<input type = "text" name = "second"> <br>
选择一种运算符<br>
<select name = "sign">
<option value = "+" >+</option> 
<option value = "-" >-</option>
<option value = "*" >*</option>
<option value = "/" >/</option>
</select>
<br>
<input type = "submit" value = "提交"/>
<input type = "reset" value = "重置"/>
</form>
</body>
</html>

二、ShowResult.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>
<jsp:useBean id = "computer" type = "No_5.cat.Computer" scope = "request"/>
计算结果为 :<jsp:getProperty property = "sum" name = "computer"/>
</body>
</html>

 三、Computer.java

package No_5.cat;
public class Computer {
private int first;
private int second;
private String sign;
private int sum;
public int getFirst() {
	return first;
}
public void setFirst(int first) {
	this.first = first;
}
public int getSecond() {
	return second;
}
public void setSecond(int second) {
	this.second = second;
}
public String getSign() {
	return sign;
}
public void setSign(String sign) {
	this.sign = sign;
}
public int getSum() {
	return sum;
}
public void setSum(int sum) {
	this.sum = sum;
}
}

四、CalculateBean.java

package No_5.cat;
import No_5.cat.Computer;
public class CalculateBean {
public boolean calculate(Computer computer) {
	if(computer.getSign() == "/" && computer.getSecond() == 0) {
		return false;
	}
	switch(computer.getSign()) {
	case "*":
		computer.setSum(computer.getFirst()*computer.getSecond());
		break;
	case "+":
		computer.setSum(computer.getFirst()+computer.getSecond());
		break;
	case "-":
		computer.setSum(computer.getFirst()-computer.getSecond());
		break;
	case "/":
		computer.setSum(computer.getFirst()/computer.getSecond());
		break;
	}
	return true;
	
}
}

五、HandleComputer.java

注意:我使用的是eclipse而不是idea,在webServlet的写法上也有一点点区别,小心复制,

idea 的应该改为 @WebServlet(name = "handleComputer")

package No_5.cat;

import java.io.IOException;
 
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 No_5.cat.CalculateBean;
import No_5.cat.Computer;
 
@WebServlet("/handleComputer")
public class HandleComputer extends HttpServlet {
	private static final long serialVersionUID = 1L;
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	public HandleComputer() {
		
	}
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("GBK");
        
        
        String first = request.getParameter("first");
        String second = request.getParameter("second");
        String sign = request.getParameter("sign");
        
        Computer computer = new Computer();
        computer.setFirst(Integer.parseInt(first));
        computer.setSecond(Integer.parseInt(second));
        computer.setSign(sign);
        
        CalculateBean cal = new CalculateBean();
        if(cal.calculate(computer)) {
      	  request.setAttribute("computer", computer);
      	  //获取请求转发器对象
      	  RequestDispatcher dis = request.getRequestDispatcher("/Part6_Project/ShowResult.jsp");
      	  //调用请求转发器对象完成请求
      	  dis.forward(request, response);
 
        }
        else {
      	  System.out.print("被除数不能为0,请重新输入\n 三秒后自动跳转到输入界面");
      	  response.setHeader("refresh","3,url = /Part6_Project/inputNumber.jsp");
        }
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		doGet(request, response);
        
	}
 
}

【遇到的困难】

遇到的最大困难就是路径问题,绝对路径或者相对路径,查阅了很多资料。在src 目录 或者 WebContent目录下。默认在自己目录下找文件,所以,.jsp 跳转 .java 。很多时候是直接404的,跳转到其他的目录,要使用绝对路径,而不能用相对路径。具体的表述我会在文章的最后,附上大佬们更详细的解答,需要进一步探索的可以通过传送门去查看

1. jsp “转” servlet

在inputNumber.jsp中 form 中的 action 路径,按照课本上的是 action = "handleComputer",但是,访问之后会报错404,要改成给出的代码上的那种方式

2.servlet 转 jsp

在HandleComputer.java中的跳转到ShowResult.jsp,inouterComputer.jsp中,也同样使用的绝对路径的表示方法,课本使用的相对路径

传送门

jsp跳转到servlet 出现 404 路径错误的问题解决办法_jsp跳转不到servlet__DreamCatcher_的博客-CSDN博客

【Java Web】@WebServlet详解-CSDN博客

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值