请问为什么用响应重定向是500错误?

请问为什么用响应重定向是500错误?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/WebDemo1/sum">
		<input type="text" name="number" placeholder="请输入100以内的数字">
		<input type="submit" name="submit" value="求累加和">
	</form>
</body>
</html>
package com.imooc.direct;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/sum")
public class sum extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public sum() {
        super();
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String num = request.getParameter("number");
		int number = Integer.parseInt(num);
		int sum=0;
		for(int i=0;i<=number;i++) {
			sum=sum+i;
		}
		request.setAttribute("sum", sum);
//		request.getRequestDispatcher("/show").forward(request,response);
		response.sendRedirect("/WebDemo1/show");
	}
}
package com.imooc.direct;

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;

@WebServlet("/show")
public class show extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public show() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int result = (int)request.getAttribute("sum");
		response.getWriter().println(result);
	}

}

工程目录如下图:

http://img1.sycdn.imooc.com//climg/5c1792aa00010e2e04520526.jpg
















正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
qq_我叫马俊杰_0 2019-01-12 17:20:28

你的html页面上的method

有点麋鹿 2019-01-06 11:46:46

重定向到show里面;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

int result=(int)request.getAttribute("sum");

response.getWriter().println(result);

}

这里的sum是个字符串,无法强制转化成为一个int类型的数字,报错:500(服务器错误);可以把sum改成一个int数值..

  • 说错了不是改sum;是改result。。。
    2019-01-06 11:48:55
有点麋鹿 2019-01-06 11:01:44

你用的是响应重定向,响应重定向是两次请求,要用转发才能赋值。

qq_温书_0 2018-12-26 14:55:44

方法使用错误,你定义了使用doGet()方法,但是在开始你又没有定义方法为get()方法。要不就把doGet()方法换成service()方法。

  • 回答有错,试了一下还是不行。依然提示空指针异常。
    2018-12-26 15:58:22

 第一个servlet27行

response.sendRedirect("/WebDemo1/show");

去掉/WebDemo1


  • 提问者 慕数据7156690 #1
    去掉之后变成404错误了。而且老师课上讲的响应重定向要增加上下文路径的?
    2018-12-18 10:27:23
  • 看错了= =,重定向之后的request是第二个request,你仔细看500错误是个空指针异常,因为新的request里没有sum这个属性
    2018-12-18 14:43:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师