Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Jsp和Servlet有什么区别?

Jsp和Servlet有什么区别?

作者头像
李红
发布于 2019-08-28 07:03:40
发布于 2019-08-28 07:03:40
2.8K0
举报
文章被收录于专栏:Java程序猿部落Java程序猿部落

Servlet接口中有哪些方法?

Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关:

  • void init(ServletConfig config) throws ServletException
  • void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
  • void destory()
  • java.lang.String getServletInfo()
  • ServletConfig getServletConfig()

Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法。

转发(forward)和重定向(redirect)的区别?

forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,因此从浏览器的地址栏中可以看到跳转后的链接地址,很明显redirect无法访问到服务器保护起来资源,但是可以从一个网站redirect到其他网站。

forward更加高效,所以在满足需要时尽量使用forward(通过调用RequestDispatcher对象的forward()方法,该对象可以通过ServletRequest对象的getRequestDispatcher()方法获得),并且这样也有助于隐藏实际的链接;在有些情况下,比如需要访问一个其它服务器上的资源,则必须使用重定向(通过HttpServletResponse对象调用其sendRedirect()方法实现)。

JSP有哪些内置对象?作用分别是什么?

JSP有9个内置对象:

  • request:封装客户端的请求,其中包含来自GET或POST请求的参数;
  • response:封装服务器对客户端的响应;
  • pageContext:通过该对象可以获取其他对象;
  • session:封装用户会话的对象;
  • application:封装服务器运行环境的对象;
  • out:输出服务器响应的输出流对象;
  • config:Web应用的配置对象;
  • page:JSP页面本身(相当于Java程序中的this);
  • exception:封装页面抛出异常的对象。

JSP和Servlet是什么关系?

ervlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。JSP本质上是Servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。

Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

有人说,Servlet就是在Java中写HTML,而JSP就是在HTML中写Java代码,当然这个说法是很片面且不够准确的。JSP侧重于视图,Servlet更侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图(view)而Servlet适合充当控制器(controller)。

讲解JSP中的四种作用域。

答:JSP中的四种作用域包括page、request、session和application,具体来说:

  • page代表与一个页面相关的对象和属性。
  • request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
  • session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
  • application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

实现会话跟踪的技术有哪些?

由于HTTP协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户进行登记,为用户分配唯一的ID,下一次用户在请求中包含此ID,服务器据此判断到底是哪一个用户。

1)URL 重写:在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。

2) 设置表单隐藏域:将和会话跟踪相关的字段添加到隐式表单域中,这些信息不会在浏览器中显示但是提交表单时会提交给服务器。

这两种方式很难处理跨越多个页面的信息传递,因为如果每次都要修改URL或在页面中添加隐式表单域来存储用户会话相关信息,事情将变得非常麻烦。

3)cookie:cookie有两种,一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;另一种是将信息存储在一个临时文件中,并设置存在的时间。

当用户通过浏览器和服务器建立一次会话后,会话ID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个会话ID又会提交给服务器让服务器识别用户身份。

会话中可以为用户保存信息。会话对象是在服务器内存中的,而基于窗口的cookie是在客户端内存中的。

如果浏览器禁用了cookie,那么就需要通过下面两种方式进行会话跟踪。当然,在使用cookie时要注意几点:首先不要在cookie中存放敏感信息;其次cookie存储的数据量有限(4k),不能将过多的内容存储cookie中;再者浏览器通常只允许一个站点最多存放20个cookie。

当然,和用户会话相关的其他信息(除了会话ID)也可以存在cookie方便进行会话跟踪。

4)HttpSession:在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建HttpSession,每个用户可以访问他自己的HttpSession。

可以通过HttpServletRequest对象的getSession方法获得HttpSession,通过HttpSession的setAttribute方法可以将一个值放在HttpSession中,通过调用HttpSession对象的getAttribute方法,同时传入属性名就可以获取保存在HttpSession中的对象。

与上面三种方式不同的是,HttpSession放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的Servlet容器可以在内存将满时将HttpSession中的对象移到其他存储设备中,但是这样势必影响性能。

添加到HttpSession中的值可以是任意Java对象,这个对象最好实现了Serializable接口,这样Servlet容器在必要的时候可以将其序列化到文件中,否则在序列化时就会出现异常。

过滤器有哪些作用和用法?

Java Web开发中的过滤器(filter)是从Servlet 2.3规范开始增加的功能,并在Servlet 2.4规范中得到增强。对Web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和服务器之间的请求与响应信息,并对这些信息进行过滤。

当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联。如果有,那么容器将把请求交给过滤器进行处理。在过滤器中,你可以改变请求的内容,或者重新设置请求的报头信息,然后再将请求发送给目标资源。

当目标资源对请求作出响应时候,容器同样会将响应先转发给过滤器,在过滤器中你可以对响应的内容进行转换,然后再将响应发送到客户端。

常见的过滤器用途主要包括:对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、对请求或响应进行加解密处理、触发资源访问事件、对XML的输出应用XSLT等。

过滤器相关的接口主要有:Filter、FilterConfig和FilterChain。

监听器有哪些作用和用法?

Java Web开发中的监听器(listener)就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示:

  • ServletContextListener:对Servlet上下文的创建和销毁进行监听。
  • ervletContextAttributeListener:监听Servlet上下文属性的添加、删除和替换。
  • HttpSessionAttributeListener:对Session对象中属性的添加、删除和替换进行监听。
  • ServletRequestListener:对请求对象的初始化和销毁进行监听。
  • ServletRequestAttributeListener:对请求对象属性的添加、删除和替换进行监听。
  • HttpSessionListener:对Session的创建和销毁进行监听。

补充:session的销毁有两种情况:

  • session超时(可以在web.xml中通过<session-config>/<session-timeout>标签配置超时时间);
  • 通过调用session对象的invalidate()方法使session失效。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java程序猿部落 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Servlet和JSP总结
##响应数据乱码 -为什么出现乱码,因为输出响应数据默认使用的是iso8859-1 需要把此编码改成utf-8
爱撒谎的男孩
2019/12/31
2.6K0
【JavaWeb】学习笔记——Servlet、Filter、Listenter
用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:   1、编写一个Java类,实现servlet接口。   2、把开发好的Java类部署到web服务器中。
鸡先生
2022/10/29
5180
【JavaWeb】学习笔记——Servlet、Filter、Listenter
整理+学习《骆昊-Java面试题全集(中)》
答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。
黑泽君
2018/12/27
1K0
整理+学习《骆昊-Java面试题全集(中)》
JSP/Servlet Web 学习笔记 DayFive
  (1)在Web容器初始化Servlet实例时,都会为这个Servlet准备一个唯一的ServletConfig实例(俗称Servlet配置对象)。
Rekent
2018/09/04
4400
经典Java面试题收集(二)
答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。
gnnngu
2018/03/15
2K0
经典Java面试题收集(二)
【百面成神】java web基础7问,你能坚持到第几问
跨域问题其实是因为浏览器的安全策略同源策略的限制,当url的协议、域名或者端口号不一致时,就会出现跨域问题。之所以要使用同源策略,是为了防止其它ducument或者脚本对当前document的属性读取或进行修改。
半旧518
2023/10/17
2280
【百面成神】java web基础7问,你能坚持到第几问
jsp、servlet笔记
1、init    初始化Jsp&Servlet方法    destroy 销毁Jsp&Servlet之前的方法    service 对用户请求生成响应的方法 2、Jsp文件必须在jsp服务器内运行
用户1141560
2017/12/26
9900
Servlet技术
Servlet是一种独立于平台和协议的服务器端的Java技术,他使用Java语言编写,可以用来生成动态的Web页面。
海盗船长
2020/08/27
5420
美女面试官问你JavaWeb学的怎么样?JavaWEB面试复习看这一篇就够了!!
近期在复习学过的Java知识,发现都还给老师了,连Request和Response有什么不同都不懂。。。 直到无意中看到这个之前在回车课堂微信群,拿到的第一手资料java面试宝典
Maynor
2021/07/08
4930
JSP & Java 期末复习整理
Jsp 中的注释(三点) 合理、详细的注释有利于代码后期的维护和阅读 在JSP文件的编写过程中,共有三种注释方法:
Gorit
2021/12/09
1.9K0
JSP & Java 期末复习整理
Java Web 33道面试题
HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
小熊学Java
2023/10/23
3530
Java Web 33道面试题
程序员的20大JSP面试问题及答案
1.JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览
鱼找水需要时间
2023/12/23
3110
[硬核]卷起来!两万六千字总结的JavaWeb核心技术学习笔记
该JavaWeb学习笔记源自zcc同学,非常善于总结知识的一位同学,可以收藏起来慢慢学习
Maynor
2021/07/01
1.2K0
Java面试集锦(一)之Java web
AJAX = Asynchronous JavaScript and XML(异步 JavaScript 和 XML)。
凯哥Java
2022/12/16
6330
Java面试集锦(一)之Java web
☀️苏州程序大白一文让你学会Java Servlet基础☀️《❤️记得收藏❤️》
在 Java Web 程序中,Servlet 主要负责接受用户请求 HttpServletRequest,在 doget (),doPost ()中做相应的处理,并将回应 HttpServletResponse反馈给用户。
苏州程序大白
2021/10/09
1.5K0
☀️苏州程序大白一文让你学会Java Servlet基础☀️《❤️记得收藏❤️》
Java Web基础面试题整理
a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。
Java团长
2018/09/27
2.1K1
Java Web基础面试题整理
java过滤器和监听器的区别[拦截器监听器过滤器执行顺序]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说java过滤器和监听器的区别[拦截器监听器过滤器执行顺序],希望能够帮助大家进步!!!
Java架构师必看
2022/03/08
5900
Java Web云端开发 复习提纲
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式
小何先生
2021/07/17
7480
servlet/filter/listener/interceptor区别与联系
1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:
会说话的丶猫
2020/08/06
8950
servlet/filter/listener/interceptor区别与联系
JavaWeb19-Listener ; Filter
Listener & Filter一.Listener 1. listener介绍 Javaweb中的监听器是用于监听web常见对象HttpServletRequest,HttpSession,ServletContext 作用: 监听web对象的创建与销毁 监听web对象的属性变化 监听session绑定javaBean操作 监听机制的相关概念 事件----一件事情 事件源---产生这件事情的源头 注册监听---将监听器与事件绑定,当事件产生时,监听器可以知道,并进行处理。 监听器---对某件事情进行
Java帮帮
2018/03/19
8210
JavaWeb19-Listener ; Filter
相关推荐
Servlet和JSP总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档