1、简述HTTP1.1协议的通信过程?
HTTP1.1协议的通信过程如下:
客户端与服务器端建立TCP连接。
客户端可以向服务器端发送多个请求,并且在发送下个请求时,无需等待上次请求的返回结果。
服务器必须按照接受客户端请求的先后顺序依次返回响应结果。
客户端发出关闭TCP连接的请求。
服务器端关闭TCP连接。
2、简述POST请求和GET请求有什么不同?(至少2点)
POST传输数据大小无限制
POST比GET请求方式更安全
3、请列举出Tomcat安装目录下的子目录,并对其进行简要说明?(至少列出5个)
Tomcat安装目录下的子目录及其说明如下:
bin:用于存放Tomcat的可执行文件和脚本文件(扩展名为.bat的文件),如tomcat7.exe、startup.bat;
conf:用于存放Tomcat的各种配置文件,如web.xml、server.xml;
lib:用于存放Tomcat服务器和所有Web应用程序需要访问的JAR文件;
logs:用于存放Tomcat的日志文件;
temp:用于存放Tomcat运行时产生的临时文件;
webapps:Web应用程序的主要发布目录,通常将要发布的应用程序放到这个目录下;
work:Tomcat的工作目录,JSP编译生成的Servlet源文件和字节码文件放到这个目录下。
4、请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用。
Servlet接口中有init、service、destroy 、getServletConfig和getServletInfo这 5个方法,这些方法的特点及其作用具体如下:
1)init(ServletConfig config)方法,该方法在服务器对Servlet第一次访问时调用,负责Servlet初始化工作。在一个Servlet的生命周期中只执行一次。该方法接收一个ServletConfig类型的参数,Servlet容器可以通过这个参数向Servlet传递初始化配置信息。
2)service(ServletRequest request,ServletResponse response)方法,该方法负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。
3)destroy()方法,该方法方法负责释放Servlet对象占用的资源。当Servlet对象被销毁时,容器会调用此方法。
4)getServletConfig()方法,该方法返回容器调用init(ServletConfig config)方法时传递给Servlet的ServletConfig对象。
5)getServletInfo()方法,该方法返回一个字符串,其中包含了关于Servlet的信息,例如,作者、版本和版权等信息。
5、简述ServletContext接口的三个主要作用。
1)获取Web应用程序的初始化参数
2)实现多个Servlet对象共享数据
3)读取Web应用下的资源文件
6、简述请求转发与重定向的异同?(至少写3点)
请求转发与重定向的异同点如下:
1)请求转发和重定向都可以实现访问一个资源时转向当前应用资源
2)请求转发是一次请求一次响应,而重定向为两次请求两次响应
3)一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力
4)如果需要改变浏览器的地址栏,或更改浏览器的刷新按钮的功能时需要使用重定向
7、简述什么是会话技术?
会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程。在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和Session。
8、简述Cookie与Session的区别?(至少写出3点)
1)Cookie和HttpSession是保存会话相关数据的技术,其中Cookie将信息存储在浏览器端,是客户端技术,Session将数据保存在服务器端,是服务器端技术
2)Cookie是基于HTTP协议中的Set-Cookie响应头和Cookie请求头进行工作的
3)默认情况下HttpSession是基于一个名称为JSESSIONID 的特殊Cookie工作的
4)浏览器对Cookie具有严格的限制,一个网站能在浏览器中保存多少Cookie是有限制的
5)HttpSession默认是基于Cookie运作的。
9、请简述JSP的运行原理。
1)客户端发出请求,请求访问JSP文件。
2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果发现JSP文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
3)如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。
4)由Servlet容器加载转换后的Servlet类(.class文件)创建一个该Servlet(JSP页面的转换结果)实例,并执行Servlet的jspInit()方法。jspInit()方法在Servlet的整个生命周期中只会执行一次。
5)执行jspService()方法来处理客户端的请求。对于每一个请求,JSP容器都会创建一个新的线程来处理它。如果多个客户端同时请求该JSP文件,则JSP容器也会创建多个线程,使得每一个客户端请求都对应一个线程。JSP运行过程中采用的这种多线程的执行方式可以极大地降低对系统资源的需求,提高系统的并发量并缩短响应时间。需要注意的是,由于第(4)步生成的Servlet是常驻内存的,所以响应速度非常快。
6)如果JSP文件被修改了,则服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则使用重新编译后的结果取代内存中常驻的Servlet,并继续上述处理过程。
7)虽然JSP效率很高,但在第一次调用的时候往往由于需要转换和编译,所以会产生一些轻微的延迟。此外,由于系统资源不足等原因,JSP容器可能会以某种不确定的方式将Servlet从内存中移除,发生这种情况时首先会调用jspDestroy()方法,然后Servlet实例会被加入“垃圾收集”处理。
8)当请求处理完成后,响应对象由JSP容器接收,并将HTML格式的响应信息发送回客户端。
10、简述过滤器的作用。
Filter被称作过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。
11、简述Servlet事件监听器的作用。(写出两点)
1)监听Web应用程序中ServletContext、HttpSession和ServletRequest等域对象的创建和销毁过程。
2)监听ServletContext、HttpSession和ServletRequest等域对象属性的修改。
12、请简述什么是JDBC。
JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等处理。