有一个问题

来源:2-6 自由编程

复java_n

2020-09-01 10:42:58

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action="http://localhost:8080/JspPracCode/Sum" method="get" >

<input type="text">

<input type="submit" value="累加求和">

</form>

</body>

</html>

package com.imooc.sum;


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 Sum

 */

@WebServlet("/Sum")

public class Sum extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public Sum() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

request.setAttribute("daan", "sum");

request.getRequestDispatcher("/Sum1").forward(request,response);

}


}

package com.imooc.sum;


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 Sum1

 */

@WebServlet("/Sum1")

public class Sum1 extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public Sum1() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

int sum=0;

int s=(int)request.getAttribute("daan");

for(int i=0;i<s;i++) {

sum+=i;

}

response.getWriter().println(sum);

}


}


写回答

1回答

好帮手慕小脸

2020-09-01

同学你好,测试同学代码出现类型转换异常,如下:

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

修改建议:

    1、在Sum类中需使用request.getParameter来获取input框中name值,紧接着转换类型并对此进行累加

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

http://img.mukewang.com/climg/5f4dc7ad099f23f108650318.jpg    2、在Sum1类中使用request.getAttribute接收转发带来的数据

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

    3、为避免出现乱码同学可直接在doGet方法中加上如下内容:

    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf8");
    resp.setContentType("text/html;charset=utf-8");

修改后代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/你的项目名/Sum" method="get">
		<input type="text" name="daan"> <input type="submit"
			value="累加求和">
	</form>
</body>
</html>

sum1

@WebServlet("/Sum1")

public class Sum1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public Sum1() {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf8");
	    response.setContentType("text/html;charset=utf-8");
		response.getWriter().println("累加和计算:");
		// 接收转发带来的数据,并强制转换为数字。
	      int sum = (int) request.getAttribute("sum");
	      response.getWriter().println("结果为:"+sum);
	}
}

Sum

@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 dean = request.getParameter("daan");
		int s = Integer.parseInt(dean);
		int sum = 0;
		for (int i = 0; i <= s; i++) {

			sum += i;

		}
		// 设置请求的自定义属性,将数据保存在请求中传递给Sum1。
		request.setAttribute("sum", sum);
		request.getRequestDispatcher("/Sum1").forward(request, response);

	}

}

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

0

0 学习 · 9666 问题

查看课程

相似问题