您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 第10章 Java Servlet技术
第10章JavaServlet技术主要内容:Servlet概述如何编写ServletServlet与客户端的交互Servlet过滤器Servlet监听器2010.1Servlet概述10.1.1什么是Servlet什么是Servlet?Servlet是用Java语言编写的运行在服务器端的小应用程序,能够接收Web客户端的请求,并能对Web客户端进行响应,通过HTTP协议进行工作。Servlet与JSP:从功能上说,两者是完全一样的。不同的是,JSP是将Java代码或JSP标签嵌入Web页面中,而Servlet是纯Java代码文件。Servlet与Applet:Applet是运行于客户端的,而Servlet则运行在服务器端,可以把Servlet看作是服务器端的Applet。10.1.1什么是ServletServlet的生命周期Servlet加载:由Web容器在服务器启动时或第一次访问Servlet时加载。初始化:加载后首先调用构造方法创建实例,然后调用init方法完成初始化。服务:当客户端向Servlet发送请求时,服务器就会创建2个对象,一个是HttpServletRequest,用于获取请求信息;另一个为HttpServletRsponse,用于输出响应信息。通过调用这两个对象的doGet或doPost方法完成请求的处理和响应。删除:在服务器关闭时或不再需要Servlet时调用destroy方法删除并释放资源。10.1.1什么是ServletServlet的主要方法init()方法:destroy()方法:service()方法:包括doGet()、doPost()等10.1.2相关接口和类javax.servlet.Servlet用于定义所有Servlet必须实现的方法。javax.servlet.GenericServlet抽象类,实现了Serlvet和ServletConfig接口,用于定义通用的、与协议无关的Servlet。javax.servlet.http.HttpServlet继承自GenericServlet,主要用于派生用于Web站点的HTTPServlet,也是一个抽象类。如果要编写一个HTTPServlet,最少需要覆盖一个方法,通常是下面几个方法中的一个:doGet方法、doPost方法、doPut方法或者doDelete方法必要的时候可以继承init和destroy方法、getServletInfo方法10.1.2相关接口和类javax.Servlet.http.HttpServletRequest是一个接口,能够为HTTPServlet提供请求信息,通常由服务器根据请求信息创建该接口的对象,然后把该对象作为参数去调用service方法主要方法:•getParameter和getParameterValues:前者获取单值表单元素的值,后者用于获取多值表单元素的值•getRemoteAddr:获取远程主机地址;•getRemoteHost:获取远程主机;•getServerName:获取服务器的名字;•getServerPort:获取端口号;•getProtocol:获取使用的协议;•getMethod:获取请求方式;•getQueryString:获取请求字符串;•getRequestURL:获取请求的地址。10.1.2相关接口和类javax.servlet.http.HttpServletResponse也是一个接口,与HttpServletRequest相反,主要定义的是与响应相关的方法。主要方法:•设置HTTPHeader的方法•设置Cookie的方法•用于重定向的方法sendRedirect()javax.servlet.http.HttpSession该接口提供了一种方式,能够保存用户在访问网站过程中的信息。10.2制作一个Servlet的完整过程编写Servlet(FirstServlet.java)引入相关包importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;定义类的基本框架并继承HttpServletpublicclassFirstServletextendsHttpServlet编写成员方法成员方法包括:init、service、destroy。编译ServletjavacFirstServlet.java注意:Java标准版中不含有Servlet相关的类库,需要安装JavaEE环境包javaee.jar或把weblogic自带的weblogic.jar加入类搜索路径中。配置Servlet在配置文件web.xml中进行配置配置包括两部分,第一部分是Servlet的声明,第二部分是Servlet访问方式的设置。Servlet的声明:servletservlet-namehello/servlet-nameservlet-classch10.FirstServlet/servlet-class/servlet配置Servlet的方式:servlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/url-pattern/servlet-mapping必须与前面的声明同名可以是其它名字,与hello对应部署Servlet编译好的文件需要放在Web应用的WEB-INF\classes下面。在myEclipse中通常会自动完成部署。访问Servlet对Servlet的访问与对JSP的访问基本相同,可以通过以下3种方式进行:通过在浏览器中直接输入地址访问通过超链的形式访问ahref=第一个Servlet/a通过表单提交的方式访问formmethod=getaction=与客户端的交互通过request对象获取请求信息request对象通过Servlet服务方法的参数传入Servlet。它包含许多非常有用的方法,通过这些方法可方便地获取客户端信息。获取客户端传入参数的方法用得最多:StringgetParameter(Stringname)String[]getParamterValues(Stringname)注:式中name为客户端表单提交的参数名,可以是单值变量,也可以是数组。如:req.getParameter(“username”);//用于取得登录页面传递过来的登录用户名。※request对象方法示例request.jsp对session进行操作获取session对象HttpSessionsession;session=request.getSession(true);在session中存储信息session.setAttribute(name,value);从session中获取信息session.getAttribute(name);删除session中存储的信息session.remove(name);使session失效session.invalidate();通过response对象响应用户请求设置响应内容的MIME类型response.setContentType(text/html;charset=gb2312);创建输出流对象PrintWriterout=response.getWriter();使用out对象响应用户out.println(这是通过Servlet响应用户的信息);【实例】登录过程模拟涉及到2个文件:login.jsp:输入用户登录信息,以post方式提交给Servletlogin.java:用于处理登录信息的Servlet,若登录成功则将用户名写入ssesion,否则转向登录页面。使用CookieCookie的创建CookiemyCookie=newCooke(username,lixucheng);添加Cookieresponse.addCookie(myCookie);读取CookieCookie[]cookies=request.getCookie();for(inti=0;icookies.length;i++)if(cookies[i].getName().equals(username)){username=cookies[i].getValue();break;}【实例】使用cookie本例首先让用户输入Cookie的相关信息,然后调用Servlet创建Cookie并将输入的信息写入客户端,然后调用查看Cookie的Servlet访问Cookie中的信息。相关文件如下:addCookie.jsp:输入Cookie信息的JSP页面addCookie.java:创建并添加Cookie信息的ServletseeCookie.java:查看Cookie信息的Servlet转发请求语句:RequestDispatcherrs=request.getRequestDispatcher(hello.jsp);rd.forward(request,response);注:与JSP的jsp:forword动作标签的作用相同。10.4Servlet过滤器Servlet过滤器简介Servlet过滤器是一种特殊的Servlet,Servlet过滤器可以对用户的访问请求信息和响应信息进行过滤。Servlet过滤器需要与特定的URL进行绑定,这样一旦用户访问此URL就会触发过滤器工作。可以将多个过滤器串联在一起形成过滤管道,协同写成不同的过滤任务。创建Servlet过滤器所有Servlet过滤器类必须实现javax.servlet.Filter接口,同时需要继承HttpServlet。接口中的主要方法有:init(FilterConfig):初始化,从网站配置文件web.xml中读取过滤器参数设置doFilter(ServletRequest,ServletResponse,FilterChain):执行过滤操作destory():删除过滤器对象实例【示例】LoginFilter.java就是用于过滤Login.java的过滤器配置过滤器和Servlet一样,过滤器需要在web.xml中配置。一是声明Servlet过滤器,二是配置Servlet过滤器对应的URL。Servlet过滤器的声明filterfilter-name过滤器名字/filter-namefilter-class过滤器类名/filter-classinit-paramparam-name参数名/param-nameparam-value参数值/param-value/init-param/filterServlet过滤器的映射filter-mappingfilter-name过滤器名字/filter-nameurl-pattern访问路径/url-pattern/filter-mapping串联Servlet过滤器多个Servlet过滤器可以串联起来协同工作,每个Servlet过滤器完成不同的过滤任务。Servlet容器根据它们在web.xml中定义的先后顺序,依次调用它们的doFilter方法。10.5处理Servlet生命周期事件通过创建监听器可以对Servlet生命周期的相关事件进行跟踪并作出响应。当某个事件发生时,相应方法的代码就会自动执行。Servlet相关事件及Liste
本文标题:第10章 Java Servlet技术
链接地址:https://www.777doc.com/doc-4228468 .html