servlet几乎可以说是 java web应用的核心。弄懂servlet一下子变的重要起来。
下面主要从简介、生命周期、http状态码、网页重定向 进行简述。
简介:
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
简单来说,它可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
可能看文字比较抽象,那咱就看图吧~

生命周期:
Servlet 生命周期简单的说就是从创建直到毁灭的整个过程。
Servlet 通过调用 init () 方法进行初始化。
Servlet 调用 service() 方法来处理请求。
Servlet 通过调用 destroy() 方法终止。
init() 方法:
第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。
service() 方法:
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST等),并在适当的时候调用 doGet、doPost等方法。
doGet() 方法:
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 method 的 HTML 表单
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//Todo
// Servlet 代码
}
doPost() 方法:
POST 请求来自于一个特别指定了 method 为 POST 的 HTML 表单
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Todo
// Servlet 代码
}
http状态码:
状态行包括 HTTP 版本、一个状态码和一个对应于状态码的短消息。
下面是开发中经常用的一些状态码。读懂这些,你定为问题会快很多。
在这里必须要感谢一下李志阳学长,当时是他教会了我这些。
| 100 | 只有请求的一部分已经被服务器接收,但只要它没有被拒绝,客户端应继续该请求。 |
| 101 | 服务器切换协议。 |
| 200 | 请求成功。 |
| 201 | 该请求是完整的,并创建一个新的资源。 |
| 202 | 该请求被接受处理,但是该处理是不完整的。 |
| 300 | 链接列表。用户可以选择一个链接,进入到该位置。最多五个地址。 |
| 301 | 所请求的页面已经转移到一个新的 URL。 |
| 302 | 所请求的页面已经临时转移到一个新的 URL。 |
| 303 | 所请求的页面可以在另一个不同的 URL 下被找到。 |
| 306 | 在以前的版本中使用该代码。现在已不再使用它,但代码仍被保留。 |
| 307 | 所请求的页面已经临时转移到一个新的 URL。 |
| 400 | 服务器不理解请求。 |
| 401 | 所请求的页面需要用户名和密码。 |
| 402 | 您还不能使用该代码。 |
| 403 | 禁止访问所请求的页面。 |
| 404 | 服务器无法找到所请求的页面。. |
| 405 | 在请求中指定的方法是不允许的。 |
| 406 | 服务器只生成一个不被客户端接受的响应。 |
| 407 | 在请求送达之前,您必须使用代理服务器的验证。 |
| 408 | 请求需要的时间比服务器能够等待的时间长,超时。 |
| 409 | 请求因为冲突无法完成。 |
| 410 | 所请求的页面不再可用。 |
| 413 | 服务器不接受该请求,因为请求实体过大。 |
| 414 | 服务器不接受该请求,因为 URL 太长。当您转换一个 "post" 请求为一个带有长的查询信息的 "get" 请求时发生。 |
| 415 | 服务器不接受该请求,因为媒体类型不被支持。 |
| 500 | 未完成的请求。服务器遇到了一个意外的情况。 |
| 501 | 未完成的请求。服务器不支持所需的功能。 |
| 502 | 未完成的请求。服务器从上游服务器收到无效响应。 |
| 503 | 未完成的请求。服务器暂时超载或死机。 |
| 504 | 网关超时。 |
| 505 | 服务器不支持"HTTP协议"版本。 |
HTTP 状态码实例:
public class showError extends HttpServlet{
// 处理 GET 方法请求的方法
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException{
// 设置错误代码和原因
response.sendError(407, "Need authentication!!!" );
}
// 处理 POST 方法请求的方法
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException{
doGet(request, response);
}
}
网页重定向:
重定向请求到另一个网页的最简单的方式是使用 response 对象的 sendRedirect() 方法。
此处直接看代码:
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 要重定向的新位置
String site = new String("目标请求");
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);
}
就这么多~谢谢大家~
http请求&响应、servlet异常处理、文件上传等内容会单独推送。
路一步一步走,东西也一点一点学。





