Java Web基础面试题

news2024/12/22 20:24:05

在这里插入图片描述

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java面试题总结
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Java Web基础面试题
更多内容点击👇
      Java序列化与注解面试题

本文目录

    • Q01. MVC 的各个部分都有那些技术来实现?如何实现?
    • Q02. http 的长连接和短连接
    • Q03. HTTP/1.1 与HTTP/1.0 的区别
    • Q04. http 常见的状态码有哪些?
    • Q05.GET 和POST 的区别?
    • Q06. http 中重定向和请求转发的区别?
    • Q07. Cookie 和Session 的区别
    • Q08. 在单点登录中,如果 cookie 被禁用了怎么办?
    • Q09. 什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别?
    • Q10. jsp有哪些域对象和内置对象及他们的作用?
    • Q11. jsonp 原理
    • Q12. 谈谈你对ajax 的认识?
    • Q13. Tomcat 的优化经验
    • Q14. HTTP 请求的 GET 与 POST 方式的区别
    • Q15. 解释一下什么是 servlet;
    • Q16. 说一说 Servlet 的生命周期?
    • Q17. Servlet 的基本架构
    • Q18. SERVLET API 中forward() 与redirect()的区别?
    • Q19. 什么情况下调用 doGet()和 doPost()?
    • Q20. Request 对象的主要方法:
    • Q21. forward 和 redirect 的区别
    • Q22. jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?
    • Q23. jsp有哪些动作?作用分别是什么?
    • Q24. JSP 的常用指令
    • Q25. JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?
    • Q26. 两种跳转方式分别是什么?有什么区别?
    • Q27. 页面间对象传递的方法
    • Q28. JSP 和Servlet 有哪些相同点和不同点,他们之间的联系是什么?
    • Q29. 我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1 等,如何输出一个某种编码的字符串?

在这里插入图片描述

Q01. MVC 的各个部分都有那些技术来实现?如何实现?

  MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过
JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

Q02. http 的长连接和短连接

HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本:

  1、HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

  2、在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。从 HTTP/1.1 起,默认使用的是长连接,用以保持连接特性。

Q03. HTTP/1.1 与HTTP/1.0 的区别

1)可扩展性

  a) HTTP/1.1 在消息中增加版本号,用于兼容性判断。
  b) HTTP/1.1 增加了OPTIONS 方法,它允许客户端获取一个服务器支持的方法列表。
  c) 为了与未来的协议规范兼容,HTTP/1.1 在请求消息中包含了Upgrade 头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。

2)缓存

  在 HTTP/1.0 中,使用 Expire 头域来判断资源的 fresh 或 stale,并使用条件请求(conditional request)来判断资源是否仍有效。HTTP/1.1 在 1.0 的基础上加入了一些 cache 的新特性,当缓存对象的 Age 超过 Expire 时变为stale 对象,cache 不需要直接抛弃stale 对象,而是与源服务器进行重新激活(revalidation)。

3)带宽优化

  HTTP/1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了。例如,客户端只需要显示一个文档的部分内容,又比如下载大文件时需要支持断点续传功能,而不是在发生断连后不得不重新下载完整的包。
  HTTP/1.1 中在请求消息中引入了 range 头域,它允许只请求资源的某个部分。在响应消息中 Content-Range 头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为 206(Partial Content),它可以防止 Cache 将响应误以为是完整的一个对象。
  另外一种情况是请求消息中如果包含比较大的实体内容,但不确定服务器是否能够接收该请求(如是否有权限), 此时若贸然发出带实体的请求,如果被拒绝也会浪费带宽。
  HTTP/1.1 加入了一个新的状态码 100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码 401(Unauthorized);如果服务器接收此请求就回送响应码 100,客户端就可以继续发送带实体的完整请求了。注意,HTTP/1.0 的客户端不支持 100 响应码。但可以让客户端在请求消息中加入 Expect 头域,并将它的值设置为 100-continue。
  节省带宽资源的一个非常有效的做法就是压缩要传送的数据。Content-Encoding 是对消息进行端到端(end-to-end)的编码,它可能是资源在服务器上保存的固有格式(如 jpeg 图片格式);在请求消息中加入 Accept-Encoding头域,它可以告诉服务器客户端能够解码的编码方式。

4)长连接

  HTTP/1.0 规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个 TCP 连接,服务器完成请求处理后立即断开 TCP 连接,服务器不跟踪每个客户也不记录过去的请求。此外,由于大多数网页的流量都比较小,一次 TCP 连接很少能通过slow-start 区,不利于提高带宽利用率。
  HTTP 1.1 支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。
  HTTP 1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

5)消息传递

  HTTP 消息中可以包含任意长度的实体,通常它们使用 Content-Length 来给出消息结束标志。但是,对于很多动态产生的响应,只能通过缓冲完整的消息来判断消息的大小,但这样做会加大延迟。如果不使用长连接,还可以通过连接关闭的信号来判定一个消息的结束。
  HTTP/1.1 中引入了 Chunkedtransfer-coding来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。
  在 HTTP/1.0 中,有一个 Content-MD5 的头域,要计算这个头域需要发送方缓冲完整个消息后才能进行。而HTTP/1.1 中,采用 chunked 分块传递的消息在最后一个块(零长度)结束之后会再传递一个拖尾(trailer),它包含一个或多个头域,这些头域是发送方在传递完所有块之后再计算出值的。发送方会在消息中包含一个 Trailer 头域告诉接收方这个拖尾的存在。

6)Host 头域

  在HTTP1.0 中认为每台服务器都绑定一个唯一的IP 地址,因此,请求消息中的URL 并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个 IP 地址。
  HTTP1.1 的请求消息和响应消息都应支持 Host 头域,且请求消息中如果没有 Host 头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。

7)错误提示

  HTTP/1.0 中只定义了 16 个状态响应码,对错误或警告的提示不够具体。HTTP/1.1 引入了一个 Warning 头域, 增加对错误或警告信息的描述。
  此外,在 HTTP/1.1 中新增了 24 个状态响应码,如 409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

Q04. http 常见的状态码有哪些?

200 OK //客户端请求成功
301 Moved Permanently(永久移除),请求的 URL 已移走。Response 中应该包含一个Location URL, 说明资源现在所处的位置
302 found 重定向
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

Q05.GET 和POST 的区别?

从表面现像上面看 GET 和POST 的区别:

  1)GET 请求的数据会附在URL 之后(就是把数据放置在 HTTP 协议头中),以?分割URL 和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。POST 把提交的数据则放置在是 HTTP 包的包体中。

  2)GET 方式提交的数据最多只能是 1024 字节,理论上POST 没有限制,可传较大量的数据。其实这样说是错误的,不准确的:“GET 方式提交的数据最多只能是 1024 字节",因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE 对URL 长度的限制是2083 字节(2K+35)。对于其他浏览器,如Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。

  3)POST 的安全性要比GET 的安全性高。注意:这里所说的安全性和上面 GET 提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的 Security 的含义,比如:通过 GET 提交数据,用户名和密码将明文出现在 URL 上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用 GET 提交数据还可能会造成 Cross-site request forgery 攻击。

  Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求,在 FORM(表单)中,Method默认为"GET",实质上,GET 和 POST 只是发送机制不同,并不是一个取一个发!

Q06. http 中重定向和请求转发的区别?

  本质区别:转发是服务器行为,重定向是客户端行为。

  重定向特点:两次请求,浏览器地址发生变化,可以访问自己 web 之外的资源,传输的数据会丢失。请求转发特点:一次强求,浏览器地址不变,访问的是自己本身的 web 资源,传输的数据不会丢失。

Q07. Cookie 和Session 的区别

  Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie。

  Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

Cookie 和session 的不同点:
  1)无论客户端做怎样的设置,session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。
  2)在存储的数据量方面:session 能够存储任意的java 对象,cookie 只能存储 String 类型的对象。

Q08. 在单点登录中,如果 cookie 被禁用了怎么办?

  单点登录的原理是后端生成一个 session ID,然后设置到 cookie,后面的所有请求浏览器都会带上 cookie, 然后服务端从 cookie 里获取 session ID,再查询到用户信息。所以,保持登录的关键不是 cookie,而是通过cookie 保存和传输的 session ID,其本质是能获取用户信息的数据。除了 cookie,还通常使用 HTTP 请求头来传输。但是这个请求头浏览器不会像 cookie 一样自动携带,需要手工处理。

Q09. 什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别?

  jsp 本质上就是一个Servlet,它是 Servlet 的一种特殊形式(由 SUN 公司推出),每个 jsp 页面都是一个servlet实例。
  Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口。

区别:
  1、jsp 是 html 页面中内嵌的Java 代码,侧重页面显示;
  2、Servlet 是 html 代码和 Java 代码分离,侧重逻辑控制,mvc 设计思想中jsp 位于视图层,servlet 位于控制层。

Jsp 运行机制:如下图:
在这里插入图片描述

  JVM 只能识别 Java 类,并不能识别 jsp 代码!web 容器收到以.jsp 为扩展名的 url 请求时,会将访问请求交给tomcat 中 jsp 引擎处理,每个 jsp 页面第一次被访问时,jsp 引擎将 jsp 代码解释为一个 servlet 源程序,接着编译servlet 源程序生成.class 文件,再有 web 容器 servlet 引擎去装载执行servlet 程序,实现页面交互。

Q10. jsp有哪些域对象和内置对象及他们的作用?

四大域对象:
  1、pageContext page 域-指当前页面,在当前jsp 页面有效,跳到其它页面失效
  2、request request 域-指一次请求范围内有效,从 http 请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward(请求转发)方式跳转多个 jsp,在这些页面里你都可以使用这个变量
  3、session session 域-指当前会话有效范围,浏览器从打开到关闭过程中,转发、重定向均可以使用
  4、application context 域-指只能在同一个web 中使用,服务器未关闭或者重启,数据就有九大内置对象:

生命周期作用域使用情况
Request一次请求只在 Jsp 页面内有效用于接受通过 HTTP 协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。
Reponse一次响应只在 Jsp 页面内有效表示服务器端对客户端的回应。主要用于设置头信息、跳转、Cookie 等
Session从存入数据开始,默认闲置 30 分钟后失效会话内有效用于存储特定的用户会话所需的信息
Outhttp://www.cnblogs.com/leirenyuan/p/6016063.html用于在 Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区
PageContext详细了解:http://www.cnblogs.com/leirenyuan/p/6016063.html用于存取其他隐含对象,如 request、reponse、session、application 等对象。(实际上,pageContext 对象提供了对 JSP 页面所有的对象及命名空间的访问。
Pagehttp://www.cnblogs.com/leirenyuan/p/6016063.htmlpage 对象代表 JSP 本身(对应 this),只有在 JSP 页面内才是合法的
Exceptionhttp://www.cnblogs.com/leirenyuan/p/6016063.html显示异常信息,必须在 page 指令中设定< %@ page isErrorPage=“true” %>才能使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件
Application服务器启动发送第一个请求时就产生了Application 对象,直到服务器关闭。用于存储和访问来自任何页面的变量所有的用户分享一个 Application 对象
Confighttp://www.cnblogs.com/leirenyuan/p/6016063.html取得服务器的配置信息

Q11. jsonp 原理

  JavaScript 是一种在Web 开发中经常使用的前端动态脚本技术。在 JavaScript 中,有一个很重要的安全性限制, 被称为“Same-Origin Policy”(同源策略)。这一策略对于 JavaScript 代码能够访问的页面内容做了很重要的限制,即JavaScript 只能访问与包含它的文档在同一域下的内容。

  JavaScript 这个安全策略在进行多 iframe 或多窗口编程、以及 Ajax 编程时显得尤为重要。根据这个策略, 在 baidu.com 下的页面中包含的 JavaScript 代码,不能访问在 google.com 域名下的页面内容;甚至不同的子域名之间的页面也不能通过 JavaScript 代码互相访问。对于 Ajax 的影响在于,通过XMLHttpRequest 实现的Ajax 请求,不能向不同的域提交请求,例如,在 abc.example.com 下的页面,不能向 def.example.com 提交Ajax 请求,等等。

  然而,当进行一些比较深入的前端编程的时候,不可避免地需要进行跨域操作,这时候“同源策略”就显得过于苛刻。JSONP 跨域 GET 请求是一个常用的解决方案,下面我们来看一下 JSONP 跨域是如何实现的,并且探讨下 JSONP 跨域的原理。

  jsonp 的最基本的原理是:动态添加一个<script>标签,使用 script 标签的 src 属性没有跨域的限制的特点实现跨域。首先在客户端注册一个 callback, 然后把 callback 的名字传给服务器。此时,服务器先生成 json 数据。 然后以 javascript 语法的方式,生成一个 function , function 名字就是传递上来的参数 jsonp。最后将json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。

  客户端浏览器,解析 script 标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里。

Q12. 谈谈你对ajax 的认识?

  Ajax 是一种创建交互式网页应用的的网页开发技术;Asynchronous JavaScript and XML”的缩写。

  Ajax 的优势:
  1、通过异步模式,提升了用户体验。
  2、优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。
  3、Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

  Ajax 的最大特点:可以实现局部刷新,在不更新整个页面的前提下维护数据,提升用户体验度。

Q13. Tomcat 的优化经验

  去掉对web.xml 的监视,把jsp 提前编辑成Servlet。有富余物理内存的情况,加大 tomcat 使用的jvm 的内存

Q14. HTTP 请求的 GET 与 POST 方式的区别

  servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。

Q15. 解释一下什么是 servlet;

  servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。

Q16. 说一说 Servlet 的生命周期?

  servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
  这个生存期由javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。
  Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。
  web 容器加载servlet,生命周期开始。通过调用 servlet 的init()方法进行 servlet 的初始化。通过调用 service()方法实现,根据请求的不同调用不同的 do***()方法。结束服务,web 容器调用servlet 的destroy()方法。

Q17. Servlet 的基本架构

public class ServletName extends HttpServlet { 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
}

Q18. SERVLET API 中forward() 与redirect()的区别?

  前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后 者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

Q19. 什么情况下调用 doGet()和 doPost()?

  Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

Q20. Request 对象的主要方法:

setAttribute(String name,Object):设置名字为 name 的request 的参数值
getAttribute(String name):返回由 name 指定的属性值
getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的 Body 的长度
getHeader(String name):获得 HTTP 协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header 的所有值,结果是一个枚举
的实例
getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParametervalues(String name):获得有 name 指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的 IP 地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName(): 获 取 服 务 器 的 名 字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性

Q21. forward 和 redirect 的区别

  forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
  redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取。

Q22. jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?

JSP 共有以下 9 个内置的对象:
  request 用户端请求,此请求会包含来自GET/POST 请求的参数
  response 网页传回用户端的回应
  pageContext 网页的属性是在这里管理
  session 与请求有关的会话期application
  servlet 正在执行的内容out 用来传送回应的输出
  config servlet 的构架部件
  page JSP 网页本身
  exception 针对错误网页,未捕捉的例外
  request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header, 和 session 数据的有用的方法。
  response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等)
  out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
  pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的 servlet 相关功能的方法。
  session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息applicaton 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和servlet 环境的信息
  config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。
  page 表示从该页面产生的一个 servlet 实例

Q23. jsp有哪些动作?作用分别是什么?

JSP 共有以下 6 种基本动作
  jsp:include:在页面被请求的时候引入一个文件。
  jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean 的属性。
  jsp:getProperty:输出某个JavaBean 的属性。
  jsp:forward:把请求转到一个新的页面。
  jsp:plugin:根据浏览器类型为Java 插件生成OBJECT 或EMBED 标记

Q24. JSP 的常用指令

  isErrorPage(是否能使用Exception 对象),isELIgnored(是否忽略表达式)

Q25. JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?

动态 INCLUDE 用 jsp:include 动作实现
  <jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用include 伪码实现,定不会检查所含文件的变化, 适用于包含静态页面 <%@ include file=included.htm %>

Q26. 两种跳转方式分别是什么?有什么区别?

有两种,分别为:
  <jsp:include page=included.jsp flush=true>
  <jsp:forward page= nextpage.jsp/>
  前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

Q27. 页面间对象传递的方法

  request,session,application,cookie 等

Q28. JSP 和Servlet 有哪些相同点和不同点,他们之间的联系是什么?

  JSP 是Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。
  JSP 编译后是"类servlet"。Servlet 和JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

Q29. 我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1 等,如何输出一个某种编码的字符串?

Public String translate (String str) 
{ 
String tempStr = ""; 
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); 
tempStr = tempStr.trim(); 
}catch (Exception e) { 
System.err.println(e.getMessage()); 
}
return tempStr; 
}

  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

【K3s】第4篇 一篇文章带你了解使用Kompose

目录 1、Kompose介绍 2、安装Kompose 3、docker-compose文件转换为k8s文件 1、Kompose介绍 kompose是一个帮助熟悉 Kubernetes 的用户迁移到k8s的工具。 获取 Docker Compose 文件并将其转换为 Kubernetes 资源。 kompose是一个方便的工具&#xff0c;可以从本地 Docker …

Ffuf爆破神器(超详细)

目录为什么是Ffuf基本使用最基本的使用多个字典同时使用带cookie扫描&#xff08;-b&#xff09;静默模式&#xff08;-s&#xff09;递归扫描&#xff08;-recursion&#xff09;指定扩展名&#xff08;-e&#xff09;POST请求爆破方式1&#xff1a;指明请求地址和请求体【不推…

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…

Android实现雪花特效自定义view

一、前言 这个冬天&#xff0c;老家一直没有下雨&#xff0c; 正好圣诞节&#xff0c;就想着制作一个下雪的特效。 圣诞祝福&#xff1a;平安夜&#xff0c;舞翩阡。雪花飘&#xff0c;飞满天。心与心&#xff0c;永相伴。 圣诞节是传统的宗教节日&#xff0c;对于基 督徒&…

前端自学你还在浪费时间吗?

其实最主要不是学的过程&#xff0c;而是学完后&#xff0c;你有没有把今天的练习题自己在重新敲个2&#xff0c;3遍&#xff0c;这样印象就会更加深刻&#xff0c;以后自己写代码的时候也会更加的得心应手。 手抄笔记让我打好了HTML基础和良好的CSS能力&#xff0c;当然这不一…

Cesium打包入门(gulp与esbuild)

本文针对Cesium源码包的打包工具gulp和esbuild进行了初步探讨&#xff0c;属于入门篇。 首先简要介绍采用gulpesbuild如何为多个源代码文件打包成一个单独文件&#xff0c;然后介绍了下Cesium中的源码包的结构&#xff0c;并简要分析了其打包的相关函数。 本文编译环境IDE使用…

【并发编程学习】一、线程的基本认识

一、线程的基本认识 1.1线程的基本介绍 线程是什么&#xff1f; 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运行单位。 为什么会有多线程&#xff1f; ①因为其是CPU的最小调度单位&#xff0c;所以在多核CPU中&#xff0c…

圣诞节,深圳街头有点冷清了~

正文大家好&#xff0c;我是bug菌~今天是圣诞节&#xff0c;这也是我新冠康复的第二周了吧&#xff0c;还有点小咳嗽&#xff0c;伴随有点鼻炎&#xff0c;不过这周已经上了三天班了&#xff0c;整体感觉还算好吧&#xff0c;毕竟我嘴巴不硬&#xff0c;也比较低调不嚣张&#…

底层硬件创新夯实算力、应用创新贴近业务:英特尔至强助力下的VR医疗培训系统

早在1935年&#xff0c;科幻小说家斯坦利温鲍姆的小说《皮格马利翁的眼镜》中&#xff0c;就构想了一款实现虚拟现实&#xff08;VR&#xff09;的眼镜。近年来&#xff0c;除游戏、娱乐等大众熟知的应用场景外&#xff0c;VR逐渐涉足医疗、教育、生产制造等各种领域。 以医疗…

LeetCode-1759-统计同构子字符串的数目

1、数学 我们可以使用数学进行分析&#xff1a;每当出现连续的nnn个字符时&#xff0c;我们最终将其合在一起进行计算个数。显然我们可以获得的同构子字符串的个数应为n(n1)2\frac{n \times (n1)}{2}2n(n1)​。因此我们只需要遍历整个字符串&#xff0c;分别统计连续出现的字符…

57岛屿数量-61全排列 最长递增路径

57岛屿数量 矩阵中多处聚集着1&#xff0c;要想统计1聚集的堆数而不重复统计&#xff0c;那我们可以考虑每次找到一堆相邻的1&#xff0c;就将其全部改成0&#xff0c;而将所有相邻的1改成0的步骤又可以使用深度优先搜索&#xff08;dfs&#xff09;&#xff1a;当我们遇到矩阵…

AtCoder Beginner Contest 283 (A~F)

比赛名称&#xff1a;UNIQUE VISION Programming Contest 2022 Winter(AtCoder Beginner Contest 283) 比赛链接&#xff1a;AtCoder Beginner Contest 283 A - Power 题意&#xff1a; 求A^B(1<A,B<9) 要注意这个int强制转换&#xff0c;不然9^9输出结果时387420489&…

python根据json数据画疫情分布地图

目录 一.基础地图使用 1.掌握使用pyecharts构建基础的全国地图可视化图表 二.疫情地图——国内疫情地图 1.案例效果 代码 三.疫情地图——省级疫情地图 四.数据集 注&#xff1a;数据集在文章最后 一.基础地图使用 1.掌握使用pyecharts构建基础的全国地图可视化图表 演…

Learning to Segment Every Thing

摘要 现有的目标实例分割方法要求所有训练样本都具有分割mask标注。然而&#xff0c;标注新的类别是非常费劲的&#xff0c;因此这将实例分割模型的应用范围限制在100个左右的有标注的类。本文的目的是提出一种新的部分监督的训练模型&#xff0c;以及一种新的权重传递函数&am…

洛谷【算法1-7】搜索刷题——优化、错题

文章目录[USACO1.5]八皇后 Checker Challenge题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路搜索框架代码位运算优化lowbit运算思路kkksc03考前临时抱佛脚题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码吃奶酪题目描述输入格式输…

C++ STL 之可变长数组 Vector 详解

文章目录Part.I AttentionChap.I 注意事项Chap.II 操作技巧Part.II FunctionChap.I 构造函数Chap.II 增加函数Chap.III 删除函数Chap.IV 遍历函数Chap.V 判断/大小/其他函数Part.III CodePart.I Attention Chap.I 注意事项 使用vector需要注意的地方&#xff1a; 加引用#inc…

分布式与微服务系列 - SpringBoot + Zookeeper集群 + Dubbo分布式托管(提供者、消费者)+ Nginx反向代理

一、前言 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 再搭建集群项目前&#xff0c;请先学习相关技术的知识&#xff1a; 分布式与微服务系列 - Dubbo分布式与微服务系列 - Zookeeper上篇&#xff1a;入门到精通参考文档&#xff1a;分布式与微服务…

状态机——奇葩的状态表示

状态机——奇葩的状态表示 简述 在动态规划中&#xff0c;遇到有一个点有多个状态&#xff0c;混在一起无法表示&#xff0c;那么就可以把状态分开&#xff0c;并且构造出不同状态之间的转移关系&#xff0c;然后再求出状态转移方程&#xff0c;之后就OK了。 题目 1049. 大…

GNN algorithms(3): Tri-party Deep Network Representation

目录 Tri-party Deep Network Representation Essence Thinking Abstract Introduction Problem Definition Tri-DNR pipelines Model Architecture Tri-party Deep Network Representation Essence 1) Deepwalk提取graph structure信息&#xff0c;即structural nod…

MyBatis 一文基础总结

MyBatis 一文基础总结老师的随堂上课笔记&#xff0c; 供参考~1.框架概述1.1 软件开发常用结构1.1.1三层架构三层的处理请求的交互&#xff1a;用户---> 界面层--->业务逻辑层--->数据访问层--->DB 数据库1.1.2 常用框架常见的 J2EE 中开发框架&#xff1a;MyBatis…