web开发面试题总结----2019持续更新

本文收录了自己平时总结的于web开发相关的所有面试题,有需要的朋友可以看看。

.1.JDBC连接数据库的几个操作步骤//JDBC的开发步骤//

.一、注册数据库驱动;

.二、获得数据库连接对象;

.三、预编译sql语句;

.四、执行sql获取查询结果集;

.五、处理结果集,释放数据库资源。

//关闭的顺序是先得到的后关闭,后得到的先关闭//

 

.2.JSP中动态包含include与静态包含include有什么区别?

动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,是两个不同的java类,是一个调用关系,在运行时动态的调用,变量可以重复。

静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>.在将jsp生成servlet类前将两个文件和在一起,生成一个java类,一起运行,所以当中的变量不能重复。

JSP侧重于视图,Servlet主要用于控制逻辑。

 

.3.forward转发和redirect重定向有什么区别?

.一、重定向可以在地址栏中看见目标页面的URL;请求转发只能看见第一次访问页面的URL,后面的工作都是在服务器内部完成的。

.二、请求转发,调用者和被调用者共享一个requests对象和response对象;而重定向中调用者和被调用者属于独立的两个请求和响应过程。

.三、从应用场景来看:

Forward:一般用于用户登录的时候,根据角色转发到相应的模块。

Redirect:一般用于用户注销系统时返回主页面和跳转到其他的网站等等。

.四、请求转发只能将请求转发到同一个WEB服务器中的组件中;而重定向可以跳转到不同的WEB服务器的站点中。

.五、重定向后,必须在后面加上return语句,否则页面跳转了,后面的代码还会继续执行;转发执行了跳转页面后,下面的代码就不会在执行了。

写法:

请求转发的写法:RequestDispatcher.forward。

重定向的写法:HttpServletResponse.sendRedirect。

 

.4.描述Cookie和Session的作用、区别和各自的应用范围,Session工作原理//

Cookie主要用于在客户端(浏览器)中保存数据,其值在客户端与服务器之间传送,不安全,存在大小和数量的限制。

Session保存在服务器端,每一个Session在服务器端都有一个SessionID作为一个唯一标识。存储的数据量大,安全性高,占用服务器端的内存资源。https://blog.csdn.net/bwf_erg/article/details/53081187

 

.5.JSP的9大内置对象?

Request:表示HttpServletRequest对象。可以获取客户端表单域信息以及cookie,header和session信息。

Response:表示HttpServletResponse对象,对客户端的响应返回文本信息等。

pageContext

session

application

out

config

page

exception

 

.6.Request对象的主要方法:

setAttribute(String name,Object):设置名字为name的request的参数值

getAttribute(String name):返回由name指定的属性值

getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body的长度;

 

.7.get请求和post请求的区别?

.一、get请求有数据长度限制,post请求没有数据长度的限制。

.二、get请求会把请求的参数显示在地址栏中,而post请求不会,它会把请求的参数放在http的包体中,所以相对来说,post请求更安全些。

.三、get请求一般用于从服务器获取资源,post请求一般用于向服务器提交数据;

.四、get请求的页面可以保存在浏览器的历史记录中,而post请求不会保存在浏览器的历史记录中。

.五、get请求可以被缓存,而post请求不会被缓存。

 

 

.8.Servlet的生命周期?

什么叫生命周期:就是一个类从创建到销毁的过程。

用户第一次访问servlet时创建Servlet实例,Servlet中的Init()方法就会执行;以后的任何一次请求,服务器都会创建一个新的线程访问Servlet中的Service方法;在service方法内部,根据访问方法的不同,调用对应的doPost方法或者是doGet方法;当项目从服务器中移除,或者关闭服务的时候Servlet实例就会销毁,这是就会调用destroy方法。

 

.9.ServletContext的作用?

.一、用来获得全局初始化参数;

.二、用来获取文件mime类型;

.三、作为域对象存取数据(比如用来记录当前在线人数);作用范围:整个web工程;创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独的ServletContext对象.

    * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.

.四、用来读取web项目下的文件.

 

.10.文件下载时,有什么注意事项?

需要设置两个头和一个流;

* Content-Type :文件的MIME的类型.

* Content-Disposition :以下载的形式打开文件.

 * InputStream :文件的输入流.

 

.1.get乱码和post乱码的解决方法?

在web.xml中配置过滤器可以解决post的中文乱码问题。

Get的乱码解决方法:使用URLEncoder和URLDecoder进行编码和解码的操作,可以解决乱码问题.

 

.2.JSP的执行过程:Jsp会被翻译成Servlet,编译成class后再进行执行。

 

.3.session是域对象,它何时创建何时销毁?

创建:服务器端第一次调用getSession时创建session;

销毁:分三种情况:.1.session过期,默认有效时间为30分钟;.2.非正常关闭服务,正常关闭服务器时,session序列化到硬盘;.3.手动调用session.invalidate()进行销毁。作用范围:多次请求,一次会话;

 

.4.JDBC的事务?什么是事务?

事务是指逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起执行成功,要么一起执行失败。四个特性:

原子性:强调事务的不可分割,要么全部执行完成,要么全部不执行;

一致性:强调事务执行前后,数据的完整性要保持一致;

隔离性:一个事务的执行,不应该受到其他事务的干扰;

持久性:一旦事务结束提交或者回滚,数据就持久的保存到了数据库;

 

.5.事务的隔离级别:

.1.读未提交;脏读,不可重复读,幻读都有可能发生;

.2.读已提交;不可重复读,幻读有可能发生(ORacle的默认隔离级别);

.3.可重复读;幻读可能发生(MYSQL数据库的默认隔离级别);

.4.串行化;

 

.6.数据库去重方案;

.一、delete a from test_user a left outer join test_user b on a.user_id=b.user_id where a.id<b.id;  

.三、delete a 

from test_user a left join( 

select MAX(id) AS id from test_user group by namea,nameb ,user_id desc

)b on a.id=b.id 

where b.id is null;   

 

.二、delete from test_user where id in (select  id from (select id from test_user where (namea,nameb,user_id) in 

(select namea,nameb,user_id from test_user group by namea,nameb,user_id having count(*) > 1) and 

 id not in (select max(id) from test_user  group by namea,nameb,user_id having count(*) > 1)) x);  

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值