JSP相关面试题

article/2025/10/14 0:40:29

文章目录

    • 1、Tomcat服务器软件的目录结构说明, 如何配置Tomcat的环境变量?
    • 2、如何使用Eclipse创建Web项目?
      • 2.1、配置环境
      • 2.2、创建项目
    • 3、Java Server Pages的运行原理?
    • 4、什么是无状态请求, 应用程序的类型?
    • 5、request和response对象的作用和常用方法?
    • 6、处理中文乱码的方法有几种,如何实现?
    • 7、针对GET和POST请求如何处理中文乱码?
    • 8、转发与重定向的区别和应用场合是什么?
    • 9、session,application对象的作用和常用方法是什么?
    • 10、cookie对象的作用和常用方法是什么?
    • 11、内置对象的作用域?
    • 12、JavaBean?
    • 13、3层架构?

1、Tomcat服务器软件的目录结构说明, 如何配置Tomcat的环境变量?

bin:可执行文件(startup.bat shutdown.bat)

conf:配置文件(server.xml)

​ context.xml:用来配置tomcat上下文的共享通用信息,帮助我们在多个网站之间使用相同的资源(数据源,共享文件)

​ serverl.xml:用来设置tomcat服务器运行时的行为(端口,处理请求处理)

​ web.xml:配置tomcat多个网站的托管信息行为,里面也有welcome-file-list (注意:webapps下面的web.xml 要比这里的优先级更高一些)

lib:tomcat依赖jar包 tomcat运行是,会讲WEB-INF/lib中的所有Jar统一打成一个包。也就是说可以把jdbc的驱动丢进去,以后就不用自己丢驱动了

log:日志文件(记录出错)

temp:临时文件

webapps:可执行的项目,将我们开发的项目,放入目录

word:存放由jsp翻译成的java,以及编译成的class文件

配置Tomcat环境变量,首先下载好Tomcat压缩包,并具备jdk相对环境

解压Tomcat,在高级变量里配置

CATALINA_BASE
D:\apache-tomcat-9.0.17-1CATALINA_HOME
D:\apache-tomcat-9.0.17-1

先关配置请参考笔记:

Tomcat安装详版(图解)

2、如何使用Eclipse创建Web项目?

2.1、配置环境

Eclipse版本必须是2019以上版本(太低了,Tomcat版本相对较低)

先来查看JDK在Eclipse上的相关配置

在这里插入图片描述

再来添加Tomcat相关依赖,我这里Tomcat 9.0版本

在这里插入图片描述

设置tomcat

在这里插入图片描述

2.2、创建项目

现在有了相关的环境,开始创建Web项目

要记得在左边新建一个Package Explorer的资源管理器哟

第一步:右键 新建 Dynamic Web Project 下一步

第二步:随便起个名字,默认4.0 版本 下一步

第三步:下面的 build\classes 更改为 WebConfig\WEB_INF\classes 下一步 (这一步就是更改生成文件的路径)

第四步:勾选选框,默认未勾选状态,勾选后,会创建 web.xml 文件 结束

第一次创建会慢一点点哟 耐心等待 以后就好了

3、Java Server Pages的运行原理?

我一开始听到这里,还以为是什么高大上的题目,后来查阅资料,才发现 Java Server Pages 其实就是我们所说的 JSP,呵呵呵…了

项目的jsp文件,在被部署到Tomcat中后,当Tomcat服务启动后,Tomcat服务器会先把 JSP 文件编译成 Java 最终由 JDK 编译成 class文件 成为class文件后,JVM就可以进行相对的阅读操作

4、什么是无状态请求, 应用程序的类型?

HTTP无状态协议,是指协议对于交互性场景没有记忆能力。

这句话可能太抽象了,我们可以这样去理解

​ 每次我们去逛淘宝的时候,是不是都要先登录我们的用户名啊,那确实,要先登录一下,不然淘宝不知道谁要买这个东西,寄到哪里去也不清楚,在我们登录之后,我们紧接着就要可以去购物了,挑了一大堆东西放进购物车里,最后写入收货地址,付款。完成了整个流程,但我们有没有想过这样一件事情,当我们在第一个登录页面登录后,后面的每一步都和此用户息息相关。但是,我们所有的网页都是独立的呀,在我们写html代码的时候,每个页面和每个页面都是相互区分的,之间并没有数据在相互链接,如果是要链接的话,把一大堆用户名、用户密码、等一切都在网页之间相互传输的话,那样会消耗大量的服务器资源,这个时候,我们才有此引来了Session和Cookie,把一些信息用sessionID来标识,让服务器和客户端能仅靠一个钥匙,实现数据的共享传输,这样,也就能理解什么是无状态请求了。Session 和 Cookie的工作,我想老师都讲过,我就不再一一解释了,但我要扩展的是,Session Cookie的工作能力确实不错,但是也有一个缺点,也就是安全性不高,因此又引来了Token,因为Token的加入,我们的数据传输变得更加安全,有效。

5、request和response对象的作用和常用方法?

request

  • String getParameter(String name)

    根据请求的字段名key,返回字段值value,最终拿到的是value的值

  • String[] getParameterValue(String name)

    根据请求的字段名key,返回多个字段值value

  • void setCharacterEncoding(编码格式utf-8)

    设置请求编码

    (tomcat7以前默认是iso-8859-1,tomcat8以后就改为了utf-8) (补充一点:这一点也是作者的最新发现,在Tomcat8以上,在server.xml文件里配置端口那一项,默认写上了 encoding=utf-8)

  • getRequestDispatcher(“b.jsp”).forward(request,response)

    实现请求转发 A->B

  • getServerContext()

    获取项目的ServletContext对象


response

  • void addCookie(Cookie cookie)

    服务端向客户端增加一个cookie对象

  • void sendRedirect(String location) thorws IOException

    页面跳转的一种方式叫重定向

  • void setContetType(String type)

    设置服务端响应的编码(设置服务端contentType类型)

6、处理中文乱码的方法有几种,如何实现?

第一种:启动Tomcat后,控制台输出的语句有乱码行为

​ 解决方案:在tomcat 的 conf 目录下 找到 logging.properties

​ 打开这个文本文件,找到如下配置项:

​ java.util.logging.ConsoleHandler.encoding = UTF-8

​ 将 UTF-8 修改为 GBK,修改后的效果为:

​ java.util.logging.ConsoleHandler.encoding = GBK 重启tomcat

第二种:启动Tomcat后,在网页里看到了乱码问题

​ 第一:检查jsp 文件是否是 UTF-8 格式

​ 第二:头文件是否书写为 encoding = utf-8

​ 看下一条

7、针对GET和POST请求如何处理中文乱码?

get

  • get方式如果出现乱码,解决:

    • 统一每一个变量
      • new String(旧编码改成新编码)
      • name = new String(name.getBytes(“iso-8859-1”),“utf-8”);
  • 修改server.xml,一次性更改tomcat默认get提交方式的编码(utf-8)(一劳永逸)

    • 在改端口号的地方加一个
      • URIEncoding=“utf-8”

      • 建议使用tomcat时,首次在server.xml中统一get方式的编码

post

  • 设置post编码
    • request.setCharacterEncoding(“utf-8”);

8、转发与重定向的区别和应用场合是什么?

请求转发重定向
地址栏是否改变不变改变
是否保留第一次请求时的数据保留不保留
请求次数1个来回2个来回
跳转发生的位置服务端客户端发出第二次

转发是要比重定向快,因为重定向需要经过客户端,而转发没有。有时候,采用重定向会更好,若需要重定向到另外一个外部网站,则无法使用转发。另外,重定向还有一个应用场景:避免在用户重新加载页面时两次调用相同的动作。

9、session,application对象的作用和常用方法是什么?

session

  • String getId()

    获取sessionId

  • boolean isNew()

    判断是否是新用户(第一次访问)

  • void invalidate()

    使session失效 (退出登录、注销)

  • void getAttribute()

    获取参数

  • Object setAttribute()
    设置参数

  • void setMaxInactiveInterval()

    设置最大有效时间 非活动时间

  • int setMaxInactiveInterval()

    获取最大有效时间 非活动时间

application

  • Object getAttribute(String name):根据属性名,或者属性值
  • void setAttribute(String name,Object obj):设置属性值(新增,修改)
  • setAttribute("a,“b”); 如果a对象之前不存在,则创建一个a对象
    如果a对象已经存在,则a的值改为b
  • void removeAttribute(String name) :根据属性名,删除对象

10、cookie对象的作用和常用方法是什么?

public Cookie(String name,String value)

String getName()

String getValue()

void setMaxAge(int expiry);

11、内置对象的作用域?

pageContext JSP页面容器(page对象) 当前页面有效

request 对象请求 同一次请求有效

session 会话请求 同一次会话有效

application 全局对象 全局有效(整个项目有效)

  • pageCntext 当前页面有效(页面跳转后无效)
  • request 同一次请求有效 (请求转发后有效;重定向后无效)重定向两次请求了
  • session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效,)
  • application 全局有效(整个项目有效)(切换浏览器任然有效);关闭发我、其他项目 无效多个项目共享、重启仍然有效:JNDI

注意:

  1. 以上的4个范围对象,通过setAttribute()复制,通过getAttribute()取值
  2. 以上范围对象,尽量使用最小的范围。因为 对象的范围越大,赵成的性能损耗越大。

12、JavaBean?

JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:

1、可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。

2、可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

和OOP的封装概念相似

13、3层架构?

在这里插入图片描述

表示层+业务逻辑层+数据访问层

各层作用:

1、数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。

2、业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3、表示层:主要表示WEB方式,就html懂了吧,首先要能显示数据,这是必须的,其次好看就完事了


http://chatgpt.dhexx.cn/article/ABqQdu78.shtml

相关文章

5、JSP面试题总结

文章目录 1、静态包含和动态包含的区别2、jsp有哪些内置对象?作用分别是什么?3、get和post的请求的区别4、JSP属性作用域5、JSP和Servlet的区别6、JSP运行原理7、5中常用的JSTL常用标签8、JSP运行过程9、会话开启/结束的标志10、servlet的生命周期11、转…

Vue打包部署IIS无法请求

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

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

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

vue项目打包部署到服务器

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

Vue打包部署到Tomcat服务器

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

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

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

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

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

Vue打包部署出现白屏

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

SpringBoot+Vue项目打包部署

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

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

1.首先解决静态资源加载不出来的问题; vue3.0解决办法 需要在vue.config.js 添加 publicPath: ‘./’, vue2.0解决办法 找到config目录下的index文件 将assetsPublicPath:‘/’改为assetsPublicPath:‘./’ 做完第一步打包放到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服务中,以及出现的一些问题

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

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

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

vue项目打包部署流程

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

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;部署过程中还是会遇到这样那…