暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

servlet详解

EffectiveCoding 2016-11-22
616

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异常处理、文件上传等内容会单独推送。

路一步一步走,东西也一点一点学。

文章转载自EffectiveCoding,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论