完整的源代码
/** * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved. * * You may not modify, use, reproduce, or distribute this software except in * compliance with the terms of the License at: * https://github.com/javaee/tutorial-examples/LICENSE.txt */ package javaeetutorial.hello2; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * This is a simple example of an HTTP Servlet. It responds to the GET method of * the HTTP protocol. */ @WebServlet("/greeting") public class GreetingServlet extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setBufferSize(8192); try (PrintWriter out = response.getWriter()) { out.println("<html lang="en">" + "<head><title>Servlet Hello</title></head>"); // then write the data of the response out.println("<body bgcolor="#ffffff">" + "<img src="resources/images/duke.waving.gif" " + "alt="Duke waving his hand">" + "<form method="get">" + "<h2>Hello, my name is Duke. What's yours?</h2>" + "<input title="My name is: " type="text" " + "name="username" size="25"/>" + "<p></p>" + "<input type="submit" value="Submit"/>" + "<input type="reset" value="Reset"/>" + "</form>"); String username = request.getParameter("username"); if (username != null && username.length() > 0) { RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/response"); if (dispatcher != null) { dispatcher.include(request, response); } } out.println("</body></html>"); } } @Override public String getServletInfo() { return "The Hello servlet says hello."; } }
分析
String userName=request.getParameter(“userName”):定义了一个叫userName的字符串变量,并给他赋值。request.getParameter(“userName”);这句的意思是从request中拿出名字叫userName的值,赋给了你刚才定义的变量。request是负责页面之间传递参数和数据的类,是java封装好的,我们只要把它当成一个工具就可以了。然后判断username是否为空或者长度为0,如果为空或者长度为0就实现Servlet之间的请求传递(页面跳转),最后输出。