yimi7286 2023-05-23 15:20 采纳率: 71.4%
浏览 203
已结题

jsp双色球福利彩票问题

题目:
双色球福利彩票
(1) 编写buyLottery.jsp,用户在该页面输入双色球彩票的6个红球和一个蓝球的号码,代表用户购买的彩票,然后单击form表单的提交键,请求名字是lottery的servlet。
(2) 编写创建servlet的Servlet类,该类创建的servlet可以判断用户的中奖情况。
(3) 部署servlet。
(4) 运行buyLottery.jsp页面。

遇到的问题:运行jsp文件之后点击提交按钮,显示原始服务器不打算公开未找到目标资源的当前表示或其存在。

img

文件储存位置(应该是这里有错,但是不知道哪个文件放错了位置)

img

代码贴在这里,但这份是源代码,代码应该没有错误
buyLottery.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>
   #red{
      font-family:宋体;font-size:26;color:red 
   }
</style>
<style>
   #blue{
      font-family:宋体;font-size:26;color:blue 
   }
</style>
<HTML><body bgcolor=#ffccff>
<form action="lottery"  method=post>
<br>输入6个红球号码(1-33)逗号或非数字字符分隔:<br>
<textArea name="digitRedball" id =red rows=1 cols=30 ></textArea>
<br>输入1个蓝球号码(1-16):<br>
<input type = text name ="digitBlueball" id = blue maxlength=2 size =2/>
<input type=submit id = blue value="提交"/>
</form>
</p></body></HTML>

Lottery_Servlet.java

package moon.sun;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.*;
public class Lottery_Servlet extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void  service(HttpServletRequest request,HttpServletResponse response)
                       throws IOException{
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out=response.getWriter();
      out.println("<html><body bgcolor=cyan>");
      String digitRedball = request.getParameter("digitRedball");
      String digitBlueball = request.getParameter("digitBlueball");
      if(digitRedball.length()==0 ||digitBlueball.length()==0) {
          response.sendRedirect("/buyLottery.jsp");//重定向到输入数据页面。
          return;
      }
      //用户买的全部红,蓝球号码:
      HashSet<Integer> userRedball =  getUserDigit(digitRedball);
      HashSet<Integer> userBlueball = getUserDigit(digitBlueball);
      if(userRedball.size()!=6||userBlueball.size()!=1){
          response.sendRedirect("/buyLottery.jsp");//必须是红球6个,篮球1个。
          return;
      }
      HashSet<Integer> drawLotteryRedball = drawLottery(6,33);//摇奖出的红球。
      HashSet <Integer> drawLotteryBlueball = drawLottery(1,16);//摇奖出的篮球。
      out.print("<h1>摇奖出的红球<br>"+drawLotteryRedball.toString()+"<br>");
      out.print("摇奖出的蓝球"+drawLotteryBlueball.toString()+"</h1>");
      drawLotteryRedball.removeAll(userRedball);//摇奖出的红球去除用户买的红球号码。
      drawLotteryBlueball.removeAll(userBlueball);//摇奖出的篮球球去除用户买的蓝球号码。
      int leftRedball = drawLotteryRedball.size(); //剩余的红球数量。
      int leftBlueball = drawLotteryBlueball.size();//剩余的篮球数量。
      if(leftRedball == 0&&leftBlueball == 0){    //为了减少代码,减少了中奖分类。
          out.println("<h1>头奖</h1>");
      }
      else if(leftRedball == 0&&leftBlueball == 1){
          out.println("<h1>二等奖</h1>");
      }
      else if(leftRedball == 1&&leftBlueball == 0){
          out.println("<h1>三等奖</h1>");
      }
      else{
          out.println("<h1>没中奖</h1>");
      }
      out.print("<h1>用户买的红球<br>"+userRedball.toString()+"<br>");
      out.print("用户买的蓝球"+userBlueball.toString()+"</h1>");
   } 
   public HashSet<Integer> getUserDigit(String input){
      HashSet<Integer> set = new HashSet<Integer>();
      Pattern pattern;          //模式对象。
      Matcher matcher;          //匹配对象。
      String regex="[0-9][0-9]*" ;//匹配正整数的正则表达式。
      pattern = Pattern.compile(regex); //初试化模式对象。
      matcher = pattern.matcher(input); //初始化匹配对象,用于检索input。
      double sum = 0;
      while(matcher.find()) {
         String str = matcher.group(); 
         set.add(Integer.parseInt(str));//用户买的彩票号码放入集合。
      } 
      return set;
   }
    public HashSet<Integer> drawLottery(int count,int allNumber){ 
        LinkedList<Integer> saveNumber = new LinkedList<Integer>();//存放数。
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i=1;i<=allNumber;i++) { //1到allNumber(球号)
            saveNumber.add(i);          //顺序存入链表saveNumber。
        } 
        Random random = new Random(); 
        while( count > 0) {
           int index = random.nextInt(saveNumber.size());  
           int number = saveNumber.remove(index); //抽取一个球不放回
           count--;
           set.add(number);////开奖号码放入集合。
        }
        return  set;  
    }
}

web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app>
   <servlet>
       <servlet-name>lottery</servlet-name>
       <servlet-class>moon.sun.Lottery_Servlet</servlet-class>
   </servlet>
   <servlet-mapping>
        <servlet-name>lottery</servlet-name>
        <url-pattern>/lottery</url-pattern>
   </servlet-mapping>
</web-app>
  • 写回答

1条回答 默认 最新

  • 瞬间的未来式 2023-05-23 16:22
    关注

    很多情况都是路径不正确,你看下404那个url是什么,感觉少了一层

    评论

报告相同问题?

问题事件

  • 提问应符合社区要求 11月10日
  • 已结题 (查看结题原因) 5月31日
  • 修改了问题 5月23日
  • 创建了问题 5月23日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音