Servlet是服务 HTTP 请求并实现的javax.servlet.Servlet接口的 Java 类。编写一个处理HTTP请求并进行响应的Servlet需要创建一个javax.servlet.http.HttpServlet的子类,需要覆盖HttpServlet类的doGet()和doPost()方法以实现对HTTP请求的动态响应。
doGet()和doPost()方法都包含两个参数:javax.servlet.HttpServletRequest和javax.servlet.HttpServletResponse类型。HttpServletRequest接口提供访问客户端请求的信息的方法,如表单数据、HTTP请求头信息等;HttpServletResponse接口提供了用于指定HTTP应答状态,应答头的方法以及用于向客户端发送数据的PrintWriter对象。该对象可以用于向客户端返回信息。
【例3.1】创建一个Servlet,在客户端显示“Hello World”。
(1)运行Eclipse,选择菜单“File”→“new”→“Dynamic Web Project”或者菜单“File”→“new”→“other”→“Web”→“Dynamic Web Project”,在对话框的Project name栏中输入工程名称first_servlet,如图3.3所示,单击下一步,在图3.4所示的对话框中使Generate web.xml deployment descriptor复选框为选中状态,然后单击“Finish”按钮,最后生成的工程目录如图3.5所示。
图3.3 新建Web工程1
图3.4 新建Web工程2
(2)在图3.5所示的src目录右键选择菜单“new”→“servlet”,在图3.6所示对话框的java package栏中输入包名com.servlet,在class name栏中输入FirstServlet,单击“Next”,出现图3.7所示的界面,在图3.7所示的界面中选择init、destroy、doGet、doPost方法,单击“Finisth”按钮。
图3.5 工程目录
图3.6 新建Servlet
图3.7 选择要覆盖的方法
(3)部署并运行Web项目:选择菜单“Window”→“Show View”→“Server”→“Servers”(见图3.8),单击“Open”按钮。在图3.9中单击带下划线的蓝色字体,弹出创建服务对话框,如图3.10所示。在图3.10中选择Tomcat的版本(本书使用的Tomcat是7.0版本),单击“Next”按钮,在图3.11所示对话框选择左边列表框的first_servlet,单击“Add All”,然后单击“Finish”结果,如图3.12所示。在图3.12中单击,启动项目。
图3.8 打开服务视图(www.xing528.com)
图3.9 服务视图
图3.10 创建服务
图3.11 部署项目
图3.12 已部署项目
(4)在浏览器的地址栏输入http://localhost:8080/first_servlet/firstServlet,如图3.13所示。
图3.13 请求Servlet
在本例的FirstServlet类中,覆盖了父类的init()、doGet()、doPost()和destroy()方法,定义了一个对象的成员属性message,在init()方法中初始化message属性的值为Hello World。doGet()和doPost()方法用分别用来响应客户端的HTTP的Get和Post请求。在本例中Get和Post相应的行为相同,所以在doPost()方法中调用doGet()方法。
doGet()和doPost()方法都有两个参数:HttpServletRequest类型的对象request和HttpServletResponse类型的对象response。返回网页的内容是通过response对象取得PrintWriter类型的对象out,通过out对象的println()方法输出HTML标记和message属性。
访问Servlet是通过URL访问,在本例中访问Servlet的URL是http://localhost:8080/first_servlet/firstServlet。
localhost:服务器名称,本例的localhost是本机。
8080:访问服务器的端口号,在Tomcat的server.xml文件中可以修改。
/first_servet:是Web项目的Context root URL,在tomcat的server.xml文件配置。
/firstServlet:是firstServlet的MappingURL。通过@WebServlet("/FirstServlet")设置。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。