0

I am writing a JSP page which user can choose an option by radio button after pressing submit, the value will pass to servlet which will check the value and changes to certain page, here is the code: JSP

<form method="GET" action='Controller' name=main>
<input type="radio" name=dorr value=dog>dog<br>
<input type="radio" name=dorr value=rabbit>rabbit<br>
<input type="submit"name=sub value=submit>
</form>

Servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forward="";
String temp = request.getParameter("dorr");
if (temp=="dog"){
forward = DOG_JSP;
} else if (temp=="rabbit"){
forward = RABBIT_JSP;
} else forward = MAIN_JSP;
RequestDispatcher view = request.getRequestDispatcher(forward);
view.forward(request, response);  }

Strangely, the page keeps changing to the same page (properly means temp don't have correct value),but I checked parameter that it works normally (it displays dog or rabbit) Why the page is not changed?

Choi Shun Chi
  • 93
  • 3
  • 7

1 Answers1

1

Its beacause you have used == to compare string values.

So,always use equals() to compare string values rather than ==.

Read More: Difference between Equals/equals and == operator?

Try this.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String forward="";
     String temp = request.getParameter("dorr");
     if (temp.equals("dog")){
        forward = DOG_JSP;
     } else if (temp.equals("rabbit")){
        forward = RABBIT_JSP;
     } else {
       forward = MAIN_JSP;
     }
    RequestDispatcher view = request.getRequestDispatcher(forward);
    view.forward(request, response);  
}
Community
  • 1
  • 1
Hardik Mishra
  • 14,779
  • 9
  • 61
  • 96