前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈Servlet(一)

浅谈Servlet(一)

原创
作者头像
Charles-LZ
修改2019-04-24 11:02:14
3050
修改2019-04-24 11:02:14
举报
文章被收录于专栏:Charles的java专栏

在聊Servlet之前,我们先谈谈众所周知的HTTP(超文本传输)协议,简单来讲,它是用来规范服务器和客户端(浏览器)之间交互的一种协议。无论是我们向服务器请求数据或者服务器给我们响应,都是按照HTTP协议里规定的来进行。例如请求格式、请求方式、响应格式等。

请求格式结构
请求格式结构

对请求格式感兴趣的同学可以自行搜索资料,这里不展开讲解。请求方式主要有GET和POST两种。GET请求方式不安全,不能携带大量数据。POST方式安全,并且可以携带大量数据,造成差异的原因在于这两种方式各自的格式结构不同。HTTP协议还规定当用户发送请求时服务器必须要响应。所以我们无论在浏览网站或者写代码时遇到的404 Not Found/500 Inteanal Server Error/503 Server Anavailable问题就好理解了,是服务器出了问题。

----------------------------------------------------------------------分割线----------------------------------------------------------------------------

我们现在学习的Tomcat服务器,可以自动的根据接受到的请求并执行对应的逻辑代码(这段代码由程序员自己编写然后放进服务器运行,也是Servlet的一部分)进行处理,那么服务器怎么知道该调用哪段代码?所以就需要通过Servlet来进行调用。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。因为Servlet的实现遵循了服务器能够识别的规则,也就是服务器能自动的根据请求调用对应的Servlet进行请求处理。

运行流程如下:浏览器发送请求到服务器,服务器根据请求URL地址中的URI信息在webapps目录下找到对应的项目文件夹,然后在web.xml中检索对应的servlet(servlet3.0后无需配置),找到后并执行调用。

我们再来讨论一下request和response这两个对象,他们实际上由tomcat服务器创建,并作为实参传递给请求处理的servlet的service方法。

request对象中封存了当前请求的所有信息。利用它可以获取请求头数据,例如getMethod()getRequestURL()、getRequestURI()、getScheme()等方法;也可以获取请求行数据,例如getHeader(),或者获取所有请求行的键的枚举

代码语言:java
复制
Enumeration e = request.getHeaderNames();
while(e.hasmoreElements()){
    String name = (String) e.nextElement();
    String value = request.getHeader(name);
    syso(name+":"+value);
}

最重要的还是获取用户数据,即通过getParameter(String s)来返回用户指定的数据。对于同键不同值的情况,例如爱好,此时适用getParameterValues(),返回的值存放到数组中。

----------------------------------------------------------------------分割线----------------------------------------------------------------------------

在使用request对象获取到请求数据并处理后,处理的结果如何显示到浏览器中?这是我们的response应该登场了。同样的,它也可以用来设置响应头setHeader()或者设置我们喜闻乐见的相应状态码:

代码语言:javascript
复制
response.sendError(404,"sorry");

当然还有最重要的设置响应实体response.getWriter()、setContentType()等等。

-----------------------------------------------------------------------------------------------------------------------------------------------------------下章我们讨论下关于转发和重定向的那些事,创作不易,欢迎大家多提意见~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档