SpringMVC框架学习

转载 2012年03月21日 14:01:17
 

衡量一个MVC框架模式,主要通过三种web模式,本人认为springMVC是一个很好的MVC

模式,对模式的支持如下:

(1)派遣器模式

Spring有一个统一集中的派遣器org.springFramework.Web.Servlet.DispatcherServlet,

一般在web.XML中把所有的页面请求都发送到该派遣器:

<servlet>

  <servlet-name>countries</servlet-name>

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

  <load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

  <servlet-name>countries</servlet-name>

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

</servlet-mapping>

(2)控制器模式

派遣器收到请求后,把不同的页面派遣到不同的控制器进行处理:

<bean  id="urlMapping"

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

    <property name="mappings">

             <props>

                    <prop key="/home.htm">countriesController</prop>

                   <prop key="/notfound.htm">errorsController</prop>

</props>

 </property>

</bean>

Spring有两种MAPPING的机制,默认为BeanNameUrlHandlerMapping,我们这里采用的是

SimpleUrlHandlerMapping.

(3)拦截器模式

在控制器处理前,我们可以将其拦截,进行一些特殊或通用处理;拦截器可以选用Spring已经实现的或我们自己实现的:

<bean  id="urlMapping"

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

      <property name="interceptors">

             <list>

                    <ref local="localeChangeInterceptor"/>

                   <ref local="themeChangeInterceptor"/>

                    <ref local="copyInterceptor"/>

             </list>

 </property>

</bean>

 

 

 

详细介绍:

① 分发器:Dispatcherservlet

整个spring应用只需要一个分发器

<servlet>

       <servlet-name>springapp</servlet-name>

       <servlet-class>

              org.springframework.web.servlet.DispatcherServlet

       </servlet-class>

       <load-on-startup>1</load-on-startup>

</servlet>

<!-- 映射的类型-->

<servlet-mapping>

           <servlet-name>springapp</servlet-name>

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

</servlet-mapping>

<servlet-mapping>

           <servlet-name>springapp</servlet-name>

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

</servlet-mapping>

 

处理器映射

一般对应文件 servlet-name-servlet.xml,譬如 springapp-servlet.xml

BeanNameUrlHandlerMapping

一般使用SimpleUrlHandlerMapping

<!--Request Mapping -->

       <bean id="urlMapping"

              class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">                                         <property name="mappings">

                     <props>

                            <prop key="login.do">LoginController</prop>   

                            <prop key="login.html">LoginController</prop>               

                     </props>

              </property>

       </bean>

② 控制器

控制器的基础接口 Controller ,包含方法

       ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)

throws Exception;

一般使用 return new ModelAndView(“”);也可以使用response.sendRedirect(“”).;

AbstractController控制器继承Controller类,增加譬如缓存、minetype等功能,处理多个动作,可以使用MultiActionController

但如果要表单和数据对象的交互,我们就使用命令控制器

一般使用AbstractCommandController带参的形式,把相关的功能放在一个controller

譬如用户的添加、修改、删除,就可以采用 usemanage.do?msg=add/modify/delete的形式

SimpleFormController更为具体,但继承它实现的OnSubmit的方法,不好用,譬如不能后退或者用于超链接等方式的地址直接响应。

 

③ 处理器映射拦截器

拦截器接口定义了三个方法,一个在处理器执行前被调用,一个在处理器执行后被调用,还有一个在整个请求完成后调用。譬如在在上午9点到下午6点重定向某个页面,

在handlerMapping那个bean里面加入

<property name=”interceptors”>

<list>

              <ref bean=”officeHourIntercptor”>

</list>

</property>

然后一个处理Bean

<bean id=” officeHourIntercptor”  class=” TimeBaseIntercptor”>

       <property name=”openTime”> <value>9</value> </property>

       <property name=”closeTime”> <value>18</value> </property>

</bean>

 

 

④ 视图与解析器

Spring框架控制器返回的是ModelAndView,对于一般的JSP和Servlet,一般使用InternalResourceViewResolver,继承于UrlBaseViewResovler

<bean id="viewResolver"

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

              <property name="viewClass">

                     <value>org.springframework.web.servlet.view.JstlView</value>

              </property>

       </bean>

 

当一个web中使用不同类型的视图技术,使用ResourceBandleViewResolver

 

⑤ 使用本地化信息

Spring框架大部分支持国际化,像web框架一样,自动解析客户端信息

但我们可以自己手动获取客户端信息,并做需要的参数设计来改变属性

一般使用LocalChangeInterceptor修改本地化信息,这个像拦截器一样使用

   <bean  id="localeChangeInterceptor"

             class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

         <property name="paramName"><value>siteLanguage</value></property>

   </bean>

   <bean id="localeResolver"

class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

 

Java中框架部分的学习总结SpringMvc

  • 2017年07月29日 10:05
  • 204KB
  • 下载

ssm框架学习---开发中使用springMVC接收参数的问题

首先我前端表单代码如下: 登录 登录 用户名: 密   码: ...
  • whu_zcj
  • whu_zcj
  • 2016年12月07日 18:26
  • 6704

SpringMVC框架学习指南.doc

  • 2011年02月24日 16:16
  • 175KB
  • 下载

SpringMVC框架学习

  • 2012年11月20日 20:16
  • 127KB
  • 下载

springmvc学习笔记(1)-框架原理和入门配置

本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试。...

springMVC框架学习

  • 2017年02月15日 22:17
  • 234KB
  • 下载

springMVC3学习(一)--框架搭建

由于时代需要,学习下springMVC,在此简单记录一下。 看好,是简单记录,至于十万个为什么,暂且忽略,待以后研究。 本人是基于3.1.1版本开发,如遇jar包版本冲突等其他问题,本人概不负责。 ...

SpringMVC框架学习指南.pdf

  • 2011年12月01日 20:48
  • 186KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpringMVC框架学习
举报原因:
原因补充:

(最多只允许输入30个字)