5.1 Servlet要求
如果要开发一个可以处理HTTP请求的Servlet程序,首先是要继承HttpServlet类,而且在自定义的Servlet类中至少还要覆写HttpServlet类中提供的doGet()方法
• protected void doGet(HttpServletRequest req,HttpServletResponseresp) throws ServletException,IOException
5.2 创建Servlet
1.XXX extends HttpServlet 2.Override doGet doPost 3.copy to WEB-INF/classes 4.web.xml 1.<servlet><servlet-name><servlet-class></servlet> 2.<servlet-mapping><url-pattern> / 5.restart server
5.3 第一个Servlet
Servlet示例 HelloWorldServlet.java
• 需求:
编写一个生成纯文本的简单的Servlet类。• 目的:
了解Servlet的基本概念
• 在web.xml的配置
• 引入用到的包
• import javax.servlet.*; • import javax.servlet.http.*; • import java.io.*;
• 定义类并继承HttpServlet
• public class FirstServlet extends HttpServlet
• 编写成员方法
• 主要是重写方法doGet或doPost,成员方法service,根据浏览器请求的HTTP方法是get还是post,选择覆盖相应的方法doGet或doPost,通过接口传递的request和response对象接受客户请求,并作出响应。
• 必要时编写init、 destroy方法。
package com.org; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet extends HttpServlet{ //继承HttpServlet public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ //重写doGet()方法 PrintWriter out=resp.getWriter(); //获得输出流对象 out.println("<html><head><title>HelloWorldServlet</title></head>"); //向客户端实现输出 out.println("<body><h1>Hello World!!!</h1>"); out.println("</body></html"); out.close(); //关闭流 } }
如何得到web.xml文件?
在Tomcat安装目录下的webapps\Root\WEB-INF文件夹中可以找到web.xml文件,直接复制此文件再修改,不需要重新编写。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.org.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> </web-app>
Servlet 3.0中Servlet配置,不再需要在web.xml中配置访问的URL,直接在Servlet类中添加注解配置
package com.org; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/HelloServlet") public class HelloWorldServlet extends HttpServlet{ //继承HttpServlet public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ //重写doGet()方法 PrintWriter out=resp.getWriter(); //获得输出流对象 out.println("<html><head><title>HelloWorldServlet</title></head>"); //向客户端实现输出 out.println("<body><h1>Hello World!!!</h1>"); out.println("</body></html"); out.close(); //关闭流 } }
5.4 Servlet编译
• (1)Servlet是一个java类,可以使用任何java编译器进行编译(如使用Javac编译生成class文件)。
• (2)在eclipse中,保存文件时会自动编译。
5.5 Servlet配置
配置Servlet,以便能够被调用• 在应用的配置文件web.xml(位于WEB-INF下)中进行配置• 配置包括两部分,第一部分是Servlet的声明,第二部分是Servlet访问方式的设置。
• 首先是Servlet的声明
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.org.HelloWorldServlet</servlet-class> </servlet>
• 配置访问该Servlet的方式
<servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>