有一个问题
来源: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回答
同学你好,测试同学代码出现类型转换异常,如下:
修改建议:
1、在Sum类中需使用request.getParameter来获取input框中name值,紧接着转换类型并对此进行累加
2、在Sum1类中使用request.getAttribute接收转发带来的数据
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); } }
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~