文章目录
- 1、初识Servlet
- 2、Servlet的HelloWorld
- 3、Servlet的生命周期
- 4、Servlet-请求的分发处理
- 5、通过集成HttpServlet类来实现Servlet程序
1、初识Servlet
Servlet是JavaEE规范之一。规范就是接口。
Servlet是JavaWeb三大组件之一,三大组件分别是Servlet程序、Filter过滤器、Listener监听器。
Servlet是运行在服务器上的一个Java小程序,它可以接受客户端发送过来的请求,并响应数据给客户端。
2、Servlet的HelloWorld
🍁流程:
- 编写一个类实现Servlet接口
- 实现service方法,处理请求,并响应数据
- 到web.xml中去配置servlet程序的访问地址
☀实现代码:
重写service方法后,编辑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.code.servlet.HelloServlet</servlet-class>
</servlet>
<!-- servlet-mapping标签给Servlet程序配置访问地址 -->
<servlet-mapping>
<!-- servlet-name标签的作用是告诉服务器,我当前配置的地址是给哪个Servlet程序使用 -->
<servlet-name>HelloServlet</servlet-name>
<!-- url-pattern标签配置访问地址 -->
<!-- /斜杠在服务器解析的时候,表示地址为 http://ip:port/工程路径 -->
<!-- /hello 即http://ip:port/工程路径/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
启动Tomcat实例后,在url后加/hello即可在控制台看到Sevlet程序的输出。
☀url地址如何定位到的Servlet程序并访问
☀Tip:
无法实现Servlet接口或者import javax.servlet.*报错时,在lib目录中导入jsp和servlet的jar包
3、Servlet的生命周期
- 执行实现Servlet接口类的构造方法
- 执行init初始化方法
- 执行service方法
- 执行destory方法
其中,前两步在第一次访问Servler程序的时候调用。第三步是每次访问都会调用。第四步是在web工程停止的时候会去调用
4、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被访问了!");
//类型转换,因为getMethod是子类特有的方法
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
if("GET".equals(method)){
//System.out.println("这里写收到GET请求的code");
doGet();
}else if("POST".equals(method)){
System.out.println("这里写收到POST请求的code");
}
}
/**
* 把收到GET请求要做的事定义成一个方法
* 从而避免service方法中代码臃肿
*/
public void doGet(){
}
写个HTML文档表单提交到servlet
<body>
<form action="http://localhost:8080/web/hello" method="get">
<input type="submit" value="提交"/>
</form>
</body>
点击提交,在控制台就可看到不同请求被分发给不同的IF分支了。
5、通过集成HttpServlet类来实现Servlet程序
实际的开发中,很少通过实现Servlet接口去实现Servlet程序,而是直接继承Servlert接口的子类,如HttpServlet:
- 编写一个类去继承HttpServlet类
- 根据业务需要重写doGet和doPost方法
- 到web.xml中的配置Servlet程序的访问地址
public class ServletHello extends HttpServlet{
...
Alt+Insert
}