A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 长沙-小知姐姐 于 2020-1-4 16:24 编辑

面试官常问的 web后台 问题 1-10

1、HTTP 请求的 GET 与 POST 方式的区别
2、解释一下什么是 servlet
3、说一说 Servlet 的生命周期?
4、Servlet 的基本架构
5、什么情况下调用 doGet()和 doPost()?
6、Request 对象的主要方法:
7、forward 和 redirect 的区别
8、jsp 有哪些内置对象?作用分别是什么?
9、JSP 的常用指令
10、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?


1、HTTP 请求的 GET 与 POST 方式的区别

get :从服务器获取数据;传送参数拼接在url后,用户可见,安全性低;提交数据仅限于文本,大小不超过1024字节;
post :向服务器传送数据;传送参数存在http包体中,用户不可见安全性高(用户注册);可提交文本和二进制文件(上传文件选post提交);

get 是从服务器上获取数据,post 是向服务器传送数据。
请求的时候参数的位置有区别:get 的参数是拼接在 url 后面,用户在浏览器地址栏可以看到;post 是放在 http 包的包体中
能提交的数据有区别,get 方式能提交的数据只能是文本,且大小不超过 1024 个字节,而 post 不仅可以提交文本还有二进制
文件。 所以说想上传文件的话,那我们就需要使用 post 请求方式
get 安全性非常低,post 安全性较高;比如说用户注册,不能把用户提交的注册信息用 get 的方式,会把用户的注册信息都
显示在 Url 上,是不安全的。

2、解释一下什么是 servlet

servlet :服务端程序,可动态生成HTML页面发送到客户端,jsp就是servlet;
servlet在mvc项目中负责控制程序逻辑。

Servlet 是服务器端的程序,动态生成 html 页面发送到客户端,但是这样程序里会有很多 out.println(),java 与 html 语言混在
一起很乱,所以后来 sun 公司推出了 JSP.其实 JSP 就是 Servlet,每次运行的时候 JSP 都首先被编译成 servlet 文件,然后再被
编译成.class 文件运行。有了 jsp,在 MVC 项目中 servlet 不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制 jsp
与 javabean 之间的流转。

3、说一说 Servlet 的生命周期?

初始化(加载,init方法)–》处理请求(service方法)–》销毁(服务结束,distroy方法)

Servlet 生命周期包括三部分:
初始化:Web 容器加载 servlet,调用 init()方法
处理请求:当请求到达时,运行其 service()方法。service()自动派遣运行与请求相对应的 doXXX(doGet 或者 doPost)方法。
销毁:服务结束,web 容器会调用 servlet 的 distroy()方法销毁 servlet。

4、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 { }
}

5、什么情况下调用 doGet()和 doPost()?

method=get,调用doGet()方法;
method=post,调用doPost()方法。

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

6、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 指定的参数值
getParametervalues(String name):        获得有 name 指定的参数的所有值
getRequestURI():                                        获取发出请求字符串的客户端地址
getRemoteAddr():                                        获取客户端的 IP 地址
getSession([Boolean create]):                返回和请求相关 Session
getServerName():                                        获取服务器的名字

7、forward 和 redirect 的区别

转发 forward:地址栏不变;可数据共享,效率高;一般用于用户登录;
重定向 redirect:地址栏改变;不可数据共享,效率低;一般用于注销登录或跳转到其他网站;

转发与重定向
(1)从地址栏显示来说
forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览
器,浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址;
redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的 URL。
(2)从数据共享来说
forward:转发页面和转发到的页面可以共享 request 里面的数据.
redirect:不能共享数据.
(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
(4)从效率来说
forward:高.
redirect:低.

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

名称                                 作用
request                         包含用户端请求的信息
response                         包含服务器传回客户端的响应信息
session                         与请求有关的会话期
pageContext                 管理网页属性
application                 服务器启动时创建,服务器关闭时停止,为多个应用程序保存信息
out                                 向客户端输出数据
config                                 servlet 的架构部件
page                                 指网页本身
exception                         针对错误页面才可使用

9、JSP 的常用指令

page指令、include指令、taglib指令

page 指令: 属性最多的指令(实际开发中 page 指令默认),属性最多的一个指令,根据不同的属性,指导整个页面特性。

格式:<%@ page 属性名 1= “属性值 1” 属性名 2= “属性值 2” …%>

常用属性如下:
language:jsp 脚本中可以嵌入的语言种类,这个没用,写与不写一样的;
pageEncoding:当前 jsp 文件的本身编码—内部可以包含 contentType
contentType:response.setContentType(text/html;charset=UTF-8)
import:导入 java 的包
errorPage:当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面

include 指令: 页面包含(静态包含)指令,可以将一个 jsp 页面包含到另一个 jsp 页面中。

格式:<%@ include file=“被包含的文件地址”%>

taglib 指令: 在 jsp 页面中引入标签库(jstl 标签库、struts2 标签库)。

格式:<%@ taglib uri=“标签库地址” prefix=“前缀”%>

10、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?

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

原文链接:「止南」 https://blog.csdn.net/qq_44641053/article/details/103770320

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马