SpringMVC两种配置理解----web.xml还有JavaConfig

  最近因为在上javaEE的课程一直在学习Spring,在网上找了很多资料,发现大多数都是通过web.xml配置的spring,而通过javaConfig配置的比较少,本人自己尝试了两种配置方法。

  开发环境Eclipse+Maven+Tomcat

-----------------------------------------------------------

  首先我们要清楚Spring整个工作过程--->

  盗用Spring in Action里的这张图片,我们可以看到整个流程:(如果想全面了解可以去查看书籍,这里说一下个人理解,错了还请见怪)

  1、网页浏览器Brower发送Request,服务器需要有个servlet的调度器(DispatcherServlet)----这个就是用来接受客户端的请求,可以理解成拦截器

  2、这是一个处理器映射(好像很复杂)----其实就是能把客户的请求调度到对应的Controller

  3、那么Controller是要做什么事情呢?----Controller顾名思义为控制层,就是说你在Brower里传递的相关参数要经过他的手里,然后他根据Brower的请求去寻找对应的jsp,把从Brower得到的参数去传递给jsp。

  4、所以Controller就返回Model和View的名字给servlet的调度器,DispatcherServlet就知道了,“原来Brower需要的是A这个网页”。(我猜测这时应该是一个raw的)

  5、这时候知道了是哪个页面,接下来我们要对网页A进行渲染,渲染什么内容?----就是我们需要告诉这个页面你这边需要填写什么内容,而这些内容就是我们在Controller返回的,也就是我们需要组装这个网页。

  6、可以了,我们得到了我们需要的网页View

  7、将其返回给Response to Brower

  PS:可能会问,为什么需要Controller这个东西呢?直接都放在DispatcherServlet里面不就好了吗?简单而又实用。

  Answer:这你就错了,MVC是很有道理的一个结构,仔细想想,为什么需要C(Controller)层呢?很关键的一点是我们能把网页实现的业务逻辑单独抽取出来操作,就比如你要访问数据库,你要进行第三方数据导入,OK的这些都是Controller去处理,我的View层和Model层对这些一无所知,这就是一个很棒的分工。我是View层,我只需要知道你Controller层会给我数据,我去显示在指定的位置就OK了,我不需要关心你这个数据是抢的,还是偷的。这样多好。Controller层告诉Model层我需要哪些哪些数据,Model层只需要去拿到指定数据提供给Controller层就可以。多简单的,多明了,各司其职。

-----------------------------------------------------------

(1)Web.xml     ==HelloSpring

首先新建一个Maven工程,使用Maven导入spring所需要的jar包,具体就自己网上找一下都有的。然后因为spring工程是默认的读取工程内的Web.xml进行一系列配置,所以我们需要对web.xml进行编写。那么为什么要对这个Web.xml进行编写呢?写这个xml是为了干什么?

  1、现在我们对照着上面这个流程来,web.xml就是要对DispatcherServlet进行定义,说明我使用的是什么样的Servlet的容器,怎么使用它的。

  2、接下来我们需要去拦截客户的请求,所以我们需要一个拦截器,其实是需要另一个xml来实现。(在我的工程里我命名为springContext.xml)

  3、那么现在我们需要去定义Controller了,ok的,我定义了HelloSpringController.java

  4-6、最为简单的渲染就是你写的HTML网页代码。在我的工程中我默认为index.html还有一个home.html

  7、发送给网页,显示内容。

至此一个简单的web.xml的SpringMVC就ok了,配置完Tomcat就可以运行了。              

(2)JavaConfig    ==other-spring

同样新建一个Maven工程,(这里不得不啰嗦一下,Maven真是一个太棒的工具!),这里值得一说的是,使用Config配置的时候,可能Eclipse或者Tomcat的会有很多奇怪的错误,我也经历了好多,因为旧版本都是用的xml,所以对Config的兼容有点不好,但请务必务必坚信使用Config是可以完成SpringMVC的配置的,而且个人感觉还比web.xml好理解。

  1、同样的我们需要一个DispatcherServlet,在这里我们需要定一个类WebInitializer.java去继承一个类AbstractAnnotationConfigDispatcherServletInitializer(名字超长-.-)网上有其他说web什么的一个类,也是可以的,他们就只是继承的一些父子代的关系而已,并不影响。

  2、然后这个WebInitializer需要我们去实现继承来的类getServletConfigClasses和其他的什么,其实道理都一样,就是说我们现在需要配置他所需要的Servlet的属性。

  3、现在我们就可以去定义我们需要的Controller了。----在我的工程中是HelloController.java这个类

  4-7、同样的也是HTML代码,然后发送到Brower

OK,这样就完成了。

其实Config想做的就是代替工程中的xml的工作,每次Tomcat启动的时候会去找到继承了AbstractAnnotationConfigDispatcherServletInitializer相关类进行初始化,就像去找web.xml一样,然后我们在WebInitializer.java指定我们的相关配置(在我的工程中是Web.config和Root.config),然后我们定义Controller进行业务操作,编写网页HTML代码,返回给浏览器。

------------------

结束了,接下来要进行volecity和tiles的集成,这个是关于渲染器那方面的。祝我好运!

GitHub地址:https://github.com/monster5475/2017.4.9

时间: 2024-10-01 01:11:33

SpringMVC两种配置理解----web.xml还有JavaConfig的相关文章

Hibernate实现有两种配置,xml配置与注释配置

hibernate实现有两种配置,xml配置与注释配置. (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "ht

Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建的Servlet所在的包和类名,然后单击下一步, 我选择默认,Next 依旧默认,Next 注意事项,在创建web的工程的时候需要注意的是如下图,选择上web.xml这个按钮,因为Servlet需要配置一下web.xml这个文件,web.xml在web-inf这个文件下面 上图第二个箭头前面有个方括号,勾选上就可以自动创建好web.xml

IOC容器在web容器中初始化——(一)两种配置方式

参考文章http://blog.csdn.net/liuganggao/article/details/44083817,http://blog.csdn.net/u013185616/article/details/52186184. 最近在研究IOC容器在web容器中初始化的过程.阅读了源码,参照了很多文章,在这里记录一下. 使用的web容器为tomcat7.spring的jar包为4.3.7.RELEASE版本. 我们可以通过web.xml配置文件web容器中声明spring容器.有以下两

springmvc+mybatis的两种配置和应用方式

一.不用写dao层实现的方式 1.导入依赖包,我的pom.xml文件配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/

springMVC两种方式实现多文件上传及效率比较

springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距. 1.下载相关jar包. 需要引入的jar出了springMVC的jar包外,还需要引入 com.springsource.org.apache.commons.fileupload-1.2.0.jar和

springMVC两种实现多文件上传及效率比较

springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距. 1.下载相关jar包.需要引入的jar出了springMVC的jar包外,还需要引入com.springsource.org.apache.commons.fileupload-1.2.0.jar和com.s

Struts和SpringMVC两种MVC框架比较

基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC框架有Spring MVC.Tapestry.JSF等.这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica.VRaptor等.这些框架都提供了较好的层次分隔能力.在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高. 如何选择一个好的

servlet的两种配置方式

在Servlet2.5规范之前,JavaWeb应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过Annotation来配置管理Web组件,因此web.xml文件可以变得更加简洁,这也是Servlet3.0的重要简化. 两种方式 (1),通过web.xml配置 [html] view plain copy      <servlet>           <servlet-name>GetApplication</servlet-name>

Spring MVC全注解配置 - 无web.xml

Serlvet 3以后,我们可以使用注解来配置Servlet,对于像Spring这类的框架来说是一个很好的适应.Spring也对此特性加入了很多的新功能.本文就将简单的对之前的xml配置转换为java代码的配置.代码配置让程序员们觉得更加具有流程化,不像配置很多代码程序员们都不愿意look into. 接下来,进行替换我们之前的web.xml和spring-mvc.xml的配置.也就是在你的web工程里面看不到这两个配置文件了.(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配