javaweb期末复习知识点整理1.Web应用概述1.URL与URIURL:统一资源定位器URI:统一资源定位符2.常见HTML标签3.表单的处理4.静态文档与动态文档的概念:静态文档是一种以文件的形式存放在服务器端的文档,客户发出对该文档的请求,服务器返回这个文档。动态文档是指文档的内容可根据需要动态生成,又可分为服务器端动态文档和客户端动态文档技术。5.Servlet概念:服务器端小程序,是使用ServletAPI以及相关类编写的java程序,主要用来扩展web服务器的功能。6.处理404错误:查看给定的路径名是否正确,查看Servlet类文件是否在classes目录下,查看web.xml文件内容是否正确,查看tomcat是否启动2.Servlet技术模型1.Servlet的API:javax.servlet包,javax.servlet.http包Servlet接口及方法:1)publicvoidinit(ServletConfigconfig):完成Servlet初始化并准备提供服务。容器传给该方法一个ServletConfig类型的参数。2)publicvoidservice(ServletRequestreq,ServletResponseres)throwServletException,IOException:对每个客户请求容器调用一次该方法,它允许Servlet为请求提供响应。3)publicvoiddestroy()该方法由容器调用,指示Servlet清除本身,释放请求的资源并准备结束服务。4)publicServletConfiggetServletConfig()返回关于Servlet的配置信息,如传递给init()方法的参数。5)publicStringgetServletInfo()返回关于Servlet的信息,如作者,版本及版权信息。ServleConfig接口作用及方法HttpServlet类:新的service方法,doGet,doPostHttpServletRequest接口及常用方法HttpServletResponse接口及常用方法2.Servlet的开发步骤编写一个Servlet类编译部署(1)在tomcat的虚拟目录下,创建Web目录(2)将编译好的.class文件复制到Web目录的WEB-INF\\classes目录(3)修改配置文件WEB-INF\\web.xml(4)启动tomcat运行3.Servlet的执行过程1)用户通过单击超链接或提交表单向容器请求访问Servlet,容器分析这个请求,创建request和response两个对象2)容器根据请求的URL找到正确的Servlet,为这个请求创建一个线程对象(每次请求都创建一个线程)3)容器调用Servlet的service方法,把请求和响应对象作为参数传递给该方法4)调用Servlet的doGet()或doPost()方法5)向客户发送响应:Servlet使用相应对象获得输出流对象,调用有关方法将响应写给客户,响应通过容器发送给浏览器。4.Servlet的生命周期加载实例化Servlet——初始化Servlet(init)——为客户提供服务(service)——销毁Servlet(destroy)5.分析请求http请求结构:请求行——请求头——空行——数据get方法与post方法的对比publicStringgetParameter(Stringname)publicString[]getParameterValues(Stringname)publicEnumerationgetParameterNames()6.请求转发RequestDispatcherdispatcher=request.getRequestDispatcher(location);Dispatcher.forward(request,response)request.setAttributerequest.getAttribute7.发送响应响应结构:状态行——响应头——空行——响应数据response.setContentType(“text/html;charset=gb2312”);PrintWriterout=response.getWriter();响应重定向:response.sendRedirect(“URL”);return;响应重定向与请求转发的比较:forward()方法转发请求是服务器端控制权的转向,客户端地址栏中不显示转发后的资源地址。sendRedirect()方法是服务器向浏览器发送一个特殊的响应,它使浏览器连接到新的位置,浏览器地址栏可看到地址的变化。使用重定向,资源不能位于WEB-INF目录下。页面错误:200表示请求成功,404表示页面没有找到,500表示服务器内部错误3.Servlet容器模型1.Web应用程序的部署(1)在tomcat的虚拟目录下,创建Web目录(2)将编译好的.class文件复制到Web目录的WEB-INF\\classes目录(3)修改配置文件WEB-INF\\web.xml(4)启动tomcat2.理解Web应用程序的部署描述文件web.xml下面的代码展示了在部署描述文件中
元素的一个典型的使用:helloServlet定义Servlet名称com.myserver.HelloServlet指定Servlet类的完整名称向Servlet传递的初始化参数,可以定义多个emailhacker@163.com定义一个映射HelloServlet/Hello23.ServletConfig得到ServletConfig接口对象的方法:ServletConfigconfig=getServletConfig();覆盖Servlet的init方法。ServletConfig接口共定义了下面4个方法:publicStringgetInitParameter(Stringname):返回指定名称的初始化参数值(是从DD文件中取出)publicEnumerationgetInitParameterNames()publicStringgetServletName():返回DD文件中的名称publicServletContextgetServletContext():返回Servlet所在上下文对象4.ServletContext接口使用RequestDispatcher实现请求转发ServletRequest的getRequestDispatcher()方法,可以传递一个相对路径,ServletContext的getRequestDispatcher()方法只能传递以“/”开头的路径。通过ServletContext对象共享数据4.会话管理1.会话管理理解会话的基本思想和管理机制了解会话对象HttpSession及常见方法调用request.getSession获取HttpSession对象:HttpSessionsession=request.getSession(true);将信息存入会话publicvoidsetAttribute(Stringname,Objectvalue)查找与会话相关联的信息publicObjectgetAttribute(Stringname)publicEnumerationgetAttributeNames()publicvoidremoveAttribute(Stringname)使用HttpSession对象通常需要三步:(1)为客户创建或获得与请求关联的会话对象;(2)在会话对象中添加或删除名/值对属性;(3)如果需要可使会话失效。2.通过Cookie(一小段文字信息)支持会话Cookie类的常用方法:getName、getValue、setValue、setMaxAge和getMaxAge;向客户端发送Cookie创建Cookie对象•Cookiec=newCookie(\"username\\"hacker\");将Cookie放入到HTTP响应中•response.addCookie(c)•从客户端读取CookieCookie[]cookies=request.getCookies();if(cookies!=null){for(inti=0;i5.JSP技术模型1.JSP基本语法<%@%>JSP指令:page指令、include指令和taglib指令<%!%>JSP声明:理解<%!intcount=0;%>和<%intcount=0;%>的区别<%%>JSP小脚本<%=%>JSP表达式JSP动作:jsp标准动作、JSTL中的动作、用户自定义动作jsp标准动作包括、、、、、<%----%>JSP注释2.JSP页面生命周期理解JSP的执行过程浏览器访问一个jsp页面,服务器端的web容器将jsp转换为servlet,并处理执行此servlet中的相关内容,产生响应结果,然后再由web容器将响应结果返回客户端浏览器。理解JSP页面转换理解JSP页面的生命周期页面转换——页面编译——加载类——创建实例——调用jspInit()方法——调用_jspService()方法——调用jspDestroy()方法3.理解page指令属性page指令用于告诉容器关于JSP页面的全局属性,该指令适用于整个转换单元而不仅仅是它所声明的页面。语法格式如下:<%@page[language=\"java\"][extends=\"package.class\"]合法的实现了javax.servlet.jsp.JspPage接口的java类[import=\"{package.class|package.*},...\"]导入在jsp中使用的java类和接口[contentType=\"mimeType[;charset=characterSet]\"|\"text/html;charset=ISO-8859-1\"]指定输出类型[session=\"true|false\"]指定jsp是否参加http会话[buffer=\"none|8kb|sizekb\"]指定输出缓冲区的大小[autoFlush=\"true|false\"][isThreadSafe=\"true|false\"][info=\"text\"][errorPage=\"relativeURL\"]用相对URL指定另一个jsp页面来处理错误[isErrorPage=\"true|false\"]指定是否要用另一个jsp页面来处理错误%>4.JSP隐含变量(内置对象)JSP有以下九种内置对象,包括:request,请求对象(是HttpServletRequest的隐含变量)session,会话对象(是HttpSession的隐含变量)application,应用程序对象(是ServletContext的隐含变量)page,页面对象response,响应对象pageContext,页面上下文对象out,输出对象config,配置对象exception,例外对象5.作用域对象应用作用域application:ServletContext:在整个web应用程序有效会话作用域session:HttpSession:在一个用户会话范围内有效请求作用域request:ServletRequest:在用户的请求和转发的请求内有效页面作用域page:PageContext:只在当前页面内有效6.Web组件重用与JavaBeans1.静态包含和动态包含静态包含是在JSP页面转换阶段将另一个文件的内容包含到当前JSP文件中产生一个servlet。静态包含使用include指令,语法:<%@includefile=\"relativeURL\"%>包含的文件在当前Web应用程序下,可以是任何基于文本的文件,如HTML、JSP、XML文件,甚至是简单的.txt文件。动态包含是通过JSP标准动作实现的,它是在请求时将另一个页面的输出包含到主页面的输出中。动态包含使用jsp:include标准动作,其语法如下所示:<%@cincludefile=””%>使用修改了被包含的文件后,需更新源文件包含外部页面的过程在原JSP页面被编译成Servlet时进行修改了被包含的文件后,不需更新源文件包含外部页面的过程在运行时进行动作把请求转发到其他组件,然后由转发到的组件把响应发送给客户该动作的格式为:式。它与动作的不同之处在于,当转发到的页面处理完输出后,并不将控制转回主页面。使用动作,主页面也不能包含任何输出。2.JavaBeans及序列化JavaBean就是使用Java语言定义的类,而这种类的设计需要遵循Sun制定的JavaBean规范文档中描述的有关约定。在Java模型中,通过JavaBean可以无限扩充Java程序的功能。JavaBean的最大好处是可以实现代码的重复利用,另外在JSP页面中使用JavaBean可使代码更简洁,也易维护,也可充分利用面向对象语言的特性。在JSP程序中常用JavaBean来封装业务逻辑、数据库操作等等,可以很好地实现业务逻辑和表示逻辑的分离。3.Javabeans规范遵循下面3个规范的Java类作为JavaBean类必须是public的;类必须具有无参数的public构造方法,JavaBeans类的成员变量一般称为属性(property)。对每个属性访问权限一般定义为private或protected,而不是定义为public的。注意:属性名必须以小写字母开头。对每个属性,一般定义两个public方法,它们分别称为访问方法(getXxx)和修改方法(setXxx),允许容器访问和修改bean的属性。JavaBean的主要特性是一个Java类有一个无参数的构造函数不应该有公开的实例变量对值的获取采用getXxx和setXxx方法来访问boolean型属性,允许用is代替get和set4.在Servlet中使用JavaBeans通过JavaBeans共享数据//创建实例并设置属性CustomerBeancustomer=newCustomerBean();customer.setCustName(request.getParameter(\"custName\"));customer.setEmail(request.getParameter(\"email\"));customer.setPhone(request.getParameter(\"phone\"));request.setAttribute(\"customer\"customer);getServletContext().getRequestDispatcher(\"/customer.jsp\").forward(request,response);5.在JSP中使用JavaBeanspage属性的值为转发到的组件的相对URL,它可以使用请求时属性表达使用动作通过五个属性来定制该动作的行为:id、scope、class、type、beanName使用<%@pageimport=\"com.model.CustomerBean\"%>使用6.理解MVC设计模式及其开发步骤理解MVC设计模式Model—代表了数据对象,用JavaBeans实现View—用来在屏幕上显示数据对象的当前状态,是应用程序的外观,用JSP页面实现Controller—定义了用户接口对用户输入反应的方式,它处理数据对象,用Servlet实现开发步骤1.定义JavaBeans表示数据2.使用Servlet处理请求3.调用业务逻辑完成相应功能,填写JavaBeans对象数据4.结果的存储5.转发请求到JSP页面6.从JavaBeans对象中提取数据7.JDBC数据库访问1.JDBC数据库访问的一般步骤1)加载驱动程序:使用Class类的forName()静态方法,如Class.forName(\"com.mysql.jdbc.Driver\");2)建立连接对象:使用DriverManager类的getConnection(),如Stringdburl=jdbc:mysql://localhost:3306/bankConnectionconn=DriverManager.getConnection(dburl,\"root\\"111111\");3)创建语句对象:使用Connection接口的不同方法创建,如Statementstmt=conn.createStatement();4)获得SQL语句的执行结果:对于查询语句,调用executeQuery(Stringsql)方法,如:Stringsql=\"SELECT*FROMbooks\";ResultSetrst=stmt.executeQuery(sql);while(rst.next()){out.print(rst.getString(1)+\"\\");}对于语句如CREATE、ALTER、DROP、INSERT、UPDATE、DELETE等须executeUpdate(Stringsql)方法。5)关闭建立的对象:close()方法释放资源2.JDBCAPI:Connection接口、Statement接口、ResultSet接口3.理解DAO设计模式DAO(DataAccessObject)称为数据访问对象。DAO设计模式可以在使用数据库的应用程序中实现业务逻辑和数据访问逻辑分离,从而使应用的维护变得简单。它通过将数据访问实现(通常使用JDBC技术)封装在DAO类中,提高应用程序的灵活性。8.自定义标签1.自定义标签的开发步骤创建标签处理类(taghandler);创建标签库描述文件(TLD);在JSP文件中导入标签库和使用标签。2.理解TLD文件1.0http://localhost/sampleLibhello2sampleLib.HelloTag2emptyPrintsHellouser!userfalsetrue3.空标签、带属性标签和带标签体的开发在JSP页面要使用自定义标签,需要通过指令声明自定义标签的前缀和标签库的URI,格式如下所示:<%@taglibprefix=\"test\"uri=\"http://localhost/sampleLib\"%>hello.jsp的代码如下:<%@pagecontentType=\"text/html\"%><%@taglibprefix=\"test\"uri=\"http://localhost/sampleLib\"%>UsingCustomTag<
'/>
9.Web事件处理与过滤器1.监听并处理Servlet上下文事件的例子实现ServletContextListener接口:MyServletContextListener.java在web.xml添加以下代码注册事件event.MyServletContextListenerlistenerTest.jsp页面对进行测试:数据库连接对象的使用:2.理解Web应用的事件模型3.处理监听事件的开发4.过滤器的概念、作用和工作原理过滤器是Web服务器上的组件,它们对客户和资源之间的请求和响应进行过滤。过滤器的一些常见应用包括:•登录和审计过滤器•验证过滤器•图像转换过滤器•数据压缩过滤器•加密过滤器•XSLT(eXtensibleStylesheetLanguageTransformation,可扩展样式表语言转换)过滤器当容器接收到对某个资源的请求,它要检查是否有过滤器与之关联。如果有过滤器与该资源关联,容器将把该请求发送给过滤器,而不是直接发送给资源。在过滤器处理完请求后,它将做下面3件事:•产生响应并将其返回给客户;•如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;•将请求传递给不同的资源。当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。5.开发过滤器的步骤编写代码,编译,部署和运行