31、JAVA_WEB开发基础之servlet(2)
使用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)相关推荐
- 30、JAVA_WEB开发基础之servlet(1)
servlet是什么 Servlet 是一种独立的 web 开发标准,用来接受.处理.返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉 ...
- 36、JAVA_WEB开发基础之监听器
是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建.销毁.更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个 ...
- 35、JAVA_WEB开发基础之过滤器
是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤.实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置 ...
- 38、JAVA_WEB开发基础之下载功能
是什么 下载指的是将服务器端的文件保存到客户端的磁盘中 基本实现原理 根据对应的要下载的文件在服务器端找到对应的文件,然后获取到文件流对象,将流对象发送到客户端,然后客户端通过对返回结果中文件流的解析 ...
- 37、JAVA_WEB开发基础之上传功能
是什么 上传指的是将客户端的文件保存到服务器的磁盘中 基本实现原理 读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传 实例 注意:提交的表单类 ...
- 34、JAVA_WEB开发基础之EL表达式和标签
EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...
- 32、JAVA_WEB开发基础之jsp
是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个s ...
- 39、JAVA_WEB开发基础之ajax和json
ajax是什么 首先要知道ajax并不是一种新的技术,而是几种技术的强强联合,全称是Asynchronous Javascript and xml,其精髓在于异步加载资源,因此可以实现局部加载效果(因 ...
- 33、JAVA_WEB开发基础之会话机制
会话是什么 一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术.通俗的说就是,一个A账号访问 ...
最新文章
- 从网站上扒网页,保存为file文件格式
- 一些http 响应码及含义
- python语言有什么用-python语言为什么好呢?它有什么特点?
- SCSM 2012Orchestrator 2012 虚拟机自动交付测试
- Java Apple_GitHub - izhaorui/AppleLogin-java: 苹果登录 Sign in with Apple 服务端校验
- Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性
- jupyter notebook运行的快捷键_AI Studio-Notebook基础使用教程(一)
- J2ME结构与相关规范介绍
- 使用计算机粘贴板的步骤,教你查看win7电脑的剪切板使用技巧和位置查看的方法...
- gym103261 I. Euclid‘s Algorithm
- c语言密文加密解密问题注释,c语言通过openssl aes对称加解密和base64编解码将密码存储成密文...
- bat批处理文件夹内文件名的提取
- IOS13图标尺寸_7大原则,带你设计出更优秀的图标
- SVN服务端的安装步骤
- 免费聚合文章dedeCMS采集脚本网页采集器
- pyhon 函数 输入输出
- 个人练习4.破译密码,将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。
- 深入理解主成分分析(PCA)
- 三亚之旅,让键盘先长几天草
- 妹妹,我要告诉你爸爸
热门文章
- 计算机系统结构答案汤志忠,计算机系统结构(第2版)郑伟明汤志忠课后习题答案以及例题收录.doc...
- [JavaWeb-MySQL]多表查询概述
- C++ 实现带权有向图的每对顶点之间的最短路径Floyd算法(完整代码)
- 找出最大值和最小值(算法导论第三版9.1-2)
- word文档相关使用
- 数据结构与索引-- mySql索引诡异事件
- 数据结构与算法--二叉树实现原理
- CoreJava 笔记总结-第六章 接口、lambda表达式与内部类
- pycharm里面下载pip(不用去官网)
- Easy Math(ACM-ICPC 2018 徐州赛区网络预赛)(递归 + 杜教筛)