Writing Servlets
Hello, [Your Name Here]!
The previous servlet only attempted to send data to your web browser in the form of HTML using the Serlvet API.
The next step in our evolution of servlets involves adding the capability of passing data from a browser to the Servletthe other direction.
This time, instead of just saying hello to the user's browser, the servlet will say Hello to the user loading the Servlet after they have entered their name.
Of course, this will entail some participation the user's part.
If there is no name field detected from an HTML form by this servlet, we must program the servlet to display an HTML form containing a name field where the user can enter their information.
If the servlet detects that there is a name value entered on the form, then the servlet will display the HTML for "Hello, [name]!" where [name] is the name of the user.
The following code represents the HelloUser.java source code file containing the modifications that we just described.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloUser extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
if (name == null || name.equals("")) {
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Please Enter Your Name</TITLE>");
out.println("</HEAD>");
out.println("<BODY BGCOLOR=\"WHITE\">");
out.println("<H1>Please Enter Your Name</H1>");
out.println("<FORM>");
out.println("Full Name:");
out.println("<INPUT TYPE=\"TEXT\" NAME=\"name\"><P>");
out.println("<INPUT TYPE =\"SUBMIT\"><P>");
out.println("</FORM>");
out.println("</BODY>");
out.println("</HTML>");
} else {
name = "Hello, " + name + "!";
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>" + name + "</TITLE>");
out.println("</HEAD>");
out.println("<BODY BGCOLOR=\"WHITE\">");
out.println("<H1>" + name + "</H1>");
out.println("</BODY>");
out.println("</HTML>");
}
}
}
The main difference here is that instead of getting a title from the HTTP header, we are now attempting to call the getParameter method to obtain the value of a name that was entered on an HTML form.
Like the getHeader method, getParameter is also called on a request object.
There is one important difference between these methods though.
getHeader is used to obtain information that was passed as part of the header in the HTTP protocol.
This header is usually not intended as a general information passing mechanism.
getParameter is used to obtain information that was entered on an HTML form and passed by the browser to the servlet.
The information obtained from getParameter is usually intended to be application specific and passed by a user to the servlet for processing.
In other words, getParameter is used to pass HTML form data to a servlet application.
Therefore, you will usually see getParameter used more often than getHeader in most servlet applications.
The first time the servlet is executed, there is no value for name, so the logic in the above code prints an HTML form if it detects that the name string contains no value.
If there is a name entered on an HTML form, then the original HelloBrowser HTML is displayed with the user's name replacing the browser type for this servlet.
The following is the raw HTML used to create the HTML form for name data entry.
<HTML>
<HEAD>
<TITLE>Please Enter Your Name</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE">
<H1>Please Enter Your Name</H1>
<FORM>
Full Name:
<INPUT TYPE="TEXT" NAME="name"><P>
<INPUT TYPE ="SUBMIT"><P>
</FORM>
</BODY>
</HTML>
The HTML used here creates a simple form.
In this case, the |