/** File name: randomString.java * Date: 04-Feb-2013 * Author: Upsorn Praphamontripong & Jeff Offutt * Update January 2016 Jeff Offutt * Add "https" and change port to "8443" for new server protocols * Changed functionality so if a user clicks "with replacement," * the new screen would also check "with replacement." * Added printScreen() and "withReplace" parameter. * Changed doPost() to call printScreen() instead of doGet() * Update February 2017 Salonika Bose * Added regexp check for script attacks * Update July 2019 Jeff Offutt * Split selectNext() from doPost() */ // Import Servlet Libraries import javax.servlet.*; import javax.servlet.http.*; // Import Java Libraries import java.io.*; import java.util.*; import java.lang.*; import java.io.*; import static java.lang.System.console; // SB import javax.servlet.http.*; import javax.servlet.*; import java.util.regex.Matcher; // SB import java.util.regex.Pattern; // SB //randomString class // Allow users to enter a list of strings to be randomly chosen // with two options: with replacement or without replacement (default) // Is multiple chosen allowed? -- provide a textbox to enter the number of strings needed // then, clicking a submit button results in multiple returns of string chosen. //CONSTRUCTOR: no constructor specified (default) // //**************** Methods description ******************************* //void doPost() --> Main method for gathering data and sending back //void doGet() --> Prints a blank screen //*********************************************************************** public class randomString extends HttpServlet { private ArrayList selectFrom; // list of strings entered, randomly select from this list private ArrayList selected = new ArrayList(); // list of strings already selected private String curRandomString = new String(); // Current random string // To be changed if redeployed private String actionLocation = "https://cs.gmu.edu:8443/offutt/servlet/randomString"; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); //Get the response's PrintWriter to return text to the client. PrintWriter out = res.getWriter(); out.println(""); out.println(""); PrintHead(out); PrintBody(out, false); // Not with replacement is default out.println(""); out.close(); } // End doGet() // similar to doGet except called from doPost // Allows "with replacement" to be set private void printScreen(HttpServletRequest req, HttpServletResponse res, Boolean withReplace) throws ServletException, IOException { res.setContentType("text/html"); //Get the response's PrintWriter to return text to the client. PrintWriter out = res.getWriter(); out.println(""); out.println(""); PrintHead(out); PrintBody(out, withReplace); out.println(""); out.close(); } // End doGet() private void PrintHead(PrintWriter out) { out.println(""); out.println(" "); out.println(" "); // SB out.println(" "); // SB out.println(" String Randomization"); out.println(""); } // PrintHead() private void PrintBody(PrintWriter out, Boolean withReplace) { out.println(""); PrintJS(out); out.println("
"); // Defined above (Jeff Offutt) out.println(" "); out.println(""); out.println(""); out.println(" "); out.println(""); out.println(""); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(""); out.println(""); out.println(" "); out.println(" "); out.println(" "); out.println(" "); // Print buttons on right of screen. out.println(" "); out.println(""); out.println(""); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(""); out.println(""); out.println(" "); out.println(""); out.println("
"); out.println("

String Randomization

"); out.println("
"); out.println("
Enter strings to be chosen
"); out.println(" Separate multiple strings by new lines."); out.println("
  String chosen: "); if (curRandomString.length() > 0) { out.print(" "); out.println(""); } else out.println(" "); out.println("    
"); out.println(" "); out.println("   "); out.println(" "); out.println("   "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println("
"); if (withReplace) // doGet is always without, doPost allows with replacement if WR was checked before out.println(" "); // SB else out.println(" "); // SB out.println("
"); if (withReplace) // doGet is always without, doPost allows with out.println(" "); // SB else out.println(" "); // SB out.println("
"); out.println(" "); out.println("
 
 
"); out.println(" "); out.println("
"); out.println("
   "); out.println(" "); out.println("    

"); out.println(" "); out.println("
"); out.println(""); } // PrintBody() private void PrintJS (PrintWriter out) { out.println(" "); out.println(" "); out.println(" "); } // PrintJS() /** ********************************************************** * doPost() * Chooses the next random string and updates list. ************************************************************ */ public void doPost (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String data = req.getParameter("strEnter"); // Left text area, strings to be chosen String option = req.getParameter("replacementOption"); // Button on the right String str = new String(); // added by Salonika Bose, February 2017 // Sanitize the list // (?i) make it case insensitive // case 1 :