java web期末复习材料(打印版).doc_第1页
java web期末复习材料(打印版).doc_第2页
java web期末复习材料(打印版).doc_第3页
java web期末复习材料(打印版).doc_第4页
java web期末复习材料(打印版).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 理论题(每题5分,共85分)1 简述Servlet的生命周期,分析Servlet与CGI的区别Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 2 结合图示,分析Servlet中forward()和redirect()的实现原理和区别Redirect等于客户端向服务器发出两次request,同时也接受到两次response;Forward却只是一次request一次response。相比之下,Forward性能更高。Forward能够存储request Scope的Attribute而Redirect却不行。Forward的同时URL并不会变。Forward需要在Servlet中需要通过一个Dispatcher来实现。Redirect能够防止某些情况下客户端Refresh造成的一些未知后果(例如连续删除)3 JSP和Servlet有哪些相同点和不同点,他们之间有什么联系servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出。 Servlet中没有内置对象。Jsp由html代码和jsp标签构成可以方便地编写动态网页,在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。jsp是servlet的一种简化,jsp编译后是类servlet。servlet 主要是用来处理业务层;jsp 则是主要负责 表现层。 4 Servlet执行时一般实现哪几个方法,写一个Servlet的基本架构5 JSP有哪些内置对象,作用分别是什么request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 page表示从该页面产生的一个servlet实例 6 JSP有哪些动作,作用分别是什么Include指令:标签表示包含一个静态的或者动态的文件。Forward指令:标签表示重定向一个静态html/jsp的文件,或者是一个程序段。UseBean指令:标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。GetProperty指令:标签表示获取BEAN的属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。SetProperty指令:标签表示用来设置Bean中的属性值。Plugin指令:标签表示执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它。7 什么是Cookie,列举Cookie的典型应用Cookie是一种在客户端保持HTTP状态信息的技术,Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。Cookie实现了一种在浏览器和服务器之间产生有状态会话的方式,它可以把一个浏览器访问的同一个服务器上的所有程序贯连起来,在这些程序之间传递数据。典型应用:记住我(记录用户登录时候的密码)、记录用户访问动作,定制个性化的内容8 什么是会话,列举会话的典型应用会话用于在用户访问一个Web站点的多个页面时共享信息。任何时候用户第一次访问某个页面,系统就将创建一个会话。如果以后用户访问此网页,JSP将检索有关此会话的信息。只要服务器收到此用户的请求,则会话就持续,如果经过一段时间没有收到此用户的心请求,会话就终止。典型应用:购物车,跨Servlet/JSP的参数传递9 什么是Servlet过滤器,结合图示说明其工作原理Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改。Servlet过滤器本身并不产生请求和响应对象,它只能提供过滤作用。Servlet过期能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Response内容。10 Servlet过滤器有哪些用途,简述实现一个Servlet过滤器需要完成的工作步骤可以验证客户是否来自可信网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户浏览器是否支持当前的应用,可以记录系统的日志等。一个filter必须实现Javax.Servlet.Filter接口并定义三个方法:1. void setFilterConfig(FilterConfig config) /设置filter 的配置对象;2. FilterConfig getFilterConfig() /返回filter的配置对象;3. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) /执行filter 的工作.服务器每次只调用setFilterConfig方法一次准备filter 的处理;调用doFilter方法多次以处理不同的请求.FilterConfig接口有方法可以找到filter名字及初始化参数信息.服务器可以设置FilterConfig为空来指明filter已经终结。每一个filter从doFilter()方法中得到当前的request及response.在这个方法里,可以进行任何的针对request及response的操作.(包括收集数据,包装数据等).filter调用chain.doFilter()方法把控制权交给下一个filter.一个filter在doFilter()方法中结束.如果一个filter想停止request处理而获得对response的完全的控制,那它可以不调用下一个filter.11 什么是Servlet监听器,列举主要的监听器接口类型及其监听的事件类型Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。Listener接口Event类ServletContextListenerServletContextEventServletContextAttributeListenerServletContextAttributeEventHttpSessionListenerHttpSessionEventHttpSessionActivationListenerHttpSessionAttributeListenerHttpSessionBindingEventHttpSessionBindingListenerServletRequestListenerServletRequestEventServletRequestAttributeListenerServletRequestAttributeEvent12 结合图示,简述什么是JSP Model 1和JSP Model 2,分析二者的区别和优劣Jsp Model 11.传统的Jsp Model 1模型:JSP是独立的,自主完成所有的任务2.改进的Jsp Model 1模型:JSP页面与JavaBeans共同协作完成任务Jsp Model1的优点:这种架构模型非常适合小型Web项目的快速开发,而且对Java Web开发人员的技术水平要求不高4.Jsp Model1的缺点: HTML和JAVA强耦合在一起,导致页面设计与逻辑处理无法分离 可读性差,调试困难,不利于维护 功能划分不清Jsp Model21.Jsp Model2中使用了三种技术JSP、Servlet和JavaBeansJsp负责生成动态网页,只用做显示页面。Servl et负责流程控制,用来处理各种请求的分派。JavaBeans负责业务逻辑,对数据库的操作。2.使用Jsp Model2的交互过程:用户通过浏览器向Web应用中的Servlet发送请求,Servlet接受到请求后实例化JavaBeans对象,调用JavaBeans对象的方法,JavaBeans对象返回从数据库中读取的数据。Servlet选择合适JSP,并且把从数据库中读取的数据通过这个JSP进行显示,最后JSP页面把最终的结果返回给浏览器。Jsp Model2优点 I消除了Jsp Model1的缺点: II该模式适合多人合作开发大型的Web项目 III各司其职,互不干涉 IV有利于开发中的分工 V有利于组件的重用Jsp Model2缺点 Web项目的开发难度加大,同时对开发人员的技术要求也提高了13 什么是MVC架构模式,结合图示分析MVC如何工作的MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 视图 视图是用户看到并与之交互的界面。模型 模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。14 为什么要使用MVC架构模式,有什么优缺点MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。 你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。 根据我个人经验,由于我们将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。 MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。 15 简述MVC架构模式与Web开发框架的区别和关系16 简述web.xml的作用,列举出与监听器、过滤器和Servlet相关的标记web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。web.xml的模式(Schema)文件中定义了多少种标签元素,web.xml中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能。web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素中,都必须标明这个web.xml使用的是哪个模式文件。 servlet1 net.test.TestServlet XXXCharaSetFilter net.test.CharSetFilter XXXCharaSetFilter /*net.test.XXXLisenet17 通过浏览器调用一个JSP页面时出现乱码该如何解决,通过浏览器调用一个Servlet时出现乱码该如何解决,接受表单提交出现乱码该如何解决2、 程序题(每题15分,共15分)1 使用JDBC、HTML和Servlet技术实现网络留言板功能,guestbook表结构如图1-1示、guestbook功能流程图如图1-2示、核心文件列表如表1-1所示,根据给出的条件完成以下工作:a) 编写guestbook表创建的SQL语句的编写b) 完成核心文件核心代码的编写 图1-1 guestbook表结构 图1-2 guestbook流程图表1-1 核心文件列表文件/目录名称说明AddMessageServlet.java添加留言内容到数据库的ServletGetMessageServlet.java显示留言板内容的ServletaddMessage.htm接收留言内容的HTML文件errMessage.htm显示错误信息 public class AddMessageServlet extends HttpServlet private static final long serialVersionUID = -8349454122547148005L;public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String url = jdbc:oracle:thin:0:1521:ora9;String username = scott;String password = tiger;String sql = insert into guestbook (id,name,email,phone,title,content,time) values(gb_seq.nextval,?,?,?,?,?,?);int result = 0;Connection conn = null;request.setCharacterEncoding(utf-8);String name = request.getParameter(name);String title = request.getParameter(title);response.setContentType(text/html;charset=utf-8);PrintWriter out = response.getWriter();out.println();out.println(guestbook input page);out.println();if (StringUtil.validateNull(name) out.println(对不起,姓名不能为空,请您重新输入!);out.println(添加新的留言); else if (StringUtil.validateNull(title) out.println(对不起,主题不能为空,请您重新输入!);out.println(添加新的留言); else try Class.forName(oracle.jdbc.driver.OracleDriver);conn = DriverManager.getConnection(url, username, password);PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, StringUtil.filterHtml(name);pstmt.setString(2, StringUtil.filterHtml(request.getParameter(email);pstmt.setString(3, StringUtil.filterHtml(request.getParameter(phone);pstmt.setString(4, StringUtil.filterHtml(title);pstmt.setString(5, request.getParameter(content);SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);pstmt.setString(6, sdf.format(new java.util.Date();result = pstmt.executeUpdate();pstmt.close(); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); finally try conn.close(); catch (SQLException e) e.printStackTrace();if (result = 0) out.println(对不起,添加留言不成功,请您重新输入!);out.println(添加新的留言); else out.println(祝贺您,成功添加留言。);out.println(查看所有留言内容);out.println();out.println();out.flush();out.close();public class GetMessagesServlet extends HttpServlet private static final long serialVersionUID = 5964428201228635704L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String url = jdbc:oracle:thin:0:1521:ora9;String username = scott;String password = tiger;String sql = select * from guestbook order by id desc;Connection conn = null;response.setContentType(text/html;charset=utf-8);PrintWriter out = response.getWriter();out.println();out.println(display messages);out.println();out.println(添加新的留言内容);out.println(留言内容);try Class.forName(oracle.jdbc.driver.OracleDriver);conn = DriverManager.getConnection(ur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论