MVC三层架构在各框架中的特征(注:为了展示笔记的完整性,建议用web版式打开观看,效果更佳。)1.基于web开发中最原始的jsp+Servlet图形化理解jsp+servlet结构:Server请求响应1.从结构上分析jsp+servlet图解原理:在基于mvc设计模式下的最原始的jsp+Servlet框架,在某种程度上是不能够达到mvc最直观的体现。当客户端发送请求到服务器时,服务器会将从客户端接收到的信息通过封装技术进行解析,在交给web容器,web容器会通过一篇web.xml的配置文件去找与之相匹配的servlet,此时servlet会开启一个线程,只要是符合web.xml中所配置的某一个servlet时,该servelt就会启动,然后servlet在去调用service或者service的接口实现类,service(impl)在去调用dao(impl),dao通过从数据库(Database)那获取到数据,在封装到model实体类中去。Servlet在完成这一系类的动作后,最终将为我们返回一个jsp页面,最后该页面在返回到客户端展示给客户。2.从web.xml配置上:ClientWeb容器Servlet1Servlet2Servlet3web.xmlviewJsp1Jsp2Jsp3Service(impl)Dao(impl)DataBase?xmlversion=1.0?web-appservletservlet-nameTextSerevlet/servlet-nameservlet-classcom.lh.serivlet.UserSerivlet/servlet-class/servletservlet-mappingservlet-nameTextSerevlet/servlet-nameurl-pattern/accessServlet/url-pattern/servlet-mapping/web-app注:需要用到的每一篇servlet都要写入它的配置文件。Web.xml的配置量大,繁杂。从性能优异的角度考虑,它的运行性能是最快的,但是开发性能就很有难度。3.控制器:Jsp+servlet的控制器是:工程中的每一个xxxServlet就充当一个控制器,但是必须去extendsHttpServlet,并重写publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}4.作用域对象ServletContext(上下文),也叫全局的作用域对象。Session(会话)服务器的一次会话中或者服务器超时。Request(请求)在一次请求的过程中。Respones(响应)5.数据绑定:没有,只能通过数组去获取页面的数据。6.类型转换:将jsp页面的数据转换为String类型。也可以是基本数据类型。但是要进行强制转换。7.有效性验证:可以在某一个需要用到Servlet的类中用java代码进行验证。也可以在jsp页面书写ajax代码进行验证或者是定义function()函数,在函数中用正则表达式加以判断。8.操作业务层对象调业务方法:在某一个XxxServlet中extendsHttpServlet并重写doPost()和doGet()方法,我们只需在doGet()或者doPost()中用request.getParameter()方法来得到页面的数据。如果我们要操作到业务层我们只需在当前的这个类中实例化出业务层的类,即XxxServicedao=newXxxServiceImpl();然后获取实体Bean对象中的属性。最后在我们需要用到数据访问层的哪一个具体的业务实现方法就用实例化出的dao调用所需方法即可。9.返回:可以返回对象,也可以返回具体要跳转的哪个页面。10.在js页面做显示:EL表达式,JSP脚本表达式11.标签:HTML标签,JSP自定义标记库,JSTL标准标记库。12.文件上传:页面需要怎样获取?formaction=”file”method=”post”enctype=”multipart/form-data”服务器怎么获得?1.必须导入文件上传的jar包。2.13.过滤器:我们自己定义的一个类XxxFilter必须implementsFilter接口,并实现它的三个方法,destroy(),doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException,init(FilterConfigarg0)。在doFilter()中调用chain.doFilter(request,response)方法,表示将请求交给下一个组件。2.基于web开发中的Struts1框架结构图1.从结构上分析Struts1图解原理:客户端发送请求到服务器,服务器将收到的信息传给web容器,这时,web容器会通过到web.xml配置文件中去查找那篇符合命名规范的action属性中的*.do,在交给ClientServletActionServlet(中央核心控制器)Web容器Jsp(视图)ActionActionActionStruts-congif.xml模型JavaBeanEJBweb.xmlFormBeanActionServlet(中央核心控制器),通过该配置,web容器将信息传给具体的某一个XxxAction,该XxxAction会继承Action,并重写它的publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{}方法,同时,我们可以在该XxxAction中去调用JavaBean中的实体对象。但是,需要注意的是,在ActionServlet到Action这一过程中,我们是通过Form组件技术来对jsp页面的信息来进行了一次封装,达到了前端页面(jsp)和后台的实体Bean对象之间的一次数据的绑定。最后再是到Struts-config.xml文件中进行进行配置,通过正确的配置找到所需的jsp.2从web.xml配置上:?xmlversion=1.0encoding=UTF-8?web-appxmlns=:xsi==2.4xsi:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdservletservlet-nameaction/servlet-nameservlet-classorg.apache.struts.action.ActionServlet/servlet-class!--主配置文件,param-name的值为config--init-paramparam-nameconfig/param-nameparam-value/WEB-INF/struts-lx.xml,/WEB-INF/struts-zh.xml/param-value/init-param!--子配置文件,param-name的值只能以config/开头init-paramparam-nameconfig/m1/param-nameparam-value/WEB-INF/struts-zh.xml/param-value/init-param--init-paramparam-namedebug/param-nameparam-value3/param-value/init-paraminit-paramparam-namedetail/param-nameparam-value3/param-value/init-paramload-on-startup0/load-on-startup/servletservlet-mappingservlet-nameaction/servlet-nameurl-pattern*.do/url-pattern/servlet-mappingfilterfilter-nameCharsetFilter/filter-namefilter-classcom.lovo.struts.filter.CharsetFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-paraminit-paramparam-nameignore/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharsetFilter/filter-nameurl-pattern*.do/url-pattern/filter-mappingfilter-mappingfilter-nameCharsetFilter/filter-nameurl-pattern*.jsp/url-pattern/filter-mappingwelcome-file-listwelcome-fileindex.jsp/welcome-file/welcome-file-list/web-app注:从上面的配置中我们可以看出,servlet的配置是必不可少的。3.控制器:ActionServlet是struts1的中央核心控制器,它在web.xml中配置成自动启动的Servlet,在启动时中央核心控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。4.作用域对象:5.数据绑定:6.类型转换:LoginFormloginF=(LoginForm)form;7.有效性验证:验证框架,不能重写Validate方法。也可以自定义验证规则,但是必须做配置。8.操作业务层对象调业务方法:9.返回:Action将业务处理的不同结果返回一个目标响应对象给中央核心控制器,或者返回一个页面mapping.findForward(success)10.在js页面做显示:EL表达式,自定义标签库,直接在jsp页面上写java代码。11.标签:12.文件上传:13.过滤器:Html标签Bean标签Logic标签html:text:生成表单中的文本输入项bean:write:输出bean的属性logic:equal:比较变量是否等于指定的值html:password:生成表单中的密码输入项bean:size:得到集合类型对象的元素个数