使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api

Servlet接口

package javax.servlet;import java.io.IOException;public interface Servlet {//在servlet被载入后和实施服务前由servlet引擎调用。如果init()//产生溢出UnavailableException,则servle退出服务。public void init(ServletConfig config) throws ServletException;//返回传递到servlet的init()方法的ServletConfig对象  public ServletConfig getServletConfig();// 处理request对象中描述的请求,使用response对象返回请求结果 public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;//返回描述servlet的一个字符串 public String getServletInfo();//当servlet将要卸载时由servlet引擎调用      public void destroy();
}

下边介绍一下一些与servlet相关的其他对象:

请求对象:javax.servlet.ServletRequeset,封装了客户端的请求信息,与协议无关,可用于获取请求中的属性、参数,获取

请求的流对象、获取编码格式、获取客户端地址等功能。可通过getParameter方法获取请求中封装的参数。

响应对象:javax.servlet.ServletResponse,用于将处理的结果返回给发出请求的客户端,可用于作为输出流及其内容类型和长

度的包容器。可以以流的方式将返回信息写出到客户端。

配置参数对象:javax.servlet.ServletConfig,通过调用getServletConfig()方法来获取ServletConfig对象,通过此对象可以获取

到servlet的一些初始化配置参数。

web应用对象:javax.servlet.ServletContext,通过ServletConfig对象来获取ServletContext,它代表了当前的web应用,通过

它可以获取到当前web应用的各方面信息。

下边介绍针对Http协议开发的一些事项

在代码层面说,Servlet并没有遵从任何网络传输协议,而我们平时开发时请求信息需遵循Http协议,所以Servlet针对Http协议扩

展了一些专门针对Http协议开发的API,它们在java.servlet.http包下,下边详细介绍。

针对Http协议开发时,直接继承HttpServlet类即可,需根据自己的业务来对doPost、doGet方法进行重写,使用的都是http包下类

中的方法,开发比较容易,这是需要用到的请求对象则是HttpServletRequest,响应对象是HttpServletResponse,等等。这里需

要介绍一下遵循Http协议开发时一些特殊的地方:HttpSession、get和post请求、转发和重定向。

会话对象:javax.servlet.http.HttpSession,因为http协议是无状态的协议,为了保证数据的一致性,HttpSession接口被

Servlet引擎用来实现HTTP客户端和HTTP会话两者的关联,用来在无状态的HTTP协议下越过多个请求页面来维护状态和识别用

户。此会话对象通过HttpServletRequest对象获取。

GET和POST请求:

GET方式请求:超链接中的请求、直接在地址栏中使用?的方式连接参数的请求、表单设置成get方式时的请求。

POST方式请求:ajax中设置成post方式的请求、表单中设置成post方式的请求。

两者的不同点如下:

1、提交形式不同:GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),POST提交:把提交的数据放

置在是HTTP包的包体中。因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。也因此GET方式的

请求不安全。

2、传输数据的大小不同: HTTP协议并没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。对于get

请求特定浏览器和服务器对URL长度有限制;而对POST请求理论上数据不受限。但实际各个WEB服务器会规定对post提交数据

大小进行限制get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。

3、 服务器端获取数据的方式不同:对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用

Request.Form获取提交的数据。

转发和重定向:请求的两种处理方式。

转发的实现:先通过request的getRequestDispatcher得到RequestDispatcher对象,然后用RequestDispatcher的forward方法进

行转发

重定向的实现:直接调用 response的 sendRedirect 方法完成重定向

两种方式的区别:

1、本质区别:请求的转发只发送了一次请求,而重定向发送了两次请求

2、地址栏的地址的变化:转发仍然是第一次发送请求的地址,而重定向是第二次发送请求的地址

3、request对象的变化:转发中,最终servlet中的requeset对象和第一次请求的那个request是同一个对象;重定向中,最终的

servlet中的request对象和第一次请求的那个request对象不是同一个对象

4、转发只能转发给当前web资源(另一个servlet),而重定向可以到任何资源

31、JAVA_WEB开发基础之servlet(2)相关推荐

  1. 30、JAVA_WEB开发基础之servlet(1)

    servlet是什么 Servlet 是一种独立的 web 开发标准,用来接受.处理.返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉 ...

  2. 36、JAVA_WEB开发基础之监听器

    是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建.销毁.更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个 ...

  3. 35、JAVA_WEB开发基础之过滤器

    是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤.实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置 ...

  4. 38、JAVA_WEB开发基础之下载功能

    是什么 下载指的是将服务器端的文件保存到客户端的磁盘中 基本实现原理 根据对应的要下载的文件在服务器端找到对应的文件,然后获取到文件流对象,将流对象发送到客户端,然后客户端通过对返回结果中文件流的解析 ...

  5. 37、JAVA_WEB开发基础之上传功能

    是什么 上传指的是将客户端的文件保存到服务器的磁盘中 基本实现原理 读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传 实例 注意:提交的表单类 ...

  6. 34、JAVA_WEB开发基础之EL表达式和标签

    EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...

  7. 32、JAVA_WEB开发基础之jsp

    是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个s ...

  8. 39、JAVA_WEB开发基础之ajax和json

    ajax是什么 首先要知道ajax并不是一种新的技术,而是几种技术的强强联合,全称是Asynchronous Javascript and xml,其精髓在于异步加载资源,因此可以实现局部加载效果(因 ...

  9. 33、JAVA_WEB开发基础之会话机制

    会话是什么 一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术.通俗的说就是,一个A账号访问 ...

最新文章

  1. 从网站上扒网页,保存为file文件格式
  2. 一些http 响应码及含义
  3. python语言有什么用-python语言为什么好呢?它有什么特点?
  4. SCSM 2012Orchestrator 2012 虚拟机自动交付测试
  5. Java Apple_GitHub - izhaorui/AppleLogin-java: 苹果登录 Sign in with Apple 服务端校验
  6. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性
  7. jupyter notebook运行的快捷键_AI Studio-Notebook基础使用教程(一)
  8. J2ME结构与相关规范介绍
  9. 使用计算机粘贴板的步骤,教你查看win7电脑的剪切板使用技巧和位置查看的方法...
  10. gym103261 I. Euclid‘s Algorithm
  11. c语言密文加密解密问题注释,c语言通过openssl aes对称加解密和base64编解码将密码存储成密文...
  12. bat批处理文件夹内文件名的提取
  13. IOS13图标尺寸_7大原则,带你设计出更优秀的图标
  14. SVN服务端的安装步骤
  15. 免费聚合文章dedeCMS采集脚本网页采集器
  16. pyhon 函数 输入输出
  17. 个人练习4.破译密码,将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。
  18. 深入理解主成分分析(PCA)
  19. 三亚之旅,让键盘先长几天草
  20. 妹妹,我要告诉你爸爸

热门文章

  1. 计算机系统结构答案汤志忠,计算机系统结构(第2版)郑伟明汤志忠课后习题答案以及例题收录.doc...
  2. [JavaWeb-MySQL]多表查询概述
  3. C++ 实现带权有向图的每对顶点之间的最短路径Floyd算法(完整代码)
  4. 找出最大值和最小值(算法导论第三版9.1-2)
  5. word文档相关使用
  6. 数据结构与索引-- mySql索引诡异事件
  7. 数据结构与算法--二叉树实现原理
  8. CoreJava 笔记总结-第六章 接口、lambda表达式与内部类
  9. pycharm里面下载pip(不用去官网)
  10. Easy Math(ACM-ICPC 2018 徐州赛区网络预赛)(递归 + 杜教筛)