servlet和jsp互動的第一個典型例子
阿新 • • 發佈:2019-02-06
05.guess.jsp
GuessServlet.java<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>百萬富翁數字競猜遊戲</title> </head> <body> <% //從request域中取出資訊 String msg = (String)request.getAttribute("msg"); if(msg!=null){ out.write("<font color='red'>"+msg+"</font>"); } %> <% //獲取競猜次數 Integer times = (Integer)request.getAttribute("times"); if(times!=null){ out.write(",你還有"+(5-times)+"次機會!"); } %> <form action="/day13/GuessServlet" method="post"> 請輸入30以下的整數:<input type="text" name="lucyNo"/><br/> <% if(times!=null){ %> <input type="hidden" name="times" value="<%=times %>"/> <% } %> <input type="submit" value="開始競猜"/> </form> </body> </html>
public class GuessServlet extends HttpServlet { //產生一個幸運數字 int answer; /** * 新遊戲方法。產生一個新的幸運數字 */ public void newGame(){ Random random = new Random(); answer = random.nextInt(30); } public GuessServlet(){ //第一次訪問 newGame(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); //1.接收輸入的數字 String lucyNoStr = request.getParameter("lucyNo"); System.out.println("答案:"+answer); Integer lucyNo = null; //2.判斷幸運數字和使用者的數字 //2.1 把使用者輸入的數字轉成整數 if(lucyNoStr!=null || !lucyNoStr.equals("")){ lucyNo = Integer.parseInt(lucyNoStr); } //標記記錄當前競猜的次數 Integer times = 1;//初始值 //接收客戶當前競猜次數 String timesStr = request.getParameter("times"); if(timesStr!=null && !timesStr.equals("")){ times = Integer.parseInt(timesStr)+1; } if(times<5){ String msg = ""; //比較 if(lucyNo>answer){ //大了 msg = "可惜,大了點"; }else if(lucyNo<answer){ //小了 msg = "可惜,小了點"; }else if(lucyNo==answer){ //等於,中獎 msg = "恭喜你,中得1000000元現金大獎,請帶身份證到xxx地方領獎!"; times = null; } //把當前競猜的次數放入域物件 request.setAttribute("times", times); //把資訊放入域物件中 request.setAttribute("msg", msg); }else{ //產生新的幸運數字 newGame(); //遊戲結束 response.getWriter().write("遊戲結束。<a href='"+request.getContextPath()+"/05.guess.jsp'>再來一盤</a>"); return; } //轉發 request.getRequestDispatcher("/05.guess.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }