Servlet入门-1
1.Servlet技术
什么是Servlet
- Servlet 是 JavaEE 规范之一。规范就是接口
- Servlet 是 JavaWeb 三大组件之一。三大组件分别是:Servlet程序,Filter过滤器,Listener监听器
- Servlet 是运行在服务器上的一个java小程序,它可以接受客户端发送过来的
请求,并响应给客户端
手动实现 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中的配置:
<?xml version="1.0" encoding="UTF-8"?> <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 标签给 Tomcat 配置 Servlet 程序 --> <servlet> <!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) --> <servlet-name>HelloServlet</servlet-name> <!--servlet-class 是 Servlet 程序的全类名--> <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class> </servlet> <!--servlet-mapping 标签给 servlet 程序配置访问地址--> <servlet-mapping> <!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个 Servlet 程序使用--> <servlet-name>HelloServlet</servlet-name> <!--url-pattern 标签配置访问地址 <br/> / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 <br/> /hello 表示地址为:http://ip:port/工程路径/hello <br/> --> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
常见的三种错误:
- url-pattern 中配置路径没有以“/“打头
- servlet-name 配置的值不存在
- servlet-class 标签的全类名配置错误
Servlet的生命周期
执行 Servlet 构造器方法
执行 init 初始化方法
第一,二步,是在第一次访问的时候创建 Servlet 程序会调用。
执行 Service 方法
第三步,每次访问都会调用执行 destroy 销毁方法
第四步,在web工程停止的时候调用
- GET和POST请求的分发处理
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 请求");
}
}
- 通过继承 HttpServlet 实现 Servlet程序
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
- 编写一个类去继承 HttpServlet 类
- 根据业务需要重写 doGet 或 doPost 方法
- 到web.xml中配置 Servlet 程序的访问地址
Servlet 类的代码
<servlet>
<servlet-name>类名</servlet-name>
<servlet-class>到这个类的路径地址(**.**.**.类名)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>类名</servlet-name>
<url-pattern>自定义标签名(/类名的简写)</url-pattern>
</servlet-mapping>
- Servlet类的继承体系
**ServletConfig 类 **
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
Servlet 程序和 SercletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创捷, ServletConfig 是每个 Servlet 程序创建时,>就创建一个对应的 ServletConfig 对象。ServletConfig 类的三大作用