创建一个Dynamic Web Project, 命名为GuessNumber,在GuessNumber下的scr文件夹中创建一个servlet,命名为gn1。
在doget方法中写如下代码:
HttpSession s1=request.getSession(); //创建会话,不用解释了吧
PrintWriter out=response.getWriter();
response.setContentType("text/html;charset=GBK"); //注意编码,不过这个程序没问题,因为都是英文的
if(s1.getAttribute("guessNumber")==null){ //判断程序开始
s1.setAttribute("guessNumber",(int)(Math.random()*99+1) ); //系统取随机数
s1.setAttribute("message", "hey,i have a number,can you guess it?"); //创建消息对象
}
out.println("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=gbk\"></head><body>");
out.println(s1.getAttribute("message"));
out.println("<form method=\"post\" action=\"gn2\">"); //post方法提交到gn2
out.println("<input type=\"text\" size=4 name=\"value\">");
out.println("<input type=\"submit\" value=\"submit\">"+s1.getAttribute("guessNumber"));
//显示随机到的数字。调试用的,可以去掉...
out.println("</form></body></html>");
再创建一个servlet,命名为gn2,dopost方法中写代码如下:
HttpSession s2=request.getSession();
int num1=(int)s2.getAttribute("guessNumber"); //取gn1的随机数,下面比较的时候用
s2.getAttribute("message"); //取gn1的message,这句好像没用...不用也可以
String num2=request.getParameter("value"); //取客户端输入的值
int num=Integer.parseInt(num2); //字符串转换成数字
if(num>num1){ //下面是比较
s2.setAttribute("message", "big");
response.sendRedirect("gn1");
}else if(num<num1){
s2.setAttribute("message", "small");
response.sendRedirect("gn1");
}else if(num==num1){
response.sendRedirect("success.html");
s2.removeAttribute("guessNumber");
在Web Content文件夹下创建一个html文件,命名为success.html。
编辑代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>恭喜你猜对了!</p>
<a href="http://localhost:8088/GuessNumber/gn1">play again</a> //注意端口,酌情选择
</body>
</html>
就这样!
打开浏览器,输入地址http://localhost:8088/GuessNumber/gn1 回车,就ok了。
上面的端口为什么是8088,我在“简单的helloworld”中有解释。