1、Servlet
是 JavaEE
规范之一。规范就是接口
2、Servlet
就 JavaWeb
三大组件之一。三大组件分别是:Servlet
程序、Filter 过滤器、Listener 监听器。
3、Servlet
是运行在服务器上的一个 java
小程序, 它可以接收客户端发送过来的请求,并响应数据给客户端。
1、编写一个类去实现 Servlet 接口。
2、实现 service 方法,处理请求,并响应数据。
3、到 web.xml 中去配置 servlet 程序的访问地址。
Servlet 程序的示例代码:
public class HelloServlet implements Servlet {
/**
* service 方法是专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws
ServletException, IOException {
System.out.println("Hello Servlet 被访问了");
}
}
web.xml 中的配置:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>HelloServletservlet-name>
<servlet-class>com.atguigu.servlet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>HelloServletservlet-name>
<url-pattern>/hellourl-pattern>
servlet-mapping>
web-app>
常见的错误 1:url-pattern 中配置的路径没有以斜杠打头。
常见错误 2:servlet-name 配置的值不存在:
常见错误 3:servlet-class 标签的全类名配置错误:
第一步:执行 Servlet 构造器方法。
第二步:执行 init 初始化方法。
第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。
第三步:执行 service 方法。第三步,每次访问都会调用。
第四步:执行 destroy 销毁方法。第四步,在 web 工程停止的时候调用。
public class HelloServlet implements Servlet {
/**
* service 方法是专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws
ServletException, IOException {
System.out.println("3 service === Hello Servlet 被访问了");
// 类型转换(因为它有 getMethod() 方法)
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
// 获取请求的方式
String method = httpServletRequest.getMethod();
if ("GET".equals(method)) {
doGet();
} else if ("POST".equals(method)) {
doPost();
}
}
/**
* 做 get 请求的操作
*/
public void doGet(){
System.out.println("get 请求");
System.out.println("get 请求");
}
/**
* 做 post 请求的操作
*/
public void doPost(){
System.out.println("post 请求");
System.out.println("post 请求");
}
}