与JavaWeb相关的面试题(上)

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

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

  1. get 是从服务器上获取数据,post 是向服务器传送数据。
  2. 请求的时候参数的位置有区别:get 的参数是拼接在 url 后面,用户在浏览器地址栏可以看到;post 是放在 http 包的包体中
  3. 能提交的数据有区别,get 方式能提交的数据只能是文本,且大小不超过 1024 个字节,而 post 不仅可以提交文本还有二进制文件。

所以说想上传文件的话,那我们就需要使用 post 请求方式

  1. get 安全性非常低,post 安全性较高;比如说用户注册,不能把用户提交的注册信息用 get 的方式,会把用户的注册信息都显示在

Url 上,是不安全的。

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

3、说一说 Servlet 的生命周期
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()
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 的区别
转发与重定向
(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 的常用指令
(1)page 指令: 属性最多的指令(实际开发中 page 指令默认),属性最多的一个指令,根据不同的属性,指导整个页面特性
格式:<%@ page 属性名 1= "属性值 1" 属性名 2= "属性值 2" ...%>
常用属性如下:
language:jsp 脚本中可以嵌入的语言种类,这个没用,写与不写一样的;
pageEncoding:当前 jsp 文件的本身编码---内部可以包含 contentType
contentType:response.setContentType(text/html;charset=UTF-8)
import:导入 java 的包
errorPage:当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
(2)include 指令: 页面包含(静态包含)指令,可以将一个 jsp 页面包含到另一个 jsp 页面中
格式:<%@ include file="被包含的文件地址"%>
(3)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" %>

相关文章
|
XML 存储 JSON
16道超详细JavaWeb面试题整理
本节小编整理了16道JavaWeb常考的面试题,面试前看一看,或许可以让您在学习 JavaWeb上少走许多弯路,也希望助您拿下心仪offer!
16道超详细JavaWeb面试题整理
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
405 37
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
5月前
|
SQL 存储 前端开发
程序技术好文:面试知识点六:JavaWeb
程序技术好文:面试知识点六:JavaWeb
49 1
|
6月前
|
XML Java 应用服务中间件
美女面试官问你JavaWeb学的怎么样?JavaWEB面试复习看这一篇就够了!!
美女面试官问你JavaWeb学的怎么样?JavaWEB面试复习看这一篇就够了!!
73 0
|
6月前
|
存储 安全 前端开发
2023春招:Javaweb面试锦囊
2023春招:Javaweb面试锦囊
|
XML 存储 Java
[JavaWeb]——面试官:谈谈你对springboot配置文件的理解
[JavaWeb]——面试官:谈谈你对springboot配置文件的理解
|
Web App开发 安全 网络协议
【JavaWeb篇】三分钟学会HTTP协议(面试必会)
【JavaWeb篇】三分钟学会HTTP协议(面试必会)
154 0
|
存储 安全 Java
10道JavaWeb常问面试题
10道JavaWeb常问面试题
108 0
|
前端开发 Java 应用服务中间件
javaWeb 常见面试题 20道,建议收藏
javaWeb 常见面试题 20道,建议收藏
243 0