logo资料库

web项目答辩.docx

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
Web 项目答辩问题 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 对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据 7. application 有什么作用。 保存的一些全局性的对象信息。 8. 在 jsp 中怎样操作 page 作用域 特定于 JSP 的一个类型,代表当前的 JSP 页面。pageContext.setAttribute(“java”,”lovo”); 9. jsp 有哪些动作?作用分别是什么? 包含 转发到另一页面相当于 request.getRequestDispatcher(“1.jsp?name=XX”).forward(request,response); 设置 javaBean 设置属性 获得属性 设置插件 10. java servlet api 中 forward() 与 redirect()的区别? 1. forward 客户端请求服务器一次,redirect 请求服务器两次,所以 forward 方式可以获得 request 作用域 的信息,而 redirect 方式不能获得。
2. forward 由 request 对象发出,而 redirect 由 response 对象发起 3. redirect()可以跨越不同的工程之间。而 forward()只能在一个工程中使用 11. class.forname 的作用?为什么要用? 加载类;一般使用这个方法是反射方式创建对象;从而可以将一些类信息写在文件中,避免硬编码,增加 灵活性。 12. 分页是怎么实现的? Select top 5 * from 表名 where id not in(select top 10 id from 表名) 13. cookie 被禁止后怎样使用 session? URL 重写,对所有页面涉及的连接都使用 url 重写方式。从而将 JsessionID 以参数的方式链接到 URL 后 面。保证每次页面提交时服务器都能获得 sessionID,从而维持和客户端的状态。 14. 项目开发经历了哪几个阶段? 需求分析,设计(找用例,写用例文本,找实体,编写数据字典,画数据流图),编码,测试,部署; 15. 谈谈项目的体系统架构:(客户层,表示层)web 层,业务层,数据层? 客户层:IE 浏览器,Applet 小应用程序,在客户度允许 表示层:html 静态页面,jsp 页面,servlet 在服务器上运行; 业务层:实现业务逻辑,服务器提供系统级服务,如事务管理,安全性,并非控制 数据层:如 dao 部分,实现对数据的增删改查等。 16. J2EE 规范中的组件技术在项目中用到了哪些? JDBC,jsp,servlet,javabean,xml,JNDI 17. TCP/IP 通讯和 UDP 通迅的区别? 1) TCP/IP 面向连接,可靠连接,UDP 面向不连接,不可靠连接 2) 建立连接经历 3 次握手,udp 无需连接,ip 和 port 封装在 datagram 数据包中,自寻址。 18. 浏览器和 WEB 服务器是用什么协议通迅的? 应用层使用的是 HTTP 协议,传输和路由使用的是 TCP/IP 19. 网络通讯中,端口有什么含义。端口的取值范围? 端口用于区分基于 TCP/IP 通讯的不同应用程序, 每个基于 TCP/IP 应用程序都会向操作系统申请注册一个 服务,这个服务用端口表示。本质上说,端口就是一段内存中的缓冲区。可以认为是计算机与外界交流的 出口。 建议用户使用的端口号 1024-----65535 系统使用的端口范围 0 --- 1024 20. 说出 3 个常见协议的默认端口。 Web 服务器 80,ftp 21,telenet 23,smtp 25 21. socket 是什么,它有什么作用? Socket 是通讯的端点,是客户端和服务器进行通讯的端点 22. TCP/IP 通讯的基本步骤是什么? 基于 TCP/IP 通讯的程序:必须先建立和服务器端的连接,然后才能通讯。 服务器端:ServerSocket ss = new ServerSocket(port); 创建 serverSocket 对象 ss.accept()在 port 端口监听,等待客户端请求到来 客户端: Socket s = new Socket(ip,port); 建立和服务器的连接;连接不成功,抛出异常 s.getOutputStream()和 s.getInputStream()和向服务器发送请求信息和接收服务器返回的信息 23. UDP 通讯的基本步骤是什么? 1) 创建 DatagramSocket 对象 2) 通过 datagramSocket 发送(接收)datagramPacket 数据包 3) 从 datagramPacket 数据包中取出接收和封装要发送的数据
24. JDBC 访问数据库的基本步骤是什么? 1) 加载驱动 2) 通过 DriverManager 对象获取连接对象 Connection 3) 通过连接对象获取会话 4) 通过会话进行数据的增删改查,封装对象 5) 关闭资源 25. 说说 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 部 分没有起到对数据筛选的作用。 26. 说说事务的概念,在 JDBC 编程中处理事务的步骤。 1) 事务是作为单个逻辑工作单元执行的一系列操作。 2) 一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样 才能成为一个事务 事务处理步骤: 3) conn.setAutoComit(false);设置提交方式为手工提交 4) conn.commit()提交事务 5) 出现异常,回滚 conn.rollback(); 27. 数据库连接池的原理。为什么要使用连接池。 1) 数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。 2) 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接, 当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接 池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库 的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。 3) 使用连接池是为了提高对数据库连接资源的管理 28. 谈谈 DAO 模式的原理的作用。 DAO 是一种设计模式 包括三个部分 1)DAO 接口 2)DAO 接口实现类, 3)PO 持久化对象,它和数据库相对应 29. 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 由容器来管理,所以无需注册。 30. jsp 是如何被容器调用和执行的? 1)由 JSP 引擎将 JSP 页面翻译成 JAVA 代码 2)将 JAVA 代码编译成 class 字节码文件 3)加载到容器 4)由容器实例化成对象 5)初始化阶段相关的方法是 jspInit() 6)请求到达,调用服务阶段相关的方法是_jspService() 7)销毁阶段相关的方法是 jspDestroy() 31. 编写一个 servlet 的步骤。 1)新建一个类继承于 HttpServlet 2) 重写其中的 doGet 和 doPost 方法 3)完成 servlet 的注册。在 web.xml 中加入标记 32. doGet 和 doPost 方法各有什么作用? doGet 完成 Get 方式的请求处理。doPost 完成 Post 方式请求处理 33. 为什么要为 servlet 配置 URL 映射? Servlet 注册包括两部分,第一,容器如何找到 Servlet,利用 Servlet 名字 Servlet 类的全路径 完成。 第二,客户端如何找到当前的 Servlet。利用 Servlet 名字 客户端请求路径 完成。 配置 URL 的主要作用是客户端通过什么路径能去找到 Servlet 34. servlet 的类架构是什么样的。 Servlet 是 Sun 公司提供的用户和 WEB 服务器通讯的接口,所有 Servlet 都必须实现这个接口。J2EE API 中提供了一个类 GenericServlet 对 Servlet 接口作了简单的实现。同时,这个类还实现了 ServletConfig 接 口 。 来对 Servlet 进 行 一些 配 置 。GenericServlet 有 一 个专 门 针 对 于 Http 协 议 进行 实 现 的 一个 子 类 HttpServlet。 35. 谈谈 servlet 的生命周期? 1)容器装载并实例化 Servlet 2) 调用 init()方法完成 Servlet 初始化 3)当请求到达时,调用 service()方法处理请求,产生响应 4)销毁阶段调用 destroy()方法完成清理工作。 36. servlet 是线程安全的吗?为什么? 不安全。因为 Servlet 对象在整个过程中,至始至终只有一个对象。以节约服务器资源的消耗,这就意味着 很多个线程会同时访问一个 Servlet 对象。所以线程不安全。 37. 你是如何处理 servlet 线程安全问题的? 解决 Servlet 线程安全问题方法有三种
1)编写 Servlet 类的时候,实现 SingleThreadModel 接口,将 Servlet 变成单线程机制。 2)涉及对共享资源访问的时候,使用 synchronized 同步加锁,实现共享资源的保护。 3)尽量不在 Servlet 中定义成员变量,使用局部变量。 在三种方法中,最好使用第三种,这样线程安全,并且性能最高。 38. 如何得到客户端的请求参数? request.getParameter()单个数据 request.getParameterValues()一组数据 request.getParameterMap()返回所有的键值对 39. request.getParameter 和 request.getParameterValues 的区别,它们的返回值是什么类型? request.getParameter 获得单个表单的数据。返回值是 String 类型。而 request.getParameterValues()是获 得表单元素名相同的一组数据。返回值是 String[]数组。 40. response 对象的作用? Response 对象是对服务器的响应信息作出的一个封装对象。主要作用有: 1)可以从 response 中获得输出流对象,从而可以向客户端输出信息 2)可以实现重定向,response.sendRedirect(); 3) 可以设置响应头和状态码。 4)可以实现 URL 重写 41. request 对象的作用范围是什么? 一次请求响应完成后,就会销毁。 42. session 对象的作用范围是什么 在一个用户会话期间有效。 43. application 对象的作用范围是什么。 存在于整个 web 应用。当 WEB 容器关闭时,才会销毁 44. session 对象是什么时候产生的,什么时候销毁的? 当用户访问 web 容器,而容器调用了 request.getSession()方法后,产生 Session 对象。用以保存客户端 在服务器上的信息。同时给这个 Session 分配一个唯一的标识 ID。并产生一个 set-cookies 的响应头,以 JsessionID 作为键,标识 ID 作为值向客户端的 cookie 中写入内容,当客户端下次再发出请求时,就会将 这个 JsessionID 以请求头的方式向服务器进行发送。而容器读取了 JsessionID 请求头后,就会根据这个 ID 找到相对应的 Session 对象,从而维持服务器和客户端的状态。 销毁 session 方法有三种 1)session 超时 2)调用 session 对象的 invalidate()方法 3)web 容器关闭或崩溃 程序能控制是前二种。 45. 项目中用到了 session 对象吗,在哪里用到的? 登陆时,使用 session 保持用户信息。购物车制作时,使用 session 保持用户的购物信息 46. 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 之类的字符串。 47. .Http 协议是无状态的,服务器是用什么方式为一个客户端保存状态的? Hidden 表单域 cookie session URL 重写 48. servlet 或 jsp 能同时响应多个客户端的请求吗?是通过什么方式做到的? 能够。多线程 49. 请简述 servlet 多线程的实现方式? 每次客户端请求过来的时候,WEB 容器会产生一个线程来处理这个请求,这样就实现了 servlet 多线程。 50. 在 servlet 中定义成员变量(全局变量),有线程安全问题吗?如何处理? 有。避免使用实例变量是保证 servlet 线程安全的最佳选择。每个线程有自己私有的栈空间,方法中的临时 变量是在栈上分配空间,他们不会影响线程的安全。 51. 请求转发和重定向的区别。 1) 内部转发客户端向服务器发起一次请求,重定向客户端向服务器发出两次请求 2) 内部转发由 request 对象发起,重定向是 response 发起的 3) 内部转发不会引起地址栏的变化,而重定向会导致地址栏变化 52. JSP 中动态包含和静态包含的区别。 1) 静态包含在转换成为 java 文件的时候将要包含的文件包含进来,作为一个整体编译。动态包含是各个 包含文件分别转换,分别编译。 2) 静态包含在两个文件中不能有相同的变量,动态包含允许 3) 静态包含只能包含文件,动态包含还可以包含 servlet 输出的结果 4) 静态包含不能使用变量作为文件名,动态包含可以使用变量作为文件名 5) 动态包含文件发生变化,包含文件会感知变化。 53. 谈谈 MVC 设计模式的概念,使用 MVC 的好处。 M 模型层:模型层专注于处理业务逻辑和业务数据,它可以为多个视图准备数据,提高了应用的可重用性。 V 视图层:用户看到的并与系统交互的界面,接收用户数据,向用户显示相关的数据。 C 控制层:是模型层和视图层联系的纽带;接收视图层提交的请求,调用模型层的业务逻辑,根据业务逻 辑的调用结果,控制系统转发的页面。 MVC 模式的好处:实现了业务逻辑和界面显示处理的分离;J2EE 架构实现了业务逻辑和数据存储的分离, 界面显示和业务逻辑的分离。各层之间不受影响。 54. 模式 1 和模式 2 和区别。 模式 1:jsp+javabean 模式 2:jsp+servlet+javabean 55. 你的项目中建有多少张表,字段最多的表是哪一张?每张表里都有些什么字段? 56. 说说你项目开发的流程? 57. 说说你所开发模块的业务流程,业务是什么? 58. 谈谈监听器的原理、配置及使用。你在项目中是怎么用的? 用于监听请求,会话,上下文件对象相关事件,并在事件发生后作出处理。 只要写一个类实现相应的监听器接口,就写了一个相应的监听处理类。 在 web.xml 中使用 59. 谈谈过滤器的原理,配置及使用。有多个过滤器如何进行配置? 过滤器允许你拦截请求,还可以允许你控制响应。还可以能够对请求头、响应头、消息体的数据进行更改。
同时,还可以对返回的流信息进行压缩。项目中使用字符编码格式的处理使用了过滤器和包装器。过滤器 需要在 web.xml 容器中进行注册,才能被 web 容器识别 () 如果有多个过滤器优先执行 url-pattern,再执行 servlet-name;如果有多个 url-pattern 按 web.xml 布署顺序 执行。 60. 你在项目中的角色是什么,你是如何进行工作的? 61. 你所做的工作,如何和小组其它人员所做的工作进行协调(数据库设计、程序模块编写等两个方面来 说); 62. 一个页面中有两个 form,如何处理提交? 可以使用提交按钮的名称来判断,也可以使用 hidden 隐藏表单进行值的区分。 63. web 项目与 java 项目有什么区别? 64. 不用 eclipse,如何手工发布 tomcat 项目? 65. MVC 模式在项目中,都是怎么用的? 66. 请谈谈请求转发的原理? 请 求转 发是 针对 同 一工 程下 资 源的 转发 。客 户 端在 这个 过 程中 ,只 请求 服 务器 一次 , 请求 转发 由 request.getRequestDispather(“”).forward(request,response). 67. 请说明重定向的原理? 重定向由 response 发起。当用户请求服务器时,由服务器向客户端发送一个 302 的状态码,并产生一个 Location 的响应头。当客户端接受到这样的状态码时,会马上读取 Location 响应头,并将地址栏改为 Location 里的内容。然后再向服务器发出请求。这个过程中客户端发出了两次请求。并可向不同的服务器 发送请求。 68. 你是否从其它人的表中调用数据,如何进行协调? 69. 在家开发的模块,如何拿到公司与小组成员的进行合并? 70. 你在项目中是如何处理乱码的? 1) 使用过滤器和包装器设置统一的字符编码格式。 2) 页面使用统一的编码格式<%@page contentType=”text/html;charset=utf-8”%> 71. 谈谈项目中分页的实现? select top "+ count+" * from t_info where id not in(select top " +(page-1)* count+" id from t_info) 72. CSS 有哪几中选择器?有什么区别? 类选择器 ID 选择器 元素选择器 73. 你在 web 项目中,数据共享有哪些方式 ?如果实现的? Request,session,application(servletContext). 通过 setAttribute 和 getAttribute 实现 74. 项目各个阶段会产生什么样的文档?都有什么作用? 75. 项目结构是如何划分的?应该注意些什么? 76. servlet 中,如何取得 HTTP 头信息? Request.getHeader(); Request.getHeaders(); 77. servlet 程序中,可以获得客户机的 IP 地址吗?如何得到?
request.getRemoteAddr(); request.getRemoteHost(),request.getRemotePort(),request.getRemoteUser 78. URL 与 URI 的区别? url:统一资源定位符, url 定位客户端连接到服务器所需要的信息 uri:统一资源标志符: uri 是 url 的一部分,没有域名和查询字符串,即域名之后查询字符串之前所有的信息,用于指定资源 79. servlet 中的 service 方法在什么时候调用? 每一次客户端请求一个 servlet 资源的时候,由 web 容器调用。 80. 文件上传的原理是什么?
浏览器会把 文件内容连同 form 的所有字段 格式化后传递到服务器,以二进制方式读取流后,就不能以 request.getParameter 的方式读取表单中的参数信息了。 81. 文件上传的 form 编写中,应该注意些什么? enctype=multipart/form-data method=post 82. 在项目中,文件上传到服务器上后,你是怎么处理的? 使用 request.getInputStream()获得字节流,然后将字节流写入文件。 83. 如何打包一个 web 项目? Jar –cf xx.war WEB-INF *.html *.jsp *.jpg 84. MIME 的作用是什么? 告诉客户端浏览器你返回的内容是哪一种类型的,让浏览器采取相应的策略来显示处理你返回的文档或者 文件。 85. tomcat 容器是如何创建 servlet 类实例?用到了什么原理? 当容器启动时,会读取在 webapps 目录下所有的 web 应用中的 web.xml 文件,然后对 xml 文件进行解析, 并读取 servlet 注册信息。然后,将每个应用中注册的 servlet 类都进行加载,并通过反射的方式实例化。(有 时候也是在第一次请求时实例化) 在 servlet 注册时加上1如果为正数,则在一开始就实例化,如果不写 或为负数,则第一次请求实例化。 86. servlet 构造函数中可以执行初始化代码,为什么还要 init 方法呢? 如果在 servlet 构造函数中放置初始化代码,很容易导致 servlet 实例的创建失败。这样会导致 Servlet 无法 响应客户端的请求 87. HttpServletRequest 和 HttpServletResponse 是在哪里创建的? 当客户端请求到来的时候,由 web 容器创建。 88. 如何在一个 servlet 中,把页面转到 www.qq.com.页面中。 Response.sendRedirect(“http://www.qq.com”); 89. ServletRequest 与 HttpServletRequest 有什么区别与联系? ServletRequest 是 HttpServletRequest 的父接口,HttpServletRequest 是特别针对 Http 协议而定义的接口, 里面定义了得到 http 协议请求信息的方法。 90. servlet 中如何到得项目的绝对路径? Request.getContextPath(); 91. jsp 中 taglib 指令的作用是什么? 这个指令是标签库指令。指示标签库的逻辑路径,以及标签库的使用前缀。 使用 taglib 指令<%@taglib uri=”” prefix=”” %> 92. 文件下载如何实现?如何保证授权用户的下载? 1) 设置 setContextType(),MIME 类型。
分享到:
收藏