Java面试-Web基础与数据处理

第1章 Java Web基础

1-1请说明Servlet执行流程

客户端向tomcat服务器发送http请求,包含servlet映射地址和要传递的参数–》tomcat解析每一个web.xml文件,找到与之匹配的url和对应的servlet name–》根据servlet name找到对应的servlet,并对这个servlet进行实例化和初始化–》tomcat执行servlet实例中的方法–》方法运行后把程序执行结果通过响应返回浏览器–》浏览器接收到这段代码后进行解释。
在这里插入图片描述
Servlet实例化时机:
servlet默认情况下是第一次访问的时候实例化的,也可以通过web.xml配置loadon-startup,使其在十五期启动时候实例化

servlet在并发环境下是如何处理的?
servlet是基于单例多线程处理的并发情况。利用多线程技术提供web服务。

多线程处理的情况下,如何解决线程安全问题?
所有的线程,都共享一个servlet实例。所以我们在使用servlet时,不允许在servlet内创建,存在状态的变量和对象。因为这样会在并发访问时产生无法预期的结果。

1-2 Servlet生命周期

1、装载–java应用程序启动的时候,tomcat会扫描web.xml文件,得知当前有哪些servlet.(装载时并不会实例化Servlet)(创建时java层面的对象创建)
2、创建–当 url 第一次访问servlet地址的时候进行创建。同时执行构造函数。
3、初始化–servlet在创建对象以后,马上执行init()初始化函数,对servlet进行初始化。(初始化,是servlet自身专门用于初始化servlet执行资源的方法)
4、提供服务–service()方法。
servlce()方法–对于发来的请求(无论是post/get),一律使用servlet方法接收处理。
如果将请求细化,service()方法下还可以细化为doGet()/doPost()方法。doGet()–只处理get请求,doPost()–只处理post请求。
5,销毁–在web应用重启或关闭时使用destory()方法将servlet的资源彻底销毁。

1-3请求与响应的结构

请阐述HTTP请求的结构:
HTTP请求包含三部分:请求行、请求头、请求体

请求行–通常在HTTP的第一行,说明了发送的方式(get/post),发送的地址、和HTTP的版本号。

请求头–说明了,从浏览器到服务器发送到辅助信息。
Accept-Language:zh-CN 说明浏览器优先使用中文
User-Agent:代表了用户的使用环境(判断用户使用的是手机还会电脑进行的访问,然后根据浏览器的规格不停进行不同的展现)
Content-Type:说明了提交的表单的格式

请求体–由浏览器向服务器发送的真实数据,请求题中,数据使用键值对的形式“键”和“值”之间使用“=”连接。多个键值对之间使用“&”进行分隔。(请求体,只有在post请求中才会存在,get请求中是没有请求体这一项的)请求体会被附加在url 后面发送到服务器。
在这里插入图片描述
请阐述响应的结构
响应–有服务器返回给浏览器的结果
HTTP响应包含3部分内容:响应行、响应头、响应体。
响应行–通常在响应的第一行,包含http版本、状态码、状态码的英文描述
200–表示访问成功
404–表示资源未找到
500–代表的是服务器的内部错误。

响应头–表述了返回数据的一些辅助信息,使用了哪种web服务器、
Service–表示使用了哪种web服务器、
Content-Type:表示数据返回给浏览器以后,浏览器采用什么样的方式进行处理呢。(text/html–表示把返回的数据解释成html进行显示)
Date–响应数据产生的时间

响应体–服务器向浏览器返回的真实数据,(html片段、二进制的内容、xml)
在这里插入图片描述

1-4请求转发与响应重定向的区别

javaweb中有两种资源跳转的方式:
1、请求转发–是服务器跳转,只会产生一次请求。会将请求原封不动的转发给下一个请求。(服务器跳转)
语法:request.getRequestDispatcher().forward();
执行过程:浏览器向tomcat发送一个请求–》tomcat收到请求后,使用对应servlet对请求进行处理–》并在处理完后执行request.getRequestDispatcher().forward();–》把请求原封不动派发给另一个servlet–》servlet2对请求进行处理后,产生响应对象–》通过tomcat把对应响应结果发送给浏览器–》浏览器看到最终响应结果(全局有且只有1个请求,且资源的跳转是在服务器内部产生的,浏览器感觉不到)
地址栏:请求转发只会显示唯一请求的url
在这里插入图片描述
2、响应重定向:是浏览器端的跳转,会产生2次请求
语法:response.sendRedirect()
执行过程:浏览器向tomcat发起请求–》送达后servlet1调用response.sendRedirect()方法,返回一个响应通过tomcat发给浏览器,告诉浏览器创建一个新的请求–》浏览器接收到信息,发送第二个请求给servlet2–》servlet2对请求2进行处理,并把结果返回给浏览器–》浏览器显示结果
地址栏:只会显示第二次响应的url

在这里插入图片描述

1-5请阐述Session的原理

session–又被称为用户会话,与客户端浏览器窗口绑定的,且存储在服务器内部的用户数据。
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器的cookie中。只要浏览器没关闭,这个cookie是一直存在的。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。
在这里插入图片描述

1-6 JSP九大内置对象

在这里插入图片描述

第2章 数据处理

2-1 Statement和PreparedStatement的区别

1、reparedStatement是预编译的SQL语句,效率高于Statement。尤其执行复杂SQL语句或频繁执行某一SQL时,执行效率优势更明显。
2、PreparedStatement是支持参数化操作的,相比于Statement使用字符串连接阻止SQL语句更加灵活。可读性更好
3、PreparedStatement可以防止SQL注入,安全性高于Statement

public class StatementSample {
   
    //使用Statement
    public void findByEname1(String ename) {
   
        String driverName = "com.mysql.jdbc.Driver"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值