为什么一提交就显示404啊我的错误在哪里,还有我这个思路对吗

来源:2-6 自由编程

慕勒2048820

2019-01-15 22:03:17

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/myjsp/ServletAdd">
	<input style="text" name="num" placeholder="请输入100以内的数字">
	<button style="submit">求累加和 </button>
	</form>
</body>
</html>

上面是html

package com.imooc.servlet.add;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletAdd
 */
@WebServlet("/sa")
public class ServletAdd extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletAdd() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String n = request.getParameter("num");
		int sum = 0;
		for(int i = 0; i <= Integer.parseInt(n); i++ ) {
			sum = sum + i;
		}
		request.setAttribute("sum", "sum");
		request.getRequestDispatcher("/sa2").forward(request, response);
	}

}
package com.imooc.servlet.add;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletAdd2
 */
@WebServlet("/sa2")
public class ServletAdd2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletAdd2() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		int sum = (int)request.getAttribute("sum");
		response.getWriter().println(sum);
	}

}


写回答

3回答

chrismorgen

2019-01-16

你好同学,测试了你的代码有如下两点错误,

1、既然使用了@WebServlet("/sa")注解,

那么在html需要更改一下action中的路径,修订之后的代码如下:

http://img.mukewang.com/climg/5c3ea5160001e56e08000115.jpg

2、在测试你的代码时,出现了类型转换异常,原因如下图,你存入request作用域中的是字符串类型的数据。

http://img.mukewang.com/climg/5c3ea5910001caf908670077.jpg

修改意见,应将sum变量存入request作用域中,修订之后的代码如下,祝学习愉快~

http://img.mukewang.com/climg/5c3ea6100001dac608550086.jpg


0

好帮手慕阿满

2019-01-16

同学你好,ServletAdd中的注解是@WebServlet("/sa"),所以在html页面的form表单中,action应该是"http://localhost:8080/myjsp/sa",这里的myjsp应该是同学的项目名。另外在ServletAdd中,应该将计算结果sum存放在request中,所以是request.setAttribute("sum", sum);后一个sum是累加和的计算结果,不应该用引号引起来。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

慕勒2048820

提问者

2019-01-15

http://img.mukewang.com/climg/5c3de8bb00010e0511470516.jpg

0

0 学习 · 10204 问题

查看课程