JSP相关面试题

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-1

CATALINA_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懂了吧,首先要能显示数据,这是必须的,其次好看就完事了

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. HTML是什么?它的作用是什么? 答:HTML(HyperText Markup Language)是一种标记语言,用于创建和组织文本、图像和其他资源,以便在Web上显示和处理。HTML的主要作用是定义网页的结构、内容和语义。 2. CSS是什么?它的作用是什么? 答:CSS(Cascading Style Sheets)是一种样式表语言,用于控制Web页面的外观和布局。CSS的主要作用是定义网页的样式、颜色、字体、背景、边框等外观属性。 3. JSP是什么?它的作用是什么? 答:JSP(JavaServer Pages)是一种基于Java的服务器端技术,用于创建动态Web页面。JSP的主要作用是将Java代码嵌入到HTML页面中,以便在服务器端动态生成网页内容。 4. 请解释一下HTML5中的语义化标签。 答:HTML5中的语义化标签是一组用于定义网页内容的标记,以便更好地描述文本和图像的含义和结构。这些标签包括header、nav、section、article、aside、footer等,它们可以让开发者更容易地理解和维护网页内容。 5. 请解释一下CSS中的盒模型。 答:CSS中的盒模型是指一个元素在页面中的显示区域。它由四个部分组成:内容区、内边距区、边框区和外边距区。内容区包含了元素的实际内容;内边距区是内容区和边框区之间的空白区域;边框区是围绕内容区和内边距区的线条;外边距区是边框区和相邻元素之间的空白区域。盒模型可以帮助开发者更好地控制元素的大小、位置和样式。 6. 请解释一下JSP中的EL表达式。 答:JSP中的EL(Expression Language)表达式是一种用于在JSP页面中插入Java变量和表达式的简单语法。它使用${}符号将Java表达式嵌入到HTML或文本中。例如,${name}可以显示一个名为“name”的Java变量的值。EL表达式可以使代码更简洁、易于维护和重用。 7. 请解释一下HTML和XHTML的区别。 答:HTML和XHTML都是Web页面标记语言,但它们的语法不同。HTML的语法比较宽松,允许省略标签和属性的引号等。而XHTML的语法比较严格,要求标签和属性必须闭合,并且必须小写。另外,HTML和XHTML处理错误的方式也不同,HTML会尝试自动修复错误的标记,而XHTML则会抛出错误。 8. 请解释一下CSS中的浮动(float)属性。 答:CSS中的浮动(float)属性是一种用于控制元素在页面中的位置和布局的方法。浮动元素会脱离文档流,并尽可能地靠近容器的左侧或右侧。浮动元素可以与其他元素进行对齐,也可以与其他浮动元素进行堆叠。浮动元素通常用于创建多列布局或图像浮动等效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiang想`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值