2 - 6 自由编程
来源:2-6 自由编程
jia_蛙
2019-11-07 10:37:02
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>计算累加和</title> </head> <body> <form action="/Servlet_advanced/count/add" method="get"> <input type="text" name="number" placeholder="请输入100以内的数字"> <input type="submit" value="求累加和"> </form> </body> </html>
package com.zhou.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 addNumber
*/
@WebServlet("/count/add")
public class addNumber extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应格式
response.setContentType("text/html;charset=utf-8");
//使用getParamenter()根据参数名称获取参数值 也就是获取到用户输入的值
String str1 =request.getParameter("number");
//初始化一个int整型变量用来存储累加值
int number = 0;
//对用户的输入进行累加
try {
int num = Integer.parseInt(str1);
if(num <=100 && num >= 0) {
for(int i=0;i<=num;i++) {
number +=i;
}
}else {
//当用户输入的数字大小不符合时直接使number等于符数
number = -1;
}
//使用setAttribute设置自定义属性
request.setAttribute("userInput", str1);
request.setAttribute("number",number);
//因为我们要在一个servlet之间进行数据传递,为了不让数据丢失这里不能使用响应重定向
request.getRequestDispatcher("/count/result").forward(request, response);
} catch (NumberFormatException e) {
response.getWriter().println("您的输入不符合规则");
e.printStackTrace();
}
}
}package com.zhou.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;
@WebServlet("/count/result")
public class resultNumber extends HttpServlet {
private static final long serialVersionUID = 1L;
public resultNumber() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应格式
response.setContentType("text/html;charset=utf-8");
//使用getAttribute获取自定义属性
int number = (Integer)request.getAttribute("number");
String str = (String)request.getAttribute("userInput");
//这里需要做个判断,判断结果是否为-1,-1说明用户输入使数字但是范围不对
if(number == -1) {
response.getWriter().println("输入的数字不在可计算范围");
}else {
response.getWriter().println(str + "的累加和为:" + number);
}
}
}老师麻烦看一下 我的代码有没有地方修改的, 我还有一个问题,就是我记得之前我们在哪里讲过, 有一个方法可以判断String类型能否转换成int类型。好像前面没多久,但去翻就是翻不到,记不起来了
1回答
同学你好!
同学的代码完成的不错,但是有一个小细节要注意一下,类名首字母要大写,同学你的首字母都小写了
同学所说的判断这个字符串是否是数字,是指下面这个吗?

这里在计算器的案例中有讲到,但是是js中的函数,不是java中的哦,具体的链接是:
java中同学可以自己封装一个

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