Web答辩问题整合一

Web答辩问题整合1
1. css和div 开发的优势?
A、显示和内容实现分离
B、有利于搜索引擎搜索
C、有利于维护和程序的扩展
2. 谈谈页面间的参数传递有哪些方式 ?
A、通过作用域对象session、request 的setAttribute()和getAttribute()方法进行参数传递。
B、


C、request.gerRequestDispatcher(“1.jsp?name=XX”).forward(request,response);
D、
3. hidden表单域有什么作用?
A、多个表单的区分
B、多个提交按钮
4. jsp有哪些内置对象?
pageContex,request,session,application,out,exception,config,page,
5. request的作用有哪些?
获取客户端传递的参数值
获取客户端请求头信息
获取会话
获取转发对象
可作为容器使用, 利用setAttribute()和getAttribute()方法进行参数传递
6. session有什么作用。
因为http协议是无状态的协议,但我们需要保存客户端在多次请求之间状态信息的时候,我们需要session来维护客户端的状态
Session对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据

  1. application有什么作用。
    保存的一些全局性的对象信息。
  2. 在jsp中怎样操作page作用域
    特定于 JSP 的一个类型,代表当前的 JSP 页面。pageContext.setAttribute(“java”,”lovo”);
  3. jsp有哪些动作?作用分别是什么?
    包含
    转发到另一页面相当于
    request.getRequestDispatcher(“1.jsp?name=XX”).forward(request,response);
    设置javaBean
    设置属性
    获得属性
    设置插件
  4. java servlet api中forward() 与redirect()的区别?
  5. forward客户端请求服务器一次,redirect请求服务器两次,所以forward方式可以获得request作用域的信息,而redirect方式不能获得。
  6. forward由request对象发出,而redirect由response对象发起
  7. redirect()可以跨越不同的工程之间。而forward()只能在一个工程中使用
  8. class.forname的作用?为什么要用?
    加载类;一般使用这个方法是反射方式创建对象;从而可以将一些类信息写在文件中,避免硬编码,增加灵活性。
  9. 分页是怎么实现的?
    Select top 5 * from 表名 where id not in(select top 10 id from 表名)
  10. cookie被禁止后怎样使用session?
    URL重写,对所有页面涉及的连接都使用url重写方式。从而将JsessionID以参数的方式链接到URL后面。保证每次页面提交时服务器都能获得sessionID,从而维持和客户端的状态。
  11. 项目开发经历了哪几个阶段?
    需求分析,设计(找用例,写用例文本,找实体,编写数据字典,画数据流图),编码,测试,部署;
  12. 谈谈项目的体系统架构:(客户层,表示层)web层,业务层,数据层?
    客户层:IE浏览器,Applet小应用程序,在客户度允许
    表示层:html静态页面,jsp页面,servlet在服务器上运行;
    业务层:实现业务逻辑,服务器提供系统级服务,如事务管理,安全性,并非控制
    数据层:如dao部分,实现对数据的增删改查等。

  13. J2EE规范中的组件技术在项目中用到了哪些?
    JDBC,jsp,servlet,javabean,xml,JNDI

  14. TCP/IP通讯和UDP通迅的区别?
    1) TCP/IP面向连接,可靠连接,UDP面向不连接,不可靠连接
    2) 建立连接经历3次握手,udp无需连接,ip和port封装在datagram数据包中,自寻址。
  15. 浏览器和WEB服务器是用什么协议通迅的?
    应用层使用的是 HTTP协议,传输和路由使用的是TCP/IP
  16. 网络通讯中,端口有什么含义。端口的取值范围?
    端口用于区分基于TCP/IP通讯的不同应用程序, 每个基于TCP/IP应用程序都会向操作系统申请注册一个服务,这个服务用端口表示。本质上说,端口就是一段内存中的缓冲区。可以认为是计算机与外界交流的出口。
    建议用户使用的端口号 1024—–65535系统使用的端口范围0 — 1024
  17. 说出3个常见协议的默认端口。
    Web服务器80,ftp 21,telenet 23,smtp 25
  18. socket是什么,它有什么作用?
    Socket是通讯的端点,是客户端和服务器进行通讯的端点
  19. TCP/IP通讯的基本步骤是什么?
    基于TCP/IP通讯的程序:必须先建立和服务器端的连接,然后才能通讯。
    服务器端:ServerSocket ss = new ServerSocket(port); 创建serverSocket对象
    ss.accept()在port端口监听,等待客户端请求到来
    客户端: Socket s = new Socket(ip,port); 建立和服务器的连接;连接不成功,抛出异常
    s.getOutputStream()和s.getInputStream()和向服务器发送请求信息和接收服务器返回的信息
  20. UDP通讯的基本步骤是什么?
    1) 创建DatagramSocket对象
    2) 通过datagramSocket发送(接收)datagramPacket数据包
    3) 从datagramPacket数据包中取出接收和封装要发送的数据
  21. JDBC访问数据库的基本步骤是什么?
    1) 加载驱动
    2) 通过DriverManager对象获取连接对象Connection
    3) 通过连接对象获取会话
    4) 通过会话进行数据的增删改查,封装对象
    5) 关闭资源
  22. 说说preparedStatement和Statement的区别
    1) 效率:预编译会话比普通会话对象,数据库系统不会对相同的sql语句不会再次编译
    2) 安全性,可以有效的避免sql注入攻击!sql注入攻击就是从客户端输入一些非法的特殊字符,而使服务器端在构造sql语句的时候仍然能够正确构造,从而收集程序和服务器的信息和数据。
    比如:“select * from t_user where userName = ‘” + userName + “ ’ and password =’” + password + “’”
    如果用户名和密码输入的是’1’ or ‘1’=’1’ ; 则生产的sql语句是:
    “select * from t_user where userName = ‘1’ or ‘1’ =’1’ and password =’1’ or ‘1’=’1’ 这个语句中的where 部分没有起到对数据筛选的作用。
  23. 说说事务的概念,在JDBC编程中处理事务的步骤。
    1) 事务是作为单个逻辑工作单元执行的一系列操作。
    2) 一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务
    事务处理步骤:
    3) conn.setAutoComit(false);设置提交方式为手工提交
    4) conn.commit()提交事务
    5) 出现异常,回滚 conn.rollback();

  24. 数据库连接池的原理。为什么要使用连接池。
    1) 数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。
    2) 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。
    3) 使用连接池是为了提高对数据库连接资源的管理

  25. 谈谈DAO模式的原理的作用。
    DAO是一种设计模式
    包括三个部分1)DAO接口
    2)DAO接口实现类,
    3)PO持久化对象,它和数据库相对应
  26. servlet和jsp有什么关系?
    Servlet和JSP都是服务器的组件。
    Servlet是一个接口,也是SUN公司提出的一种用户和WEB容器之间通信的标准。由用户实现其中的service()方法供WEB容器进行调用,从而实现servlet和WEB容器之间的交互。所以当用户要和WEB容器通信时必须实现这种标准。而JSP规范规定,由容器翻译好的JAVA类必须实现HttpJspPage接口,而这个接口是servlet的子接口,从这个意义上说,JSP的本质还是servlet。
    JSP重在表示,解决了servlet页面输出困难的问题。而servlet重在业务处理,避免在页面出现过多的业务处理带来的阅读性和维护性的困难。它们可以很好的结合。
    Servlet编写后需要在WEB应用的web.xml进行注册,从而能让WEB容器识别用户编码的Servlet。但JSP由容器来管理,所以无需注册。
  27. jsp是如何被容器调用和执行的?
    1)由JSP引擎将JSP页面翻译成JAVA代码
    2)将JAVA代码编译成class字节码文件
    3)加载到容器
    4)由容器实例化成对象
    5)初始化阶段相关的方法是jspInit()
    6)请求到达,调用服务阶段相关的方法是_jspService()
    7)销毁阶段相关的方法是jspDestroy()
  28. 编写一个servlet的步骤。
    1)新建一个类继承于HttpServlet
    2) 重写其中的doGet和doPost方法
    3)完成servlet的注册。在web.xml中加入标记
  29. doGet和doPost方法各有什么作用?
    doGet完成Get方式的请求处理。doPost完成Post方式请求处理
  30. 为什么要为servlet配置URL映射?
    Servlet注册包括两部分,第一,容器如何找到Servlet,利用

    Servlet名字
    Servlet类的全路径

    完成。
    第二,客户端如何找到当前的Servlet。利用

    Servlet名字
    客户端请求路径

    完成。
    配置URL的主要作用是客户端通过什么路径能去找到Servlet
  31. servlet的类架构是什么样的。
    Servlet是Sun公司提供的用户和WEB服务器通讯的接口,所有Servlet都必须实现这个接口。J2EE API中提供了一个类GenericServlet对Servlet接口作了简单的实现。同时,这个类还实现了ServletConfig接口。来对Servlet进行一些配置。GenericServlet有一个专门针对于Http协议进行实现的一个子类HttpServlet。
  32. 谈谈servlet的生命周期?
    1)容器装载并实例化Servlet
    2) 调用init()方法完成Servlet初始化
    3)当请求到达时,调用service()方法处理请求,产生响应
    4)销毁阶段调用destroy()方法完成清理工作。
  33. servlet是线程安全的吗?为什么?
    不安全。因为Servlet对象在整个过程中,至始至终只有一个对象。以节约服务器资源的消耗,这就意味着很多个线程会同时访问一个Servlet对象。所以线程不安全。
  34. 你是如何处理servlet线程安全问题的?
    解决Servlet线程安全问题方法有三种
    1)编写Servlet类的时候,实现SingleThreadModel接口,将Servlet变成单线程机制。
    2)涉及对共享资源访问的时候,使用synchronized同步加锁,实现共享资源的保护。
    3)尽量不在Servlet中定义成员变量,使用局部变量。
    在三种方法中,最好使用第三种,这样线程安全,并且性能最高。
  35. 如何得到客户端的请求参数?
    request.getParameter()单个数据
    request.getParameterValues()一组数据
    request.getParameterMap()返回所有的键值对
  36. request.getParameter和request.getParameterValues的区别,它们的返回值是什么类型?
    request.getParameter获得单个表单的数据。返回值是String类型。而request.getParameterValues()是获得表单元素名相同的一组数据。返回值是String[]数组。
  37. response对象的作用?
    Response对象是对服务器的响应信息作出的一个封装对象。主要作用有:
    1)可以从response中获得输出流对象,从而可以向客户端输出信息
    2)可以实现重定向,response.sendRedirect();
    3) 可以设置响应头和状态码。
    4)可以实现URL重写
  38. request对象的作用范围是什么?
    一次请求响应完成后,就会销毁。
  39. session对象的作用范围是什么
    在一个用户会话期间有效。
  40. application对象的作用范围是什么。
    存在于整个web应用。当WEB容器关闭时,才会销毁
  41. session对象是什么时候产生的,什么时候销毁的?
    当用户访问web容器,而容器调用了request.getSession()方法后,产生Session对象。用以保存客户端在服务器上的信息。同时给这个Session分配一个唯一的标识ID。并产生一个set-cookies的响应头,以JsessionID作为键,标识ID作为值向客户端的cookie中写入内容,当客户端下次再发出请求时,就会将这个JsessionID以请求头的方式向服务器进行发送。而容器读取了JsessionID请求头后,就会根据这个ID找到相对应的Session对象,从而维持服务器和客户端的状态。
    销毁session方法有三种
    1)session超时
    2)调用session对象的invalidate()方法
    3)web容器关闭或崩溃
    程序能控制是前二种。

  42. 项目中用到了session对象吗,在哪里用到的?
    登陆时,使用session保持用户信息。购物车制作时,使用session保持用户的购物信息

  43. session和cookie有什么区别。
    1) session保存在服务器,客户端不知道它的信息;而cookie保存在客户端,服务器知道其中的信息。
    2) session中 保存的是对象,而cookie中保存的是字符串
    3) session是不能区分路径的,同一个客户在访问web服务器之间,在任何地方都能够访问得到session中保存的信息的。而cookie如果设置了路径参数,同一个网站下的不同路径的cookie互相是访问不到的。
    4) session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。
  44. .Http协议是无状态的,服务器是用什么方式为一个客户端保存状态的?
    Hidden表单域 cookie session URL重写
  45. servlet或jsp能同时响应多个客户端的请求吗?是通过什么方式做到的?
    能够。多线程
  46. 请简述servlet多线程的实现方式?
    每次客户端请求过来的时候,WEB容器会产生一个线程来处理这个请求,这样就实现了servlet多线程。
  47. 在servlet中定义成员变量(全局变量),有线程安全问题吗?如何处理?
    有。避免使用实例变量是保证servlet线程安全的最佳选择。每个线程有自己私有的栈空间,方法中的临时变量是在栈上分配空间,他们不会影响线程的安全。
  48. 请求转发和重定向的区别。
    1) 内部转发客户端向服务器发起一次请求,重定向客户端向服务器发出两次请求
    2) 内部转发由request对象发起,重定向是response发起的
    3) 内部转发不会引起地址栏的变化,而重定向会导致地址栏变化
  49. JSP中动态包含和静态包含的区别。
    1) 静态包含在转换成为java文件的时候将要包含的文件包含进来,作为一个整体编译。动态包含是各个包含文件分别转换,分别编译。
    2) 静态包含在两个文件中不能有相同的变量,动态包含允许
    3) 静态包含只能包含文件,动态包含还可以包含servlet输出的结果
    4) 静态包含不能使用变量作为文件名,动态包含可以使用变量作为文件名
    5) 动态包含文件发生变化,包含文件会感知变化。

  50. 谈谈MVC设计模式的概念,使用MVC的好处。
    M模型层:模型层专注于处理业务逻辑和业务数据,它可以为多个视图准备数据,提高了应用的可重用性。
    V视图层:用户看到的并与系统交互的界面,接收用户数据,向用户显示相关的数据。
    C控制层:是模型层和视图层联系的纽带;接收视图层提交的请求,调用模型层的业务逻辑,根据业务逻辑的调用结果,控制系统转发的页面。
    MVC模式的好处:实现了业务逻辑和界面显示处理的分离;J2EE架构实现了业务逻辑和数据存储的分离,界面显示和业务逻辑的分离。各层之间不受影响。

  51. 模式1和模式2和区别。
    模式1:jsp+javabean
    模式2:jsp+servlet+javabean
  52. 你的项目中建有多少张表,字段最多的表是哪一张?每张表里都有些什么字段?
  53. 说说你项目开发的流程?
  54. 说说你所开发模块的业务流程,业务是什么?
  55. 谈谈监听器的原理、配置及使用。你在项目中是怎么用的?
    用于监听请求,会话,上下文件对象相关事件,并在事件发生后作出处理。
    只要写一个类实现相应的监听器接口,就写了一个相应的监听处理类。
    在web.xml中使用
  56. 谈谈过滤器的原理,配置及使用。有多个过滤器如何进行配置?
    过滤器允许你拦截请求,还可以允许你控制响应。还可以能够对请求头、响应头、消息体的数据进行更改。同时,还可以对返回的流信息进行压缩。项目中使用字符编码格式的处理使用了过滤器和包装器。过滤器需要在web.xml容器中进行注册,才能被web容器识别


    ()

如果有多个过滤器优先执行url-pattern,再执行servlet-name;如果有多个url-pattern按web.xml布署顺序执行。
60. 你在项目中的角色是什么,你是如何进行工作的?
61. 你所做的工作,如何和小组其它人员所做的工作进行协调(数据库设计、程序模块编写等两个方面来说);
62. 一个页面中有两个form,如何处理提交?
可以使用提交按钮的名称来判断,也可以使用hidden隐藏表单进行值的区分。
63. web项目与java项目有什么区别?
64. 不用eclipse,如何手工发布tomcat项目?
65. MVC模式在项目中,都是怎么用的?

  1. 请谈谈请求转发的原理?
    请求转发是针对同一工程下资源的转发。客户端在这个过程中,只请求服务器一次,请求转发由request.getRequestDispather(“”).forward(request,response).
  2. 请说明重定向的原理?
    重定向由response发起。当用户请求服务器时,由服务器向客户端发送一个302的状态码,并产生一个Location的响应头。当客户端接受到这样的状态码时,会马上读取Location响应头,并将地址栏改为Location里的内容。然后再向服务器发出请求。这个过程中客户端发出了两次请求。并可向不同的服务器发送请求。
  3. 你是否从其它人的表中调用数据,如何进行协调?
  4. 在家开发的模块,如何拿到公司与小组成员的进行合并?
  5. 你在项目中是如何处理乱码的?
    1) 使用过滤器和包装器设置统一的字符编码格式。
    2) 页面使用统一的编码格式<%@page contentType=”text/html;charset=utf-8”%>
  6. 谈谈项目中分页的实现?
    select top “+ count+” * from t_info where id not in(select top ”
    +(page-1)* count+” id from t_info)
  7. CSS有哪几中选择器?有什么区别?
    类选择器 ID选择器 元素选择器
  8. 你在web项目中,数据共享有哪些方式 ?如果实现的?
    Request,session,application(servletContext). 通过setAttribute和getAttribute实现
  9. 项目各个阶段会产生什么样的文档?都有什么作用?
  10. 项目结构是如何划分的?应该注意些什么?
  11. servlet中,如何取得HTTP头信息?
    Request.getHeader();
    Request.getHeaders();

  12. servlet程序中,可以获得客户机的IP地址吗?如何得到?
    request.getRemoteAddr(); request.getRemoteHost(),request.getRemotePort(),request.getRemoteUser

  13. URL与URI的区别?
    url:统一资源定位符, url定位客户端连接到服务器所需要的信息
    uri:统一资源标志符:
    uri是url的一部分,没有域名和查询字符串,即域名之后查询字符串之前所有的信息,用于指定资源
  14. servlet中的service方法在什么时候调用?
    每一次客户端请求一个servlet资源的时候,由web容器调用。
  15. 文件上传的原理是什么?


    浏览器会把 文件内容连同 form的所有字段 格式化后传递到服务器,以二进制方式读取流后,就不能以request.getParameter的方式读取表单中的参数信息了。
  16. 文件上传的form编写中,应该注意些什么?
    enctype=multipart/form-data method=post
  17. 在项目中,文件上传到服务器上后,你是怎么处理的?
    使用request.getInputStream()获得字节流,然后将字节流写入文件。
  18. 如何打包一个web项目?
    Jar –cf xx.war WEB-INF .html .jsp *.jpg
  19. MIME的作用是什么?
    告诉客户端浏览器你返回的内容是哪一种类型的,让浏览器采取相应的策略来显示处理你返回的文档或者文件。
  20. tomcat容器是如何创建servlet类实例?用到了什么原理?
    当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)
    在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
  21. servlet构造函数中可以执行初始化代码,为什么还要init方法呢?
    如果在servlet构造函数中放置初始化代码,很容易导致servlet实例的创建失败。这样会导致Servlet无法响应客户端的请求
  22. HttpServletRequest和HttpServletResponse是在哪里创建的?
    当客户端请求到来的时候,由web容器创建。
  23. 如何在一个servlet中,把页面转到www.qq.com.页面中。
    Response.sendRedirect(“http://www.qq.com”);
  24. ServletRequest与HttpServletRequest有什么区别与联系?
    ServletRequest是HttpServletRequest的父接口,HttpServletRequest是特别针对Http协议而定义的接口,里面定义了得到http协议请求信息的方法。
  25. servlet中如何到得项目的绝对路径?
    Request.getContextPath();
  26. jsp中taglib指令的作用是什么?
    这个指令是标签库指令。指示标签库的逻辑路径,以及标签库的使用前缀。
    使用taglib指令<%@taglib uri=”” prefix=”” %>
  27. 文件下载如何实现?如何保证授权用户的下载?
    1) 设置setContextType(),MIME类型。
    2) 打开文件,按照二进制流的方式将字节数发往客户端。
  28. 在servlet中,如何得到web.xml中配置的初始化参数?
    ServletConfig.getInitParameter()
  29. 在doGet方法中,使用synchronized会产生什么样的后果?
    这是由于对共享资源的访问而采取的线程安全措施,但是在多线程环境下,同步加锁会带来性能的下降。
  30. 如何进行URL重写?要用到什么方法?
    当客户端禁用cookie后,服务器的sessionID就无法发送给客户端。从而无法维持和客户端的状态。解决方法是,对链接重新编码。在链接产生时,在链接后面加上一个JsessionID用以维持客户端和服务器的状态
    Response.encodeURL();
  31. session如何过期?项目中该怎么应用?
    setMaxInternalTime(); session.invalide();….
    在web.xml中加入

    30
  32. tomcat容器的作用是什么?
    a) 通信支持:
    b) 生命周期管理。
    c) 多线程支持:
    d) jsp支持
    e) 安全性管理
  33. 在servlet中,怎么直接往客户端输出信息?
    out = response.getWriter(), out = response.getOutputStream().
  34. 直接在jsp中调用DAO的方法,并显示数据,可以吗?这种方式有什么缺点?
    可以在jsp中调用DAO的方法,显示数据。但是这种方式使得数据显示和数据持久化混杂在一起,不利于代码的维护。使得数据操作和页面显示耦合在了一起。
  35. jsp中的import指令有什么作用?
    导入在jsp中要使用的类文件。
  36. 如何在jsp中使用bean?
    使用javabean。
    设置JavaBean

你可能感兴趣的:(面试题)