《Servlet基础》
目录
一、Servlet相关概念
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
二、Http协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议,其基于TCP/IP通信协议来传递数据(HTML文件,图片, 结果数据等)。
HTTP 状态码分类:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
三、Tomcat库导入
在pom.xml中导入tomcat相关依赖(注意:此处依赖包版本尽量与本地tomcat版本一致)。
<!-- tomcat相关jar包 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>9.0.14</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>9.0.14</version>
</dependency>
四、Servlet开发
核心知识点
- HttpServlet类:Servlet父类;
- @WebServlet注解:指定访问路径;
- service方法:接受请求后的处理方法;
- request:http请求对象;
- response:http响应对象。
案例一
- 创建com.hpr.servlet包;
- 创建HelloServlet类;
- 继承HttpServlet类,并重写service方法;
- 当请求到该servlet后,响应一段文字。
package com.hpr.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//指定请求路径
@WebServlet("/hello.do")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//乱码问题处理
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
//参数获取
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//响应文字
response.getWriter().println("<h1>servlet响应成功!</h1>");
response.getWriter().println("<h3>" + userName + "——" + password + "</h3>");
}
}
- index.jsp添加超链接。
<h2>
<%-- get请求访问hello.do路径,传递userName、password两个参数 --%>
<a href="/hello.do?userName=Alice&password=123456">测试servlet</a>
</h2>
- 启动Tomcat服务器,进入首页后点击超链接查看结果。
执行结果
五、Servlet生命周期
核心方法
- init():Servlet第一次被访问时将被服务器加载并创建实例,同时调用该方法进行初始化;
- service():每次请求[doGet/doPost]的主要处理方法;
- destory():服务器停止服务,卸载每一个Servlet前会先调用该方法。
案例二
- HelloServlet
@WebServlet("/hello.do")
public class HelloServlet extends HttpServlet {
@Override
public void init() throws ServletException {
super.init();
System.out.println("servlet初始化完成!");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
}
@Override
public void destroy() {
super.destroy();
System.out.println("servlet卸载完成!");
}
}
启动服务器,点击超链接访问Servlet,关掉服务器后查看运行日志。
执行结果
总结
重点
- Servlet书写方式;
- Servlet生命周期;
- http协议特点。
难点
- Servlet生命周期。