您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > Internet应用解决方案-MVC框架(servlet)
第六章MVC框架Internet应用解决方案目标MVC模式及其特点MVC的模式2介绍当今流行的MVC框架什么是MVCMVC架构是随着smalltalklanguage语言的发展提出的,它是一个著名的用户界面设计架构。MVC模式不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。什么是MVCModel(模型)模型包含应用程序的核心功能,管理这个模块中所用到的数据和值View(视图)视图提供模型的表示,管理模块如何显示给用户,它是应用程序的外观Controller(控制器)控制器对用户的输入作出反应,管理用户与视图发生的交互MVC尽管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础MVC模式的好处视图与模型分离,使程序结构清晰,不同功能模块耦合度降低,各司其职,互不干涉,可以方便改变视图而模型不变,或者保持视图不变而改变业务规则,有利于开发中的分工。多个视图共享一个模型,提高了代码复用。控制器提高了应用的灵活性和可配置性。JSP+JavaBean模式Model1的主要特点表现层用HTML或JSP。JSP文件还负责所有的业务和处理逻辑JSP直接用代码访问数据或JSP通过JavaBean存取数据。以页面为中心,应用程序的业务逻辑和程序流程都在页面中出现。Model1的缺点JSP不仅负责表示逻辑,还负责控制逻辑大型项目中如果采取此方式,每个开发小组协调困难当输出设备不同时(比如股票信息输出到显示器、手机、PDA上),需要采用不同的输出格式(即不同的视图),那么用此方式JSP不仅要判定设备的类型,而且要为不同类型的设备提供正确的显示格式。JSP+JavaBean+Servlet模式在一个典型的J2EEWeb应用中,MVC设计模式包括三个部分:模型(Model):用于封装数据及数据的处理,一般是关系数据库或EJB。视图(View):数据的表现组件,通常就是JSP页面,也可以是GUI,可以有多个。控制器(Controller):接受用户动作,负责统一管理。一般是Servlet。J2ee的MVC模式主流MVC框架介绍Struts:控制组件动作组件FormBeanJavaBeanJSP文件1.Http请求2.创建FormBean3.调用动作类4.创建JaveBean对象5.转发到JSP6.生成Http响应控制器模型视图主流MVC框架介绍WebWorkWebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。JSFJavaServerFaces(JSF)就是一个基于JAVA技术的Web应用框架标准,同时也是对于J2EE标准的一个重大补充ServletInternet应用解决方案Servlet概述Servlet模型的设计目的:它能接收客户端发送的HTTP请求,这个请求包含了客户端所有需要服务器知道的信息,根据请求的类型选择一个特定的Servlet方法处理该请求,并有效地向客户端返回响应。Serlvet是在Web服务器上运行的Java小程序。Servlet的特点Java语言编写的类服务器端小应用程序,与Applet对应根据用户请求,产生动态页面执行效率高,速度快;使用标准的API,多种WebServer均支持;可移植性:与操作系统和服务器平台无关;功能强大:能够访问JDK平台的所有资源安全性高:Servlet本身的API和容器保证安全Servlet的用途协调输出,但几乎不参与生成动态页面的工作。收集和验证用户输入,但几乎不作实际处理。处理简单的业务逻辑。(以便于维护)处理JSP不便处理的后台服务。Servlet的APIjavax.servlet包和javax.servlet.http包提供编写servlet所需的类和接口。所有servlets必须实现接口javax.servlet.Servlet,在该接口中定义了Servlet生命周期的各种方法。可通过继承javax.servlet.GenericServlet创建一个与协议无关的一般的Servlet通过继承javax.servlet.http.HttpServlet创建基于HTTP协议的servlet。HTTP到Servlet的方法映射HTTP的请求HttpServlet类的方法Get请求doGet()Post请求doPost()JavaSerlvet规范2.3作了如下规定:HTML中formmethod=“get/post”……..Servlet的执行过程Servlet在Web容器上(比如Tomcat)上运行客户机Web服务器Servlet引擎HTTPRequestHTTPResponseHTTPRequestHTTPResponseHTTPServletRequestHTTPServletResponseHttpServletservice(…)应用程序逻辑和生成的内容Servlet的执行过程Web容器装载、运行并管理Servlet的一般过程如下:①客户向Web容器(如Tomcat)发送HTTP请求②如果Servlet还没载入,容器就装入它。第一次装入之后,该Servlet就一直保留在内存中,直到容器决定把它卸载(通常是Tomcat停止运行)③Web容器把HTTP请求信息送给Servlet,给每一个用户请求创建一个新的线程。Servlet的执行过程④Servlet把HTTP请求转换成HttpServletRequest(该对象包含用户输入的数据或者请求参数),处理该请求之后,生成一个相应的HttpServletResponse,这两个对象传给Servlet的service(…)方法,由容器调用该方法,执行后将信息反馈到容器中。⑤容器把这些反馈信息回送到客户端浏览器。Servlet的生命周期生命全过程:1.加载servlet需要的类及servlet类本身2.实例化3.初始化(init)4.处理请求(service,doGet,doPost)5.退出服务(destroy)Servlet的生命周期HttpServlet中对应生命周期的方法:init()publicvoidinit(ServletConfigconfig)throwsServletExceptionservice()publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,java.io.IOException该方法根据HTTP请求,调用doGet(…)或doPost(...)用于接收来自Client的请求、获取请求中的数据,编写响应的标题、获取响应的输出流以及编写响应的数据。destroy()publicvoiddestroy()用于释放本servlet所占用的所有资源,如线程或数据库连接,并将数据保存到文件或者数据库中。Client2Servlet的生命周期init()service()service()service()service()service()service()destroy()service()时间Client1Client3Servlet的生命周期Servlet生命周期的顺序图ServletRequest在HTTP协议下,从客户请求传来的所有信息可通过请求字符串以http头以及请求体中的消息,从客户端传到服务器端。在HTTP请求发送到服务器后,请求对象就被转换成ServletRequest对象了。Servlet容器还将创建一个相应的ServletResponse对象,向客户端所在的浏览器发送响应数据。它们将被转换为相应的HttpServletRequest,HttpServletResponse对象,然后传给Servlet进行相应的请求处理。ServletRequestgetParameterNames获取客户提交的表单中所有参数名的集合getParameter(ParamName)获取参数名为ParamName的参数值getParameterValues(ParamName)获取参数名为ParamName的参数值的集合getInputStream()得到一个输入流用来读取二进制数据ServletResponse常用方法:setContentType(text/html;charset=gb2312);设置文档输出类型ServletOutputStreamout=response.getOutputStream();获取字节形式的输出流PrintWriterout=response.getWriter();获取字符输出流sendRedirect(Stringlocation)URL重定向ServletRequestForm表单(first_servlet.html)htmlheadtitle第一个JSP程序/titlemetacontent=text/html;charset=gb2312/headbodybgcolor=#FFFFFFformmethod=getaction=./firstpFirstName:inputtype=textname=firstnamepLastName:inputtype=textname=lastnameinputtype=submitname=submitvalue=提交/form/body/htmlServletRequestLogon.javapublicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();StringUserName=request.getParameter(“FirstName);UserName=newString(UserName.getBytes(ISO8859_1),GB2312);out.println(HTMLBODY);out.println(Hello,+UserName);out.println(/BODY/HTML);out.close();}WEB应用的结构WEB应用根目录│└─WEB-INF│web.xml│├─classes│└─training│└─servlet│SimpleServlet.class│└─libWEB应用描述文件?xmlversion=1.0encoding=UTF-8?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN请求调度方法将HTTP请求从一个
本文标题:Internet应用解决方案-MVC框架(servlet)
链接地址:https://www.777doc.com/doc-6340340 .html