`
shawnccx
  • 浏览: 166823 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

转----SpringMVC基本配置学习

阅读更多
来自小强的blog

引入SpringMVC呢,首先就要在web.xml中配置中配置控制请求转发的servlet——DispatcherServlet,
<servlet>     

  <servlet-name>Springmvc</servlet-name>    

   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        

</servlet>    

<servlet-mapping>    

  <servlet-name>Springmvc</servlet-name>    

  <url-pattern>*.do</url-pattern>    

</servlet-mapping> 


这样呢,默认会到classpath下寻找名叫Springmvc- servlet.xml的配置文件,并对所有以.do为结尾的请求都可以进行处理,但是咱们也可以按自己的方式配置的~~就像这样:

<servlet>     

  <servlet-name>Springmvc</servlet-name>    

   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     

  <!-- 初始化参数 -->    

  <init-param>    

  <param-name>contextConfigLocation</param-name>    

   <param-value>/WEB-INF/applicationContext.xml</param-value>     

  </init-param>    

</servlet> 


配置完了这个servlet,Spring就能给你转发请求的,也能识别配置文件,但是还要初始化容器才行啊,呵呵,这就要添加一个监听器了~~
    <listener>

        <listener-class>

            org.springframework.web.context.ContextLoaderListener

        </listener-class>

    </listener>

这样基本的配置就完成了,呵呵,还会用到的log4j的配置,那些咱先不说,呵呵~~~

那现在呢,Spring转发请求的servlet配置好了,把请求转发到哪里啊,Spring怎么知道根据什么规则来解析url呢,哈哈,现在就需要配置 SpringMVC的核心啦~~

刚才也说了,如果引入 DispatcherServlet的时候没有设定xml的路径,会默认加载ServletName-Servlet.xml。


个人比较倾向于自己配置啦,呵呵~~好吧,现在来看applicationContext.xml中该怎么配置SpringMVC~~

在 Spring容器中配置容器没有先后之分,那咱就按Spring参考手册里的顺序来说~~

先来说控制器,就是MVC中的C,在Spring 中就是Controller,在Spring参考手册中是这么说的:"控制器使得用户可以访问应用所提供的服务。控制器解析用户输入,并将其转换成合理的模型数据,从而可以进一步由视图展示给用户。"

Spring控制器的基础呢,是 org.springframework.mvc.Controller接口,这个接口中定义了一个handRequest方法,这个方法负责处理请求,并返回合适的模型和视图(ModelAndView)。

在开发中,咱们可以继承AbstractController,实现它的 handleRequest方法,来实现属于咱们自己的控制器,呵呵,但是Spring已经有了一些实现,比如 MultiActionController,那功能是很强的啦,咱们现在先不说,呵呵。那现在通过一个Controller,能够处理请求并返回视图了,一般来讲,咱们的Request请求里面会有参数,比如在提交注册的Request中有username、password等参数,咱们在解析的时候可以通过request.getParameter("username")来获取username,通过 request.getParameter("password") 来获取password,然后通过setter方法赋值给你刚new好的User对象,啊,这好古老啊,额,Struts的ActionForm不就能把参数封装到一个对象上去吗?哈哈,Spring也有实现噢~~~这就用到Command Controller啦,一般大家都翻译为命令控制器,我一直觉得不是很恰当,这里就不翻译啦,呵呵~~

Spring实现的Command Controller呢,像是AbstractFormController, AbstractcommandController, SimpleFormController and AbstractWizardFormController都实现了一些基本的功能,一般呢,咱们用SimpleFormController就行了,呵呵,当然了,也能够继承AbstractFormController来实现自己的CommandController,呵呵~~咱们拿 SimpleFormController来说,它有一些属性,commandName,默认是command,commandClass需要咱们自己根据实际写,value呢是要绑定的类的完整名,如果需要对参数进行校验的话,还会用到validator属性,还有默认设为TRUE的 validateOnBing属性,呵呵

那好了,有了控制器咱们可以处理数据,也有逻辑视图了,但是来了请求Spring怎么知道要调用哪个Controller啊,哈,那就要处理器映射了,呵呵,英文名叫handler mapping,在Spring参考手册中是这么写的,“HandlerMapping的基本功能是将请求传递到HandlerExecutionChain上。 首先,这个HandlerExecutionChain必须包含一个能处理该请求的处理器。 其次,这个链也可以包含一系列可以拦截请求的拦截器。 当收到请求时,DispatcherServlet将请求交给处理器映射,让它检查请求并找到一个适当的HandlerExecutionChain。 然后,DispatcherServlet执行定义在链中的处理器和拦截器(interceptor)。”咱们平常用的两个处理器映射是BeanNameUrlHandlerMapping(默认)和 SimpleUrlHandlerMapping。

这个BeanNameUrlHandlerMapping把接收到的http请求映射到bean的名字,比如有个 http://localhost:8080/springmvc/login.do的请求,他就会映射到一个叫login.do的bean上去,呵呵,很强大吧~~

而SimpleUrlHandlerMapping呢,则是可配置的,呵呵~~像是

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <property name="mappings">

            <value>

                /*/account.form=editAccountFormController

                /*/editaccount.form=editAccountFormController

            </value>

        </property>

</bean>

<bean id="editAccountFormController"

          class="org.springframework.web.servlet.mvc.SimpleFormController">

…一些属性配置…

</bean>

这样呢,通过在SimpleUrlHandlerMapping中定义各个映射,就可以讲请求映射到Controller啦~~也很强大吧,哈哈,看看那个*号,它支持ant风格的映射噢~~

现在呢,咱们已经知道,当有请求时,DispatcherServlet将请求交给处理器映射来进行一些处理和拦截,完事儿之后呢根据名字或是配置调用Controller来处理请求的数据,并返回一个逻辑视图,对吧,那好,现在问题又来了,该怎么把这个逻辑视图转换到物理视图呢?哈哈,那就要视图解析器ViewResolver啦~~Spring呢,对ViewResolver的实现有很多,对XMl、Excel、PDF、JSP、Velocity、FreeMaker都有支持,现在呢,咱们就先以最普通的

Jsp为例说一下~~配置呢,就系这样子滴:

<bean id="viewResolver"

class="org.springframework.web.servlet.view.UrlBasedViewResolver">

    <property name="prefix" value="/WEB-INF/jsp/"/>

    <property name="suffix" value=".jsp"/>

</bean>

这样呢,如果Controller返回了一个叫做“sample”的ModelAndView,那就能定位到/WEB-INF/jsp/sample.jsp了,很强大吧,呵呵~~

那如果咱们的项目中既有Velocity,又有jsp,这样混合不同的视图时应该怎么办呢?哈哈,咱们可以使用ResourceBundleViewResolver,但是这个呢,貌似配置很麻烦的说,不推荐哈,咱们还可以配置多个视图解析器,这样呢Spring就会挨个进行解析,直到找到合适的视图为止,注意噢,要是没有对应的视图会怎么样呢?InternalResourceViewResolver会返回一个null值,但是别的解析器却不一定呢,所以在使用别的解析器的时候要好好研究下文档了哈~~还有啊,最好把InternalResourceViewResolver放在解析器链配置的最后,因为他就算是找不到视图也会返回null值,那么以后的解析器还会起作用吗?哈哈~~~

哈哈,现在呢也找到页面了,没问题的话,就应该能正常工作了啊,但是还有一点东西要说,那就是页面之间的重定向,那怎么实现呢?哈,咱们有RedirectView呢!!!如果要执行redirect操作,直接在Controller里return “redirect:ViewName”, UrlBasedViewResolver (以及它的子类) 会知道系统要生成一个HTTP redirect,ViewName就是要重定向的URL,同样,执行forward的话,就用“forward:ViewName”就行啦~~

这样呢,一个基本的SpringMVC配置就完成了,哈,只要理解了这个流程,代码还是很简单的啦~~剩下呢,还有本地化解析器、主题、文件上传、Spring标签等一些内容,呵呵~~~其实那些东东都简单的啦~~

嗯,先写到这里,我再研究研究去了~~~

Spring很强大啊~~
分享到:
评论

相关推荐

    helloworld------springMVC

    "helloworld------springMVC"项目是一个简单的示例,旨在引导初学者入门SpringMVC的基本概念和配置。让我们深入探讨SpringMVC的核心组件、工作流程以及如何在实际项目中设置和运行这个Hello World程序。 1. **核心...

    springMVC学习--基本的几个例子

    1. **SpringMVC基本配置**: - **web.xml配置**:这是SpringMVC应用的入口点,我们需要配置DispatcherServlet、Servlet上下文参数和Filter。 - **servlet-context.xml配置**:在这里,我们定义SpringMVC的核心组件...

    SpringMVC精品资源--JAVA、Spring、SpringMVC、SpringBoot、Mybatis、Vu.zip

    学习如何配置DispatcherServlet、Controller、ModelAndView、视图解析器等是SpringMVC的重点。 4. **SpringBoot**:SpringBoot简化了Spring应用的初始搭建和运行过程,通过预配置和自动配置特性,使得开发者可以...

    Spring MVC--6.RESTful SpringMVC CRUD

    在`springmvc_2`这个压缩包文件中,可能包含了相关的代码示例、配置文件或其他辅助材料,供学习者参考和实践。通过这些材料,你可以进一步了解如何将上述概念应用到实际项目中,实现完整的RESTful Spring MVC CRUD...

    mybatis-plus集成springboot和springmvc

    对于 SpringMVC 项目,集成 MyBatis-Plus 的过程基本类似,但需要额外配置 SpringMVC 相关的组件,例如 DispatcherServlet、Controller、ViewResolver 等。 项目中删除了多余内容,这意味着开发者可能需要根据实际...

    springMVC最简单的配置

    现在,你已经完成了 Spring MVC 的最基本配置。当你访问 `/hello` 路径时,将会触发 `HelloWorldController` 中的 `sayHello` 方法,返回 "Hello, Spring MVC!" 这个字符串。这个简单的配置只是 Spring MVC 功能的...

    吴天雄--SpringMVC笔记.doc

    通过深入学习和实践 SpringMVC,开发者可以构建高效、可维护的 Web 应用程序,并充分利用 Spring 生态系统的强大功能。无论是在大型企业级应用还是小型项目中,SpringMVC 都是值得信赖的开发工具。

    Java SpringMVC 学习路线.pdf

    在开始学习SpringMVC之前,需要了解如何搭建开发环境,包括创建Dynamicweb项目、导入SpringMVC所需jar包、编写TestController类、创建JSP页面、配置springmvc.xml核心配置文件以及在web.xml中配置前端控制器。...

    SpringMVC学习(一)——SpringMVC入门小程序

    在“SpringMVC学习(一)——SpringMVC入门小程序”中,我们首先会接触到SpringMVC的基本概念。这通常包括以下几个核心组件: 1. **DispatcherServlet**:这是SpringMVC的前端控制器,负责接收HTTP请求,并根据配置...

    springMVC-个人学习笔记.docx下载

    以上就是 SpringMVC 的基本工作原理和配置过程。通过这些知识点,我们可以搭建起一个简单的 SpringMVC 应用来处理 HTTP 请求,实现数据的传递和视图的渲染。在实际开发中,还会涉及到更多的高级特性,如拦截器...

    springmvc配置webservice服务的例子

    首先,让我们了解Spring MVC配置WebService的基本步骤: 1. **添加依赖**:在Spring MVC项目中,你需要引入相关的WebService库,如Apache CXF或者JAX-WS。这通常通过在`pom.xml`文件中添加对应的Maven依赖来完成。...

    SpringMVC精品资源--JAX-RS &amp; SpringMVC supported maven buil.zip

    学习这些资源,开发者不仅可以掌握SpringMVC和JAX-RS的基本使用,还能理解它们各自的优势和适用场景,以及如何根据项目需求灵活选择和集成。对于想要提升Web服务开发能力,尤其是对Java后端开发感兴趣的开发者来说,...

    SpringMVC学习课堂笔记

    通过以上知识点的学习,我们不仅了解了SpringMVC的基本原理和用法,还掌握了如何将其应用于实际项目中,包括与MyBatis的整合、注解开发、高级特性等。这有助于我们在实际工作中更加熟练地运用SpringMVC框架。

    SpringMVC+Hibernate5 项目配置Demo

    接下来,我们将深入探讨这两个框架的基本配置和它们在项目中的结合使用。 1. **SpringMVC配置** - **DispatcherServlet**:作为SpringMVC的前端控制器,它接收HTTP请求并分发到相应的处理器。 - **web.xml**:...

    springmvc全面的学习资料

    在本全面的学习资料中,您将掌握从基础到高级的 Spring MVC 技能,包括其核心概念、配置、控制器、模型数据处理、视图解析以及实际项目应用。 1. **Spring MVC 基础** - **MVC 模式**:了解 MVC 设计模式的基本...

    springmvc学习第一天

    ### SpringMVC基础知识详解 #### 一、SpringMVC概览 **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。...通过这些内容的学习,可以帮助初学者快速入门并掌握SpringMVC的基本用法。

    SpringMVC 学习总结

    4. 创建 springmvc-servlet.xml 配置文件,配置组件扫描、视图解析器、处理器映射器和处理器适配器等。 5. 编写 Controller 类,定义处理方法,使用注解来绑定请求和响应。 6. 创建视图文件(如 JSP),显示处理结果...

    springmvc学习笔记-springmvc注解开发.zip

    在"springmvc学习笔记--springmvc注解开发.zip"这个压缩包中,我们可以深入探讨Spring MVC的注解驱动开发方式,这是一种简洁且高效的开发模式。 1. **Spring MVC基础**: Spring MVC的核心组件包括...

    SpringMVC-Activiti5.16-Shiro-EasyUI项目整合

    对于初学者来说,理解并实践这个项目,不仅可以学习到四大框架的基本使用,还能了解如何在实际项目中整合各种技术,提升自己的综合开发能力。 总结,SpringMVC-Activiti5.16-Shiro-EasyUI项目的整合是一个典型的...

    SpringMVC-Helloworld

    "SpringMVC-Helloworld"示例是入门SpringMVC的常见起点,它帮助开发者理解如何配置和运行一个基本的Spring MVC应用。 在"SpringMVCLearningChapter1"中,我们可能找到了以下几个关键知识点: 1. **SpringMVC架构**...

Global site tag (gtag.js) - Google Analytics