5、JSP面试题总结

article/2025/10/14 0:42:28

文章目录

  • 1、静态包含和动态包含的区别
  • 2、jsp有哪些内置对象?作用分别是什么?
  • 3、get和post的请求的区别
  • 4、JSP属性作用域
  • 5、JSP和Servlet的区别
  • 6、JSP运行原理
  • 7、5中常用的JSTL常用标签
  • 8、JSP运行过程
  • 9、会话开启/结束的标志
  • 10、servlet的生命周期
  • 11、转发和重定向的区别
  • 12、在访问Servlet时,在浏览器地址栏中输入的路径是在什么地方配置的?
  • 13、J2EE中,Servlet API为使用Cookie,提供了``javax.servlet.http.HttpCookie``类
  • 14、能够保留请求作用域中数据的转向方式是
  • 15、jsp中${}取值的顺序为
  • 16、Servlet的线程特性是
  • 17、描述Jsp页面的五类脚本元素的功能、写法、并示例
  • 18、描述Bean的四种scope
  • 19、XML主要作用

1、静态包含和动态包含的区别

语法:

静态包含include指令是静态包含,静态包含的意思就是:把文件的代码内容都包含进来,再编译!<%@ include file=""%>
动态包含include行为是动态包含。其实include行为就是封装了request.getRequestDispatcher(String url).include(request,response) <jsp: include page=""%>

区别:

  • <%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期
  • 使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件
  • 使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数

2、jsp有哪些内置对象?作用分别是什么?

共有九个内置对象:

  • request ==> 用户端请求,此请求会包含来自GET/POST请求的参数
  • response ==> 网页传回用户端的回应
  • page ==> JSP网页本身
  • pageContext ==> 管理网页的属性,代表编译后JSP内容
  • config ==> servlet的构架部件
  • session ==> 与请求有关的会话期
  • application ==> 正在执行的内容
  • out ==> 用来传送回应的输出
  • exception ==> 由其它JSP页面抛出的Throwable对象,该变量只在"JSP错误页面"中可用

在JSP中,尤其重要的是pageContext对象,它代表着jsp页面编译后的内容(也就是jsp页面的运行环境)

3、get和post的请求的区别

  1. get请求的数据会在地址栏中显示,而post请求提交的数据存放在HTTP请求的请求体中,所以post请求更加安全
  2. get请求上传的数据不能大于2kb,而post请求对于传输的数据理论上来说是没有限制的
  3. a标签用get请求

4、JSP属性作用域

4个JSP内置对象的作用域分别为:application、session、request、page

  • application 在所有应用程序中有效
  • session 在当前会话中有效
  • request 在当前请求中有效
  • page 在当前页面有效

5、JSP和Servlet的区别

  • JSP就是一个Servlet
  • Servlet的应用逻辑在Java文件中,并且完全从表示层的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件
  • JSP侧重于视图,Servlet主要用于控制逻辑

6、JSP运行原理

当第一次访问jsp页面时,会向一个servlet容器(tomcat等)发出请求,servlet容器先要把 jsp页面转化为servlet源代码(.java),再编译成.class 文件进行编译。当再次访问jsp页面时,跳过翻译和编译的过程 直接调用

7、5中常用的JSTL常用标签

  • <c:if>
  • <c:item>
  • <c:foreach>
  • <c:out>
  • <c:set>

8、JSP运行过程

  1. 客户端发出请求,请求进入Web容器,将JSP页面翻译成Servlet代码
  2. 编译Servlet代码,并将编译过的类文件装入Web容器(JVM)环境
  3. Web容器为JSP页面创建一个Servlet类实例,并执行jspInit方法
  4. Web容器为JSP页面调用Servlet实例的jspService方法,将结果发给用户

执行流程图

在这里插入图片描述

总结:JSP执行过程

  1. 首先,客户端发出请求(request),请求访问JSP网页
  2. 接着,JSP Container将要访问的.JSP文件 转译成Servlet的源代码(.java文件)
  3. 然后,将产生的Servlet的源代码(.java文件)经过编译,生成.class文件,并加载到内存执行
  4. 最后把结果响应(response )给客户端

执行JSP网页文件时,需要经过两个时期:转译时期(TranslationTime)和请求时期(RequestTime)。

  • 转译时期:JSP转译成Servlet类(.class文件)。

  • 请求时期:Servlet类(.class文件)执行后,响应结果至客户端。

转译期间主要做了两件事情:

  • 将JSP网页转译为Servlet源代码(.java),此段称为转译时期(Translation time);

  • 将Servlet源代码(.java)编译成Servlet类(.class),此阶段称为编译时期(Compilation time)。

9、会话开启/结束的标志

开启:开启浏览器进行访问
关闭:关闭浏览器结束访问
不同的浏览器访问时是不同的会话

10、servlet的生命周期

(1)加载和实例化

当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。

(2) 初始化

实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。只执行一次

(3)服务

初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。

(4)销毁

当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。只执行一次

11、转发和重定向的区别

  1. 重定向访问服务器两次转发只访问服务器一次
  2. 重定向可以看见目标页面的url,转发只能看见第一次访问的页面url,以后的工作都是由服务器来做的
  3. 转发可携带数据,重定向可以访问自己web应用以外的资源

12、在访问Servlet时,在浏览器地址栏中输入的路径是在什么地方配置的?

<url-pattern/>中配置

13、J2EE中,Servlet API为使用Cookie,提供了javax.servlet.http.HttpCookie

14、能够保留请求作用域中数据的转向方式是

request.getRequestDispatcher().forward(request,response)

15、jsp中${}取值的顺序为

pageContext,request,session,application

16、Servlet的线程特性是

多线程单例

17、描述Jsp页面的五类脚本元素的功能、写法、并示例

  • 注释 <%-- --%>
  • 指令标记 <%@ %> 指令标记影响JSP页面的翻译阶段
  • 声明标记 <%! %> 声明标记允许JSP页面开发人员包含类级声明
  • 脚本标记 <% %> 脚本标记允许JSP页面开发人员在_jspService方法中包含任意的Java代码
  • 表达式标记 <%= %> 表达式标记封装Java运行时的表达式,其值被送至HTTP响应流

18、描述Bean的四种scope

  • Request
  • Session
  • Application
  • Page

19、XML主要作用

  • 数据交换
  • 信息配置

http://chatgpt.dhexx.cn/article/6UGnfqm1.shtml

相关文章

Vue打包部署IIS无法请求

ARRv3_0 下载安装URl重写URL Rewrite 第一步安装&#xff0c;IIS配置&#xff0c;打开 第二步,点击 Server Proxy Settings 第三步&#xff0c;选中 应用 Vue打包部署 配置URL重写规则 编写规则后&#xff0c;点击应用 重写路径一vue.config.js保持一致 请求成功

实战Vue打包并自动部署到指定服务器

本文章分三步讲解 第一步&#xff1a;安装需要的依赖 npm install scp2 --save-dev npm install chalk --save-dev npm install ssh2 --save-dev npm install cross-env --save-dev 第二步&#xff1a;在vue项目根目录新建upload.server.js文件 upload.server.js // 服务…

vue项目打包部署到服务器

目录 一、打包项目 二、修改Nginx的配置 三、部署 四、开放端口号 一、打包项目 1. 在 vue.config.js 文件中找到并修改&#xff0c;主要是publicPath 与outputDir 两项配置&#xff0c;若项目中有baseUrl,替换为publicPath &#xff08;baseUrl, vue cli 3.3 已弃用&#…

Vue打包部署到Tomcat服务器

我使用的是Vue-cli(simple)脚手架&#xff0c;目录结构更为简洁。 修改相关的配置&#xff0c;避免部署后常出现的空白页问题&#xff0c;而引起这个问题的根本原因是资源路径问题&#xff1a; 1.一个是index.html中的build.js路径问题&#xff1b; 2.一个是dist中静态资源路径…

vue 打包路由报错_急急急急,vue打包部署后,路由无法跳转

求助 vue打包部署后首页可以正常访问&#xff0c;可是一但点击下一步&#xff1b;就没反应&#xff1b;控制台报错&#xff1a; (打包后的index.html文件和JS文件分别部署在服务器的不同文件夹下&#xff0c;但是在index.html文件中的link路径也做过修改) 我的vue.config.js是&…

vue项目打包部署nginx(全流程)

在服务器上按照nginx&#xff1a; sudo apt-get install nginx 安装后nginx默认运行&#xff0c;在浏览器中打开IP地址&#xff0c;即可看到nginx画面 可以使用sudo systemctl status nginx查看nginx状态&#xff0c;图中主要看第三行Active 如果服务正在运行&#xff08;活动…

Vue打包部署出现白屏

1、问题描述 我们用vue项目在本地跑的时候一切正常&#xff0c;当时我们用npm run build命令打包并部署服务器后&#xff0c;发现Index展示的是白屏&#xff0c;控制台显示资源都能正确访问到 2、原因 出现这个问题的原因就是Vue路由模式的设置问题&#xff0c;首先简单介绍一…

SpringBoot+Vue项目打包部署

本篇目录&#xff1a; 1. SpringBootVue项目分析&#xff1b; 2. 前后端打包&#xff1b; 3. 部署1. SpringBootVue项目分析 通常来说&#xff0c;如果采用这样的开发模式&#xff0c;该工程通常是前后端分离的项目&#xff1b; 就是前端美眉开发前端&#xff0c;然后调用张三…

vue打包部署到tomcat上 页面空白资源加载不出来

1.首先解决静态资源加载不出来的问题&#xff1b; vue3.0解决办法 需要在vue.config.js 添加 publicPath: ‘./’, vue2.0解决办法 找到config目录下的index文件 将assetsPublicPath&#xff1a;‘/’改为assetsPublicPath&#xff1a;‘./’ 做完第一步打包放到tomcat上 静…

vue打包放到java中启动_Springboot+Vue打包部署总结

文章目录 一、Vue打包+部署 1. 打包(npm run build:prod) 2.nginx部署前端vue项目 二、Springboot打包+部署 1.打包(mvn clean package) 2.部署 三、大功告成! 一、Vue打包+部署 1. 打包(npm run build:prod) 打完之后会在src同级目录下生成dist文件下,点开index.html页面在浏…

vue 打包部署在 nginx服务中,以及出现的一些问题

首先来说操作步骤 前提&#xff1a; 1、你已经安装/下载好 nginx 2、你的vue 项目已经打包完成&#xff0c;并得到了 dist 文件夹 部署开始&#xff1a; 1、vue 项目打包&#xff0c;在控制台输入 npm run build 等待打包结束后可在项目的同级目录下得到打包文件夹 dist …

ruoyi前后端分离vue打包部署发布

说明&#xff1a;打包使用的方式是把vue打包成dist文件后&#xff0c;放到若依的“ruoyi_admin”的静态文件模块下面&#xff0c;访问“http://localhost:9070/&#xff08;端口“9070”是我自定义的&#xff09;”即可&#xff01; 步骤&#xff1a; 1、先打包vue后台管理系统…

vue项目打包部署流程

vue项目打包部署流程 一、打包二、部署三、部署多个项目 一、打包 &#xff08;可选&#xff09;去除打包后会生成的map文件&#xff1a;在vue.config.js中添加productionSourceMap: false, map文件作用&#xff1a;项目打包后&#xff0c;代码都是经过压缩加密的&#xff0c;…

TongWeb之vue打包部署

VUE静态资源打包部署在tongweb上刷新页面404问题问题现象 F5刷新就会出现404 问题处理方法 方法一&#xff1a;default-web.xml添加error-page标签 <error-page> <error-code>404</error-code> <location>/index.html</location> </error-…

vue打包部署axios跨域问题

工具版本&#xff1a; 【vue -V】:2.9.6 ide工具&#xff1a;VSCode / Idea 前提&#xff1a;我们前端vue工程需要单独部署 一、本地使用命令运行跨域问题。 外网访问的地址&#xff1a;https://www.runoob.com/try/ajax/json_demo.json 本地springboot接口访问的地址&#x…

SpringBoot + Vue打包部署到本地和远程服务器

最近碰到有人问如何将SpringBoot和Vue进行打包部署到Tomcat服务器&#xff0c;由于Vue接触不是很久所以我自己也感兴趣是如何打包部署到本地或者远程服务器上&#xff08;云端&#xff09;。恰好手上也有一个案例需要部署到远程Tomcat空间&#xff0c;琢磨了一点时间总算是搞清…

Vue项目如何打包并部署(nginx)

使用场景: 我们常使用前后端分离项目时,会需要将前端vue打包然后部署。 一.打包 vue项目其实可以直接通过一下语句进行打包&#xff1a; npm run build 默认打包情况如下: 当我们需要将打包名称以及静态资源位置进行修改时便需要进行相应的配置: 1.首先在项目根目录下创建…

Vue项目打包以及部署

一. 打包 npm run build 打包项目后&#xff0c;出现dist文件夹&#xff0c;dist文件夹下的东西就是需要部署的项目。 但是遇到问题&#xff1a;index.html页面出现一片空白&#xff0c;右键检查network发现一堆错误。 解决&#xff1a;没有修改config配置文件&#xff0c;如果…

vue项目打包布署

我们使用Vue做项目时&#xff0c;基本都是前后端分离的&#xff0c;所以项目布署有时是前后单独部署。因此前端开发人员很有必要熟悉一下项目部署的流程。 Vue项目打包部署本身不复杂&#xff0c;不过一些前端同学可能对服务器接触不多&#xff0c;部署过程中还是会遇到这样那…

N皇后问题及答案解

题目 在一张N∗N的国际象棋棋盘上&#xff0c;放置N个皇后&#xff0c;使得所有皇后都无法互相直接攻击得到&#xff0c;&#xff08;皇后可以直接攻击到她所在的横行&#xff0c;竖列&#xff0c;斜方向上的棋子&#xff09;&#xff0c;现在输入一个整数N&#xff0c;表示在N…