设计一个webapp,每次产生一个30以内的数字,给5次机会让客户猜测这个数字:
1)如果客户猜的数字比产生的数字值大,则提示“大了”。
2)如果客户猜的数字比产生的数字值小,则提示“小点”
猜对了就过关,猜错GameOver,给玩家重玩的机会。
JSP代码:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>Inserttitlehere</title>
</head>
<body>
<%
Stringresult=(String)request.getAttribute("result");
if(result!=null){
out.write("<fontcolor='red'>"+result+"'</font>");
}
%>
<%
Integertimes=(Integer)request.getAttribute("times");
if(times!=null){
out.write("你还有"+(5-times)+"次机会!");
}
%>
<br/>
<formaction="/zxz/zxz"method="POST">
请输入你的数(20以下):<inputtype="text"name="Lucy"/><br/>
<%
if(times!=null){
%>
<inputtype="hidden"name="times"value="<%=times%>"/>
<%
}
%>
<inputtype="submit"value="竞猜"/>
</form>
</body>
</html>
Servlet代码:
packagehah;
importjava.io.IOException;
importjava.util.Random;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*Servletimplementationclasszxz
*/
@WebServlet("/zxz")
publicclasszxzextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
intanswer;
publicvoidnewGame(){
Randomrandom=newRandom();
answer=random.nextInt(20);
}
publiczxz(){
newGame();
}
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html;charset=utf-8");
StringlucyStr=request.getParameter("Lucy");
IntegerlucyNb=null;
System.out.println("答案:"+answer);
if(!lucyStr.equals("")){
lucyNb=Integer.parseInt(lucyStr);
}
Integertimes=1;
StringtimeStr=request.getParameter("times");
if(timeStr!=null&&!timeStr.equals("")){
times=Integer.parseInt(timeStr)+1;
}
if(times<5){
Stringresult="";
if(lucyNb>answer){
result="大了";
}elseif(lucyNb<answer){
result="小了";
}elseif(lucyNb==answer){
result="中了";
times=null;
}
request.setAttribute("times",times);
request.setAttribute("result",result);
}else{
newGame();
response.getWriter().write("游戏结束<ahref='"+request.getContextPath()+"/One.jsp'>再来一把</a>");
return;
}
request.getRequestDispatcher("/One.jsp").forward(request,response);
}
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doGet(request,response);
}
}
总结:
a.使用标签hidden可以隐式传递数据而不被用户发现可以用来记录次数如:
<inputtype="hidden"name="times"value="<%=times%>"/>
b.Servlet是用来跳转和执行逻辑代码的,JSP是用来展示数据的
c.request.getParameter(“Lucy”);如果参数不存在则返回null的字符串值
d跳转有两种方式一个是页面跳转地址要写项目名+jsp或者servlet
另一个是转发共享了request的域对象,地址可以直接写jsp或者servlet不要项目名而且项目名和jsp或者servlet前都要加“/”不然就是相对位置了
如:
<formaction="/zxz/zxz"method="POST">
//转发
request.getRequestDispatcher("/One.jsp").
forward(request,response);
|