您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > ORACLE官方培训servlet-3新特性中文版
在此处插入图片JavaEE6Servlet3.0中的新特性2在此处插入图片议题•易于开发和部署•模块化web.xml•动态配置•异步Servlet3•用于Web应用程序的功能全面的中型profile•webprofile中的各种技术–Servlet3.0、JSP2.1、对其他语言的调试支持、EL1.2、JSTL1.2、JSF2.0–EJBLite3.1、JTA1.1、JPA2.0、通用批注–Beanvalidation1.0WebProfile完整的JavaEE6WebProfile4在此处插入图片易于开发和部署5简化的打包foo.earfoo_web.warWEB-INF/web.xmlWEB-INF/classescom.sun.FooServletcom.sun.TickTockfoo_ejb.jarcom.sun.FooBeancom.sun.FooHelperfoo.warWEB-INF/classescom.sun.FooServletcom.sun.TickTockcom.sun.FooBeancom.sun.FooHelperJavaEE5JavaEE66Servlet—下一代•Servlet3.0—易于开发–主要关注点•增强了API以便使用SE5中新的语言特性–例如:批注、泛型(Generics)–在上次JavaEE5中漏掉的Servlet•部署描述批注–现在web.xml为可选•用于保证API类型安全的泛型(Generics)–不影响后向兼容性•惯例优先原则(Conventionover)–更好的默认值–例外配置7Servlet2.xpublicclassHelloServletextendsHTTPServlet{publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsException{…}}web-appservletservlet-nameHelloServlet/servlet-nameservlet-classmyservlet.HelloServlet/servlet-class/servletservlet-mappingservlet-nameHelloServlet/servlet-nameurl-pattern/hello/url-pattern/servlet-mapping.../web-app8Servlet3.0—示例1无web.xml@WebServlet(name=‖HelloServlet‖,urlPatterns=―/hello‖)publicclassHelloServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsException{...}//name=‖HelloServlet‖,urlPatterns=‖/hello‖@WebServlet(―/hello‖)publicclassHelloServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsException{...}9@WebServlet•用于指定servlet•批注至少必须有urlPattern–urlPattern属性是默认属性•即value()•所有其他字段都有合理的默认值–例如,servlet的名称默认为servlet的全称类名•类的其余内容与之前相同–必须扩展HttpServlet类–重写doXXX()来处理行为•@WebListener、@WebFilter的工作方式相同10Servlet3.0—示例3@WebServlet(urlPatterns=“/hello”,loadOnStartup=1,initParams={@InitParam(name=”db”,value=”jdbc:derby...”),@InitParam(name=”dbuser”,value=”fred”),@InitParam(name=”dbpasswd”,value=”fred”)})publicclassHelloServletextendsHttpServlet{publicvoidinit(ServletConfigconfig)throwsServletException{Stringjdbc=config.getInitParameter(“db”);…}…11使用批注•用于部署servlet、过滤器、监听器的批注–@WebServlet—向web.xml中添加servlet项–@WebFilter—添加过滤器项–@WebListener—添加监听器项–@WebInitParam—添加参数项–@MultiPartConfig—表示servlet要求使用mime/multipart数据格式•在部署时使用web.xml覆盖批注值12Servlet3.0—示例2@WebFilter(urlPatterns=“/hello”,dispatcherTypes={DispatcherType.FORWARD})publicclassHelloServletFilterimplementsFilter{publicvoiddoFilter(HttpServletRequestreq,HttpServletResponseres){...}13Multipart支持•Multipart格式用于在HTTP流中分割传输内容–通常是表单数据、非ASCII数据、二进制数据等formaction=‖/upload‖Name:inputname=‖filename‖type=‖text‖/Filetoupload:inputname=‖myfile‖type=‖file‖/inputtype=‖submit‖value=‖Upload‖/formPOST/uploadHTTP/1.0Content-Type:multipart/form-data;boundary=----ABCDEFGHIJK…----ABCDEFGHIJKContent-Disposition:form-data;name=‖filename‖uploaded_file.txt----ABCDEFGHIJKContent-Disposition:form-data;name=‖myfile‖;filename=‖a_text_file.txt‖…14Multipart支持•Servlet目前原生支持multipart数据–以前必须借助于第三方库•获得MIME内容的新方法–HttpServletRequest.getParts()–IterablePart–HttpServletRequest.getPart(Stringname)–String•类似功能–HttpServletRequest.getParameter(―name‖)–HttpServletRequest.getPart(―name‖)•比前者更通用的形式15@MultipartConfig批注•帮助servlet容器确定哪个servlet将处理multipart数据•配置容器处理数据的方式–临时文件的位置–最大文件大小@WebServlet(―/hello‖)@MultipartConfig(location=‖/tmp‖)publicclassHelloServletextendsHttpServlet{publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres){Partpart=req.getPart(―myfile‖);InputStreamis=part.getInputStream();//Readinfile...}16在此处插入图片模块化web.xml17最新发展—web.xml•多种非常高效的web框架•框架的使用需要(可能是复杂的)配置–如果使用多种框架则难以管理—复杂性增加–需要知道各框架之间的整合方式•例如–声明控制器servlet及其参数–处理请求前后所使用的过滤器–声明监听器以便管理应用程序生命周期的各点•很多这种配置在应用程序间通用18模块化web.xml•允许在没有框架配置的情况下使用框架–为您的应用程序保留web.xml–将框架配置工作放在框架这边•允许框架将它们的web.xml存储在自己的JAR中–在应用程序启动期间合并它们•web.xml分段的概念19web.xml与web-fragment.xmlweb.xmlservlet…/servletweb-fragment.xmlservlet…/servletweb-fragment.xmlservlet…/servlet来自框架的JAR20web-fragment.xml•用于指定整个web.xml的一部分•除根元素外与web.xml相同–web-fragment•位于框架的JAR中–META-INF/web-fragment.xml–JAR文件必须位于WEB-INF/lib中21web-fragment.xml示例web-fragmentcontext-paramparam-namejavax.faces.STATE_SAVING_METHOD/param-nameparam-valueclient/param-value/context-param...servletservlet-nameFacesServlet/servlet-nameservlet-classjavax.faces.webapp.FacesServlet/servlet-classload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameFacesServlet/servlet-nameurl-pattern*.jsf/url-pattern/servlet-mapping.../web-fragment22web-fragment.xml示例jsf_framework.jarMETA-INF/web-fragment.xmlmywebapp.warWEB-INF/lib/jsf_framework.jar23资源共享•静态页面和JSP页面,资源不再局限于应用程序的DOCROOT–允许框架捆绑自己的资源•资源位于框架的JAR文件中–META-INF/resources–ServletContext.getResourceAsStream()将知道如何解析资源位置•应用程序DOCROOT中的资源优先于框架JAR文件中的资源–如果存在命名空间冲突•―/‖对应DOCROOT或META-INF/resources24资源共享示例mywebapp.war/index.jsp/WEB-INF/lib/framework.jar!/META-INF/web-fragment.xml/META-INF/resources/index.jsp/META-INF/resources/shared.jsp!/WEB-INF/lib/framework.jar!/META-INF/resources/shared.jsp!/index.jsp25在此处插入图片
本文标题:ORACLE官方培训servlet-3新特性中文版
链接地址:https://www.777doc.com/doc-4803986 .html