面试题集锦(五)

  1. execute,executeQuery,executeUpdate的区别是什么?
    execute:可以处理的所有的SQL语句,DDL、DML、DCL、DQL,如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返回false。
    executeQuery:主要执行查询语句DQL,返回一个ResultSet对象。
    executeUpdate:主要处理增删改语句,以及DDL语句,返回受SQL语句执行影响的行数。使用此方法执行预期会影响多个行的SQL语句。
  2. JDBC的PreparedStatement是什么?与Statement的区别?
    遵从Statement接口,用于创建对象将SQL语句提交到数据库,定义了能够发送SQL命令并从数据库接收数据的方法和属性,计划多次使用SQL语句时使用,PreparedStatement接口在运行时接受输入参数。
接口使用
Statement用于对数据库进行通用访问。在运行时使用静态SQL语句时很有用。Statement接口不能接受参数,会发生SQL注入问题
PreparedStatement(推荐使用)当您计划多次使用SQL语句时使用。PreparedStatement接口在运行时接受输入参数,可以避免SQL注入问题,提高安全性
  1. 什么是JDBC,在什么时候会用到它?
    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
    当需要与数据库建立连接、发送 操作数据库的语句并处理结果的时候使用。
  2. MySQL中约束有哪些?
    not null / primarykey / unique / default / 外键约束foreign key
  3. JDBC中常用接口和类有哪些?
    (1)Connection接口
    (2)Statement接口
    (3)PreparedStatement
    (4)ResultSet接口
    (5)DriverManager类
  4. Tomcat中如何发布一个web程序?
    (1)直接将web项目文件复制到【TomCat安装目录下的webapps目录下】,然后启动【bin目录下的startup.bat】,启动服务器,在浏览器中输入【http://localhost:8080/web项目文件名称】进行访问。
    (2)在IDEA或者eclipse开发工具中,可以直接启动项目,然后在地址栏补充输入对应的静态页面文件名称。
    (3)可以通过IDEA和eclipse开发工具,将项目导出war包,直接复制到【TomCat安装目录下的webapps目录下】,同(1)操作方式
    (4)不必将web项目拷贝到webapps下,而是更改【Tomcat目录下的conf文件夹下的server.xml文件】,在<host>标签内添加<Context>标签
<!--
1.将所在目录写到docBase中
2.reloadabl为false,在发布阶段可以提高访问速度,在开发阶段可以方便开发,改为true
3.path为访问路径,这样可以通过【localhost:8080/0831web】路径访问
-->
<context docBase="F:/0831web" reloadable="false" path="/0831web" />

(5)在【Tomcat安装目录下的conf\Catalina\localhost】中添加一个xml文件,如0831web.xml,添加如下内容:

<!--没有path,服务器会使用.xml文件的名字作为路径-->
<Context docBase="F:/PetWeb" reloadable="false" />
  1. 简述浏览器访问服务器页面的流程?
    (1)建立TCP连接
    (2)浏览器向web服务器发送一条HTTP请求报文

    报文包含
    请求行:用来说明客户端想要做什么
    请求头:通过客户端把请求的相关信息发给服务器,包括媒体类型、语言类型、支持压缩、客户端类型、主机等信息
    空行:告诉服务器空行以下内容不属于请求头部信息
    请求报文主体:用来说明客户端具体想要做的事情

    (3)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

    报文包含
    状态行:用来说明服务端响应客户端的状态,200ok
    响应头:通过服务端把响应的相关信息给客户端
    空行:告诉客户端空行以下内容不属于响应头部信息
    请求报文主体:用来装载着要返回给客户端的数据

    (4)web服务器关闭HTTP连接,关闭TCP连接,web服务器显示访问的网站内容到屏幕上

  2. request.getAttribute()和request.getParameter()的区别?
    getAttribute()作为一个集合使用,必须先放入数据,才能获取数据。
    getParameter()直接获取值,进行处理。

  3. 有一个Html页面,有四个图片,访问页面,浏览器一共向服务器请求几次?
    5次,一次请求一个资源,第一次请求是网址/xxx.html,头请求,然后四次是每次都请求一个资源,获取图片。

  4. cookie和session原理?
    详细原理参考《Web的状态管理——Cookie和session技术的使用》
    Cookie:客户端状态管理,保存一小段信息,第一次访问时服务器,服务器cookie响应给浏览器,下次再访问服务器时,把cookie回传给服务器,服务器收到cookie。
    session:服务器端状态管理,是一个map集合,session使用sessionid区别,服务器会把SessionId作为cookie的值发送给浏览器,浏览器再次访问服务器时,服务器读取到cookie(sessionid)。

  5. 为什么说session 比cookie更安全?
    session的ID比较难以破解,此外除了id以外的数据不需要在网络中进行传输,这样由于数据量少,不易被拦截,即使被拦截了,由于是无序串,也不易处理和伪造。
    sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。
    sessionID是在服务器端生成的,会话结束也就销毁了,而cookie却存留在用户硬盘中,显然前者更安全。

  6. Jsp和Servlet的区别

    1. Servlet:运行在服务器上的java小程序。适合编写java代码,写网页困难,适合业务处理
    2. Servlet三个用途:(1) 接受浏览器发送的数据 (2)负责调用业务层 (3)转发重定向
    3. JSP:适合编写动态内容,不适合写java代码,主要用于显示页面
    4. 与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句
  7. Jsp的执行原理
    (1)JSP引擎先把该JSP文件转换成一个Java源文件(Servlet),在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息。
    (2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。
    (3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspInit()方法被执行,jspInit()方法在Servlet的生命周期中只被执行一次。
    (4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注意多线程的编程限制,由于该Servlet始终驻于内存,所以响应是非常快的。
    (5)如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。
    (6)虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延 迟。此外,在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用。
    (7)然后Servlet实例便被标记加入“垃圾收集”处理。可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。

在这里插入图片描述

  1. 说说Jsp的内置对象有哪些?方法有哪些?
对象名类型说明方法
requestjavax.servlet.http.HttpServletRequest请求对象请求方式:request.getMethod()
请求的资源:request.getRequestURI()
请求用的协议:request.getProtocol()
请求的文件名:request.getServletPath()
请求的服务器的IP:request.getServerName()
请求服务器的端口:request.getServerPort()
客户端IP地址:request.getRemoteAddr()
客户端主机名:request.getRemoteHost()
responsejavax.servlet.http.HttpServletResponse响应对象重定向客户端请求 response.sendRedirect(index.jsp)
sessionjavax.servlet.http.HttpSession会话对象获取Session对象编号 session.getId()
添加obj到Session对象 session.setAttribute(String key,Object obj)
获取Session值 session.getAttribute(String key)
applicationjavax.servlet.ServletContext全局对象添加obj到Application对象 application.setAttribute(String key,Object obj)
获取Application对象中的值 application.getAttribute(String key)
configjavax.servlet.ServletConfig配置对象getServletConfig() 方法可以获取一个config对象
获取参数名config.getServletName()
exceptionjava.lang.Throwable异常对象exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用
outjavax.servlet.jsp.JspWriter输出对象输出各种类型数据 out.print()
输出一个换行符 out.newLine()
关闭流 out.close()
out.write()
pageContextjavax.servlet.jsp.PageContext页面上下文对象pageContext.getAttribute()
通过它可以获取 JSP页面的out、request、reponse、session、application 等对象
pagejava.lang.Object当前对象this当前servlet实例 ,当前页面对象当前页面page.getClass()
  1. 说说Jsp的隐藏对象有哪些?
    共11个:
    (1)pageContext:页面上下文,可以获取jsp中其他八个内置对象
    (2)pageScope、requestScope、sessionScope、applicationScope表示四个域对象中集合
    (3)param 表示【request.getParameter(“username”); 或 ${param.username} 】
    (4)paramvalues 表示【request.getPrameterValues(“hobby”) 或 ${paramValues.hobby}】
    (5)header 表示【request.getHeader(“accept”); 或 ${header.accept};】 request.getHeader(“accept”); 或 ${header.accept}
    (6)headerValues 表示 【request.getHeaderValues(“accept-encoding”); 或 ${headerValues[“accept-encoding”][0]}】
    (7)cookie 表示【request.getCookies(); 或 ${cookie.JSESSIONID}】
    (8)initParam 表示 ServletContext(application)初始化参数
  2. JSP的四个域对象有哪些?
    jsp中共包含四个域对象分别是request、session、application、pageContext:
    (1)request域的使用场景:本次请求之后,数据就不再使用了,根据学号查询学生,根据新闻id查询新闻。
    (2)session域的使用场景:同一个会话中共享的数据,使用session,用户登录信息
    (3)application域的使用场景:所有用户共享的数据。整个程序的配置信息
    (4)pageContext域的使用场景:当前页面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值