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),而重定向可以到任何资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣(leetcode)第1题两数之和(Python)

1.两数之和 题目链接:1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素…

jzoj3809-设备塔【并查集】

正题 题目链接:https://jzoj.net/senior/#contest/show/2955/2 题目大意 n∗mn*mn∗m的矩阵,最左边和最右边是联通的,然后每次加入一个墙求能否有一条路径从最上方到最下方。如果有就加入否则不加入。 求最后有多少个墙。 解题思路 我们对于每个墙往八…

32、JAVA_WEB开发基础之jsp

是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个servlet ,每个jsp页面第一次被访问时&#xff…

上古时期(大雾)的数据结构pdf

分块点分治Treap byWYCby\ WYCby WYC Part1 分块 概念 就是将nnn个数分成若干个块,然后要处理的时候整块一起的加上局部的直接暴力。 如果将块的大小分配好一般每次都是O(n)O(\sqrt n)O(n​)的。 而且因为十分暴力,所以有很多优秀的性质。 实现方法 …

2017西安交大ACM小学期 刁钻的顾客[3进制+折半枚举]

刁钻的顾客 发布时间: 2017年7月3日 10:23 时间限制: 3000ms 内存限制: 128M 描述 XJTU校园内新开一家商店,可是来了一位刁钻的顾客要购买商品A和商品B。关于商品的质量,共有n个评分,每个评分即一个整数来表示该产品在某一方面的质量。商…

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

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

2017西安交大ACM小学期 刷墙[折半枚举+异或]

刷墙 发布时间: 2017年7月3日 12:17 最后更新: 2017年7月6日 22:29 时间限制: 3000ms 内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉刷一遍。他将任务分给了xx粉刷匠,但是xx粉刷匠提出要求,他要根据原来墙的颜色进行粉…

jzoj4216-[NOIP2015模拟9.12]平方和【Splay】

正题 题目链接:https://jzoj.net/senior/#main/show/4216 题目大意 一个序列要求支持操作 插入一个数区间加上一个数区间求平方和 解题思路 用线段树可以做到区间求平方和。 就是(ab)2a22abb2(ab)^2a^22abb^2(ab)2a22abb2也就是维护区间和平方和和区间个数即可。 但是因为…

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

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

2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

选择困难症 发布时间: 2017年7月4日 12:44 最后更新: 2017年7月4日 12:45 时间限制: 5000ms 内存限制: 128M 描述 GG有严重的选择困难症。 早上起床后,需要花很长时间决定今天穿什么出门。 假设一共有k类物品需要搭配选择,每类物品的个数为Ai&…

jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】

正题 题目链接:https://jzoj.net/senior/#main/show/3798 题目大意 长度为nnn的字符串,求有多少个子串中ABCABCABC数量相等。 解题思路 方法好像很巧妙,用Si,A/B/CS_{i,A/B/C}Si,A/B/C​表示到第iii个时A/B/CA/B/CA/B/C的数量。 然后Sr,A−Sl,ASr,B−…

35、JAVA_WEB开发基础之过滤器

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

2017西安交大ACM小学期 毁灭序列[倒跑并查集]

毁灭序列 发布时间: 2017年7月4日 20:58 最后更新: 2017年7月6日 22:23 时间限制: 1000ms 内存限制: 512M 描述 给出一个n(1≤n≤2105)个非负整数a1,a2,...,an的序列,你要按一定顺序毁灭序列的中的数,在每次毁灭一个数后,输出不包括已毁…

P4036-[JSOI2008]火星人【Splay,二分,hash】

正题 题目链接:https://www.luogu.com.cn/problem/P4036 题目大意 一个字符串要求支持 插入一个字符修改一个字符询问两个后缀的最长公共前缀。 解题思路 如果不考虑修改我们可以用二分hashhashhash解决该问题,但是涉及到修改和插入我们考虑用SplaySplaySplay维…

36、JAVA_WEB开发基础之监听器

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

2017西安交大ACM小学期 神器插座 KMP匹配

神奇插座 发布时间: 2017年7月3日 11:27 最后更新: 2017年7月5日 13:46 时间限制: 500ms 内存限制: 128M 描述 AA所在的国家有一项神奇的发明:插座。这里的插座不仅有两孔、三孔,而是有多种形态,下面用不同的小写字母表示不同的插座。插…

jzoj3626-[LNOI2014]LCA【树链剖分,线段树】

正题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id3626 题目大意 一棵树,每次给出(l,r,z)(l,r,z)(l,r,z)询问∑ilrdepLCA(i,z)\sum_{il}^rdep_{LCA(i,z)}il∑r​depLCA(i,z)​ 解题思路 若询问LCA(x,y)LCA(x,y)LCA(x,y)的深度有一种方法&#xf…

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

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

2017西安交大ACM小学期 文本查找[AC自动机]

文本查找 发布时间: 2017年7月5日 00:10 最后更新: 2017年7月5日 13:47 时间限制: 1500ms 内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段文本,问这段文本中有几种关键词出现(一种关键词出现多次只算一次)。 输入…

P4296-[AHOI2007]密码箱【数论】

正题 题目链接:https://www.luogu.com.cn/problem/P4296 题目大意 一个数字nnn&#xff0c;求有多少个x<nx<nx<n使得x2%n1x^2\%n1x2%n1。 解题思路 x2kn1x^2kn1x2kn1 x2−1knx^2-1knx2−1kn (x−1)(x1)%n0(x-1)(x1)\%n0(x−1)(x1)%n0 ⇒\Rightarrow⇒ x(x2)%n0(x2&l…