java的MVC是什么?MVC是一种通用的编程思想,独立于语言 。MVC意思是Model(模型) View(视图) Controller(控制器) 。其中Model指的就是数据模型,负责封装数据、处理数据;View负责展示用户界面;Controller用于协调模型和视图,负责接收用户请求 。
java中 MVC 三层架构MVC模式是"Model-View-Controller"javamvc代码生成的缩写,中文翻译为"模式-视图-控制器" 。MVC应用程序总是由这三个部分组成 。Event(事件)导致Controller改变Model或View,或者同时改变两者 。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新 。类似的 , 只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己 。MVC模式最早是smalltalk语言研究团提出的 , 应用于用户交互应用程序中 。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式 。MVC模式是一种架构模式,其实需要其他模式协作完成 。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成 。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中 。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂 。但是 , 我们已经终结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行 。Views可以看作一棵树,显然可以用Composite Pattern来实现 。Views和Models之间的关系可以用Observer Pattern体现 。Controller控制Views的显示,可以用Strategy Pattern实现 。Model通常是一个调停者,可采用Mediator Pattern来实现 。
现在让我们来了解一下MVC三个部分在J2EE架构中处于什么位置 , 这样有助于我们理解MVC模式的实现 。MVC与J2EE架构的对应关系是:View处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分 。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现 。Model处于Middle Tier , 通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现 。
一、MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层 。
视图(View)代表用户交互界面,对于Web应用来说 , 可以概括为HTML界面,但有可能为XHTML、XML和Applet 。随着应用的复杂性和规模性,界面的处理也变得具有挑战性 。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理 , 以及用户的请求,而不包括在视图上的业务流程的处理 。业务流程的处理交予模型(Model)处理 。比如一个订单的视图只接受来自模型的数据并显示给用户 , 以及将用户界面的输入数据和请求传递给控制和模型 。
模型(Model)javamvc代码生成:就是业务流程/状态的处理以及业务规则的制定 。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果 。业务模型的设计可以说是MVC最主要的核心 。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件 , 但它不能作为应用设计模型的框架 。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难 。对一个开发者来说,就可以专注于业务模型的设计 。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要 , 这也是判断开发人员是否优秀的设计依据 。抽象与具体不能隔得太远 , 也不能太近 。MVC并没有提供模型的设计方法 , 而只告诉你应该组织管理这些模型 , 以便于模型的重构和提高重用性 。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些 , 但没法限制你能做这些 。这点对编程的开发人员非常重要 。
业务模型还有一个很重要的模型那就是数据模型 。数据模型主要指实体对象的数据 保存(持续化) 。比如将一张订单保存到数据库,从数据库获取订单 。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中 。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起 , 共同完成用户的请求 。划分控制层的作用也很明显,它清楚地告诉你 , 它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求 。控制层并不做任何的数据处理 。例如,用户点击一个连接 , 控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户 。因此 , 一个模型可能对应多个视图,一个视图可能对应多个模型 。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图 。如果用户通过某个视图的控制器改变了模型的数据 , 所有其它依赖于这些数据的视图都应反映到这些变化 。因此,无论何时发生了何种数据变化 , 控制器都会将变化通知所有的视图,导致显示的更新 。这实际上是一种模型的变化-传播机制 。模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示 。
二、MVC设计模式的实现
ASP.NET提供了一个很好的实现这种经典设计模式的类似环境 。开发者通过在ASPX页面中开发用户接口来实现视图javamvc代码生成;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分 。在ASP.NET中实现这种设计而提供的一个多层系统,较经典的ASP结构实现的系统来说有明显的优点 。将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性 。将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统 。就MVC结构的本质而言,它是一种解决耦合系统问题的方法 。
2.1 视图
视图是模型的表示,它提供用户交互界面 。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员 , 美工能独自参与这些Web页面的开发和维护 。
在ASP.NET下,视图的实现很简单 。可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本 。本文中介绍每一个页面都采用复合视图的形式即:一个页面由多个子视图(用户部件)组成;子视图可以是最简单HTML 控件、服务器控件或多个控件嵌套构而成的Web自定义控件 。页面都由模板定义 , 模板定义了页面的布局,用户部件的标签和数目 , 用户指定一个模板,平台根据这些信息自动创建页面 。针对静态的模板内容 , 如页面上的站点导航,菜单 , 友好链接 , 这些使用缺省的模板内容配置;针对动态的模板内容(主要是业务内容),由于用户的请求不同,只能使用后期绑定,并且针对用户的不同,用户部件的显示内容进行过滤 。使用由用户部件根据模板配置组成的组合页面,它增强了可重用性,并原型化了站点的布局 。
视图部分大致处理流程如下:首先,页面模板定义了页面的布局;页面配置文件定义视图标签的具体内容(用户部件);然后,由页面布局策略类初始化并加载页面;每个用户部件根据它自己的配置进行初始化,加载校验器并设置参数,以及事件的委托等;用户提交后 , 通过了表示层的校验,用户部件把数据自动提交给业务实体即模型 。
这一部分主要定义了WEB页面基类PageBase;页面布局策略类PageLayout , 完成页面布局,用于加载用户部件到页面;用户部件基类UserControlBase即用户部件框架 , 用于动态加载检验部件,以及实现用户部件的个性化 。为了实现WEB应用的灵活性,视图部分也用到了许多配置文件例如:置文件有模板配置、页面配置、路径配置、验证配置等 。
2.2 控制器
为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理 。因此,为了达到集中管理的目的引入了控制器 。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能 , 然后将产生下一步用户界面的责任委派给一个适当的视图组件 。
用控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类 , 根据当前状态和业务操作的结果决定向客户呈现的视图 。在这一部分主要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(控制器类)等,它们相互配合来完成控制器的功能 。请求捕获者类捕获HTTP请求并转发给控制器类 。控制器类是系统中处理所有请求的最初入口点 。控制器完成一些必要的处理后把请求委托给分发者类;分发者类分发者负责视图的管理和导航 , 它管理将选择哪个视图提供给用户,并提供给分发资源控制 。在这一部分分别采用了分发者、策略、工厂方法、适配器等设计模式 。
为了使请求捕获者类自动捕获用户请求并进行处理 , ASP.NET 提供低级别的请求/响应 API,使开发人员能够使用 .NET 框架类为传入的 HTTP 请求提供服务 。为此 , 必须创作支持 System.Web.IHTTPHandler 接口和实现 ProcessRequest() 方法的类即:请求捕获者类,并在web.config 的 <httphandlers> 节中添加类 。ASP.NET 收到的每个传入 HTTP 请求最终由实现 IHTTPHandler 的类的特定实例来处理 。IHttpHandlerFactory 提供了处理 IHttpHandler 实例 URL 请求的实际解析的结构 。HTTP 处理程序和工厂在 ASP.NET 配置中声明为 web.config 文件的一部分 。ASP.NET 定义了一个 <httphandlers> 配置节 , 在其中可以添加和移除处理程序和工厂 。子目录继承 HttpHandlerFactory 和 HttpHandler 的设置 。HTTP 处理程序和工厂是 ASP.NET 页框架的主体 。工厂将每个请求分配给一个处理程序,后者处理该请求 。例如,在全局 machine.config 文件中,ASP.NET 将所有对 ASPx 文件的请求映射到 HttpCapture类:
<httphandlers>
...
...
</httphandlers>
2.3 模型
MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作 。模型是你所有的商业逻辑代码片段所在 。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类 。业务处理对象封装了具体的处理逻辑 , 调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应 。业务实体对象可以通过定义属性描述客户端表单数据 。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写 , 而不再需要和request、response对象进行数据交互 。通过业务实体对象实现了对视图和模型之间交互的支持 。实现时把"做什么"(业务处理)和"如何做"(业务实体)分离 。这样可以实现业务逻辑的重用 。由于各个应用的具体业务是不同的,这里不再列举其具体代码实例 。
三、MVC设计模式的扩展
通过在ASP.NET中的MVC模式编写的 , 具有极其良好的可扩展性 。它可以轻松实现以下功能:
①实现一个模型的多个视图;
②采用多个控制器;
③当模型改变时,所有视图将自动刷新;
④所有的控制器将相互独立工作 。
这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类 , 即可轻松增加许多程序功能 。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立 , 便于团体开发,提高开发效率 。下面讨论如何实现一个模型、两个视图和一个控制器的程序 。其中模型类及视图类根本不需要改变 , 与前面的完全一样,这就是面向对象编程的好处 。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可 。该模式下视图、控制器、模型三者之间的示意图如图2所示 。
同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器 。从上面可以看出,通过MVC模式实现的应用程序具有极其良好的可扩展性 , 是ASP.NET面向对象编程的未来方向 。
四、MVC的优点
大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程 。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性 。产品设计弹性力度很小 , 很难满足用户的变化性需求 。MVC要求对应用分层,虽然要花费额外的工作 , 但产品的结构清晰,产品的应用通过模型可以得到更好地体现 。
首先 , 最重要的是应该有多个视图对应一个模型的能力 。在目前用户需求的快速变化下,可能有多种方式访问应用的要求 。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样 , 也就是说订单的处理是一致的 。按MVC设计模式,一个订单模型以及多个视图即可解决问题 。这样减少了代码的复制,即减少了代码的维护量 , 一旦模型发生改变,也易于维护 。其次,由于模型返回的数据不带任何显示格式 , 因而这些模型也可直接应用于接口的使用 。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变 。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层 。
控制层的概念也很有效 , 由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念 。
最后 , 它还有利于软件工程化管理 。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码 。
五、MVC的不足
MVC的不足体现在以下几个方面:
(1)增加了系统结构和实现的复杂性 。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率 。
(2)视图与控制器间的过于紧密的连接 。视图与控制器是相互分离 , 但确实联系紧密的部件 , 视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用 。
(3)视图对模型数据的低效率访问 。依据模型操作接口的不同 , 视图可能需要多次调用才能获得足够的显示数据 。对未变化数据的不必要的频繁访问,也将损害操作性能 。
(4) 目前,一般高级的界面工具或构造器不支持MVC模式 。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难 。
Java中的MVC是什么?一、什么是MVC
Model:模型层
View:视图层
Controller:控制层
MVC (Modal View Controler)本来是存在于Desktop程序中的 , M是指数据模型,V是指用户界面,C则是控制器 。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式 。比如一批统计数据你可以分别用柱状图、饼图来表示 。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新 。
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用 。最近几年被推荐为Sun公司J2EE平台的设计模式 , 并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎 。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点 。
二、MVC如何工作
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开 。使用MVC应用程序被分成三个核心部件:模型、视图、控制器 。它们各自处理自己的任务 。
视图
视图是用户看到并与之交互的界面 。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL , WML等一些标识语言和Web services.
如何处理应用程序的界面变得越来越有挑战性 。MVC一个大的好处是它能为你的应用程序处理很多不同的视图 。在视图中其实没有真正的处理发生 , 不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式 。
模型
模型表示企业数据和业务规则 。在MVC的三个部件中,模型拥有最多的处理任务 。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库 。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据 。由于应用于模型的代码只需写一次就可以被多个视图重用 , 所以减少了代码的重复性 。
控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求 。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理 。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据 。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据 , 最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户 。
三、为什么要使用 MVC
大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化语言来创建的 。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起 。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试 。MVC从根本上强制性的将它们分开 。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的 。
首先,最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来访问你的应用程序 。对此,其中一个解决之道是使用MVC , 无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们 。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了 。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用 。例如,很多数据可能用HTML来表示,但是它们也有可能要用Macromedia Flash和WAP来表示 。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序所重用 。
因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则 。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可 。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们 。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件 。
对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段 。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户 。
四、MVC的缺点
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易 。使用MVC需要精心的计划,由于它的内部原理比较复杂 , 所以需要花费一些时间去思考 。
你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难 。每个构件在使用之前都需要经过彻底的测试 。一旦你的构件经过了测试 , 你就可以毫无顾忌的重用它们了 。
根据我个人经验,由于我们将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的 。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提 。
MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失 。
五、MVC优点:MVC是一条创建软件的好途径
MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解 。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面 。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶 。
希望对您有所帮助!~
springmvc框架如何实现像webservice一样通过wsdl2Java生成客户端代码在用到web service时 , 如果是调用自己开发的web service还好 , 可以有一个方法的接口或参数对象实体类什么的 , 但如果是调用第三方的服务,除了得到web service服务地址的wsdl文档外,没有任何实质性编码的东西,写原生调用太麻烦,这时就需要自己写一个方法的接口类 。
这个,目前已经有比较成熟的工具,可以自动生成,下面作一下简单的介绍 。
apache的wsdl2java工具,目前貌似CXF和axis各有一套 , 使用方式大同小异,但生成的代码会有所区别,这时说的是CXF提供的wsdl2java工具 。
wsdl2java用法:
wsdl2java -p com -d src -allaa.wsdl
-p指定其wsdl的命名空间 , 也就是要生成代码的包名:
-d指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动webservice的代码
-impl 生成web service的实现代码
-ant生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见:
一开始使用了CXF的这套工具,发现不是很方便,毕竟依赖CXF提供的工具jar包,个人不是很喜欢用 。
后来发现JDK居然也自带了对web service生成java代码的功能,貌似1.6版本开始的,试用后发现效果十分不错,果断投入它的怀抱 。下面作下简单的介绍,以备忘 。
打开jdk下的bin目录 看下能否找到"wsimport.exe"这个文件
一般情况下都会有
如果没有则说明你的JDK不支持这个功能
然后在DOS窗口下输入wsimport 敲回车
如果提示错误的话 说明你的JDK环境变量还没有配好
一句话总结,如果你在dos窗口下输入wsimport正常,就可以
如果OK的话 输入以下命令就可以将wsdl文件生成java文件了
wsimport-keep -p com.llg.ws2 -s g:/ws
参数说明
wsimport 这个是必须的 该工具的名称
wsdl文件
-keep是否生成源文件
-p com.llg.ws2生成后的java包名
-s g:/ws生成后放哪个目录
但是前几天,在对一个第三方提供的web service使用该工具生成java代码的时候,居然出错了,网上查找后终于找到原因 。
使用cxf wsdl2java或javax wsimport工具的时候,可能会遇到关于生成的Response类文件名冲突的问题
Console代码
WSDLToJava Error: Thrown by JAXB : A class/interface with the same name "***" is already in use. Use a class customization to resolve this conflict.
目前可选择的方案:
apache的wsdl2java工具,使用-autoNameResolution自动处理
wsdl2java -autoNameResolution
JDK自带的工具
wsimport -p com.test.client -keep-B-XautoNameResolution
2.如果web service是己方开发的 , 可以修改代码,使用自定义bindings,详细可看sun webservice文档
例如:
Java代码
public interface ValidateCCService
@WebMethod
@WebResult(name = "response")
public ValidateCCResponse validateCC(@WebParam(name = "request")ValidateCCRequest request);
这个情况下定义的方法名,如果使用工具生成客户端代码 , 很可能存在Response冲突,因为定义的wsdl中会有一个关于接口方法的message
wsdl:message name="validateCCResponse"
/wsdl:message
方法名定义的message与接口定义返回的ValidateCCResponse,在工具生成客户端代码时就会产生命名冲突 。
但是通过更改接口方法名为:
Java代码
public interface ValidateCCService
@WebMethod
@WebResult(name = "response")
public ValidateCCResponse validate(@WebParam(name = "request")ValidateCCRequest request);
即可解决该冲突,
在mvc3中,为什么由代码生成的数据库,里面的数据显示不出来在读取数据的地方加断点,看看能不能读取到数据,在显示的地方加断点,看能不能运行到显示代码上
如何在eclipse中搭建springmvc搭建一个maven项目 , mvc架构 , web端使用springmvc,主要记录下搭建时遇到的问题
1.主pom.xml文件语句 名称为hibeauty-modules
Java代码
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-modules -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
进入目录,分别建立webapp项目以及普通的maven项目 。
首先,修改pom.xml文件,把packaging修改为pom,version改为1.0
进入到hibeauty-modules,运行以下命令,项目为名称为hibeauty-web,这是一个webapp项目,之后要单独处理一下 。
Java代码
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
web依赖的service的名称为hibeauty-business,进入到hibeauty-modules,运行以下命令 , 这是一个普通maven项目
Java代码
mvn archetype:generate -DgroupId=com.hibeauty -DartifactId=hibeauty-business -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
注意:此时的webapp项目运行mvn eclipse:eclipse并不能被eclipse认可为一个web项目,也就是说你的eclipse里的tomcat不能认出这个web项目,需要运行的是
Java代码
mvn eclipse:eclipse -Dwtpversion=2.0
另外,如果需要下载对应jar包的源码,需要运行
Java代码
mvn eclipse:eclipse -DdownloadSource=true
2.在主pom对应的文件夹里运行 mvn clean install eclipse:eclipse 这样就完成了pom文件中的jar包下载,并且生成了eclipse的对应加载文件,使eclipse能够认出两个bundle了
3.进入到eclipse里面,在tomcat里面导入webapp项目,然后再server里面运行,如果报错的内容是找不到类似于
Java代码
org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException:
org.springframework.web.context.ContextLoaderListener
Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
这样,但是如果你在java build path的lib里面又能看到这些包 , 就需要把这些文件从java build
path里面复制到Deployment Assembly里面 。具体方法properties-Deployment
Assemble-Add-java build path
即可解决 。同理如果出现找不到依赖的project的错误,properties-Deployment
Assemble-Add-project引进来即可
最后,这次框架搭建,我分别用了intellij idea 以及eclipse ,
我的感觉是idea适合搭建框架,因为他对xml文件的支持很好,会自动去找引入的java文件是否存在并提示用户 , 这方面eclipse就比较弱 。另外
idea的maven支持很好,对于框架搭建的环境要求很低 , 很多环境配置他自动帮你做了,比如上面的1,2,3步骤 , 都是针对eclipse的做法 。另
外idea还有个很牛的图示类依赖关系的功能 。
但是在代码开发时,eclipse是一个不错的选择 。
1 .他有方便的快捷键
2 .svn比idea强 , 尤其是在增加删除文件的时候 。
3 .让我开发时坚定选择eclipse的主要原因是eclipse的报错机制很强,在左边的packageexplorer可以很清楚的看到出现的错误,当然 , 前提是开启了build automatically,并且比idea显眼的多
4 .idea不会把当前文件跟左边的目录自动对应,即使打开了那个roll的开关也会经常出问题 。
【javamvc代码生成 javaparser 生成代码】关于javamvc代码生成和javaparser 生成代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 网络游戏产业,网络游戏产业链有哪些参与者
- 深入理解asp.netmvc,深入理解计算机系统pdf
- 古风拍摄道具包括什么,古风拍摄道具包括什么东西
- 海盗动作游戏,海盗游戏叫什么
- mysql怎么查看并发数 mysql并发访问量
- pg数据库如何改编码,pg数据库改密码
- pdf怎么转换为word格式,pdf怎么转换为word格式不变
- 游戏桌面出现文件夹怎么办,桌面出现游戏图标
- php+爬虫+获取数据 php爬虫框架phpspider