Java-Web基础与数据处理

本文详细介绍了Java Web中的Servlet执行流程,包括Servlet的生命周期、请求与响应的结构、请求转发与重定向的区别,以及Session的工作原理。此外,还讨论了Statement与PreparedStatement的区别,JDBC的使用步骤,以及JSP的九大内置对象。通过对这些核心概念的讲解,有助于深入理解Java Web开发的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.请说明Servlet执行流程

一:Servlet执行流程
在这里插入图片描述

1、客户端向tomcat服务器发送http请求(该请求包含了访问servlet的映射地址和要传递的参数)
2、tomcat解析web应用程序的web.xml文件,找到与之匹配的url同时找到对应的servlet-name;
通过web.xml配置的servlet-name找到FirstServlet类,对该servlet类进行实例化和初始化
3、tomcat执行FirstServlet实例的service()方法(细分为doGet()和doPost()方法),执行其中的服务代码
4、service()方法执行完成之后,通过响应将内容返回给浏览器,浏览器接收到servlet生成的代码,并显示到浏览器

二:Servlet是什么时候被实例化的?
Servlet默认情况下是第一次访问的时候实例化的;也可以通过web.xml配置load-on-startup(0),使其在服务器启动的时候实例化。

三:Servlet在tomcat中有几个对象?
Servlet全局在tomcat中有且只有唯一的一个对象(在第一次访问时创建对象,之后就不再创建),tomcat并不会创建多个实例;

四:在并发情况下Servlet是如何处理的?
Servlet处理是基于单利多线程,利用多线程技术来提供web服务。
注意线程安全的问题:因为所有的线程都共享了一个Servlet的实例,因此在使用Servlet的时候,不允许在Servlet内创建存在状态的变量或者对象,否则在并发访问时出现无法预期的结果。

2.Servlet的5个生命周期

1、装载-web.xml:第一次启动装载web.xml,这时并不会创建servlet对象
2、创建-构造函数:对servlet类进行创建(new)
3、初始化-init():对servlet进程初始化
4、提供服务-service():重写service方法,service方法下面派生出doGet()、doPost()方法
5、销毁-destroy():web应用(tomcat)重启或关闭,servlet则会执行destroy()方法,销毁servlet对象

3.请求与响应的结构

一:请说明HTTP请求的结构
1、HTTP请求包含三个部分:请求行、请求头、请求体
在这里插入图片描述
二:请说明响应的结构
1、HTTP响应包含三个部分:响应行、响应头、响应体
在这里插入图片描述

4.说明请求转发与响应重定向的区别

一:请求转发
请求转发是服务器跳转,tomcat全局只会产生一次请求
请求转发语句是:request.getRequestDispatcher("/direct/index").forward(request, response);
请求转发是在tomcat内部完成的:
在这里插入图片描述

二:响应重定向
重定向则是客户端浏览器端跳转,tomcat全局会产生两次请求;Servlet1和Servlet2接到的请求是完全不同的,因此两次请求之内的数据无法共享。
响应重定向语句是:response.sendRedirect("/servlet-advanced/direct/index");
原理:
在这里插入图片描述

5.请阐述Session的原理

一:session用户会话介绍
Session(用户会话)用于保存与“浏览器窗口”对应的数据。
Session的数据存储在tomcat服务器的内存中,具有时效性。
Session通过浏览器cookie的sessionId值提取用户数据。

二:session实现原理
浏览器向tomcat发送请求,tomcat发送该请求是全新的请求,在tomcat内存中开辟一个存储空间,并给其一个ID号(SessionId:7U809JP),在7U809JP的存储空间中设置name=张三 属性,tomcat处理完成后需返回响应,而SessionId:7U809JP会随着响应返回给浏览器,浏览器会将session存储在cookie中;
只要该cookie还在有效期内这个SessionId:7U809JP 会随着请求一并发送给tomcat,tomcat收到请求后通过sessionId查询到内存中有该值则将其返回。
在这里插入图片描述

6.JSP九大内置对象

在这里插入图片描述
&& request与response是成对出现的。
&& application(ServletContext) 可以存放全局的变量,因此可以实现用户之间的数据共享;它的声明声明周期与服务器的生命周期是一样的,服务器启动application对象被创建,服务器关闭application对象被销毁。

7.Statement和PreparedStatement的区别

一:区别

  1. PreparedStatement是预编译的sql语句,效率高于Statement
  2. PreparedStatement支持 ?号 操作符,相对于Statement更灵活

二:PreparedStatement介绍
1、PreparedStatement预编译statement是statement的子接口
2、PreparedStatement对sql进行参数化,预防sql注入攻击
3、PreparedStatement比statement执行效率更高
4、编码对比如下
使用statement编写的原始代码:
在这里插入图片描述
PreparedStatement预编译修改代码:
在这里插入图片描述
相关的类:HumanResourceApplication、Commad、PstmtQueryCommad

8.请说明JDBC使用步骤

1、加载JDBC驱动
Class.forName(driverName)
2、创建数据库连接(Connection)
Connection conn = DriverManager.getConnection(SQL URL, username, password)
3、创建命令(Statement/PreparedStatement)
Statement ps = conn.createStatement();
4、处理结果(ResultSet)
ResultSet rs = ps.executeQuery(sql);
5、关闭连接()
conn.close();

9.EL、JSTL表达式与Freemarker模板引擎

10.SQL编程训练-1

11.SQL编程训练-2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值