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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
<!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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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    份
  • 解答问题       10204    个

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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