`

spring mvc3 入门

阅读更多

  因为做webgame gm服务器,整体采用的是spring mvc架构,所以简单入门学习一下:

1.spring mvc基本流程      从URL接受请求及数据->DispacherServlet->根据请求调用具体的Controller->Controller->调用service方法处理数据->通过DAO访问 db->增删改查->db->返回操作结果集->service->处理返回结果->Controller->返回具体页面和数据->jsp页面

 

2.spring mvc注解 @Controller,@Service,@Repository     

@Controllers声明控制层。

@Service声明服务层。

@Repository声明持久层(数据传输层DAO)     

@RequestMapping把一个POJO声明为Spring里的Controller.如果不声明要写Controller类就要从Spring的Controller类继承,并重写handleRequest方法。     

@RequestMapping(value="*.htm",method=RequestMethod.GET);属性value声明Controller处理的请求,method声明处理请求的类型。可声明在类头上,也可声明在方法头上。     

@RequestParam绑定参数与请求参数;例:public String Controller(@RequestParam("id") int topicId,User user)把参数 topicld与请求的参数“id”绑定,id的值传入topicld。     

@AutoWired根据类型自动装配,可放在属性上,set方法上,构造方法上。与@AutoWierd配套使用的是@Qualifier。按名字自动装配。     

@Resource与@AutoWired类似

 

3.DispatcherServlet-org.springframework.web.servlet.Dispatc-herServlet 负责将请求分配给控制对象,所以使用Spring MVC的第一步是在web.xml中定义DispatcherServlet;

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<servlet> 2       <servlet-name>hello</servlet-name> 3       <servlet-class> 4    org.springframework.web.servlet.DispatcherServlet 5  </servlet-class> 6  <init-param> 7     <param-name>contextConfigLocation</param-name> 8                <param-value> 9    /WEB-INF/mvc-config.xml, 10    /WEB-INF/spring-config.xml 11  <param-value>12                <init-param>13        </servlet>14

         .....   可以加上contextConfigLocation的初始参数,用来设置Bean定义文件的位置和名称,默认使用“Servlet名-servlet.xml";可以加上多个bean文件的来源;如果一个都没加则找默认的;hello-servlet.xml

  spring-servlet.xml-

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<context:component-scan base-package="cn.spring.demo"/>2<bean 3class="org.springframework.web.servlet.view.InternalResourceView-Resolver"4 p:prefix="" p:suffix=".jsp"/>

base-package为注入bean时要spring要查找的包;   Controller回传ModleAndView,DispatcherServlet会交给ViewResolver解析。如:回传一个字符串“index”,解析后找到/WEB-INF/index.jsp

 

4.Controller-

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1@Controller//将类声明为Spring容器里的Bean,Spring调用时实例化 2    @RequestMapping("index.htm")//声明这个Controller处理的请求是什么 3    publicclass IndexController 4    { 5     @RequestMapping(method = RequestMethod.GET) 6     public String doGet() 7     { 8      return"index"; 9     }10    }

返回“index”,交由ViewResolver解析,返回调用“/WEB-INF/index.jsp”

   

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1//处理post请求的Controller2    @Controller 3    @RequestMapping(value="index.htm",method = RequestMethod.POST) 4    public String doPost(String username, String password, ModelMap modelMap) throws Exception 5    { 6     modelMap.addAttribute("name",username); 7     return"index"; 8    }

把username以名值对的形式放入ModelMap,在index.jsp中用request对象接收;ModleMap,Spring提供的集合可以传递数据到返回的jsp页面 http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/

以上为基于注解驱动的mvc

 

5.DispacherServlet-HandlerMapping-ModleAndView-Controller-ViewResolver-View 1.web.xml指定DispacherServelet和servlet的xml   web.xml-

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<servlet> 2    <servlet-name>buzzwords</servlet-name> 3    <servlet-class> 4       org.springframework.web.servlet.DispatcherServlet 5    </servlet-class> 6   <load-on-startup>1</load-on-startup> 7   </servlet> 8    9  <context-param>10   <param-name>contextConfigLocation</param-name>11   <param-value>/WEB-INF/buzzwords-service.xml</param-value>12   </context-param>13

     <load-on-startup>标记容器是否在启动的时候就加载这个servlet,数字越小,当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载;正数的值越小,启动该servlet的优先级越高 2.BuzzwordsController-不用@Controllers则需要实现Controller接口

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1publicclass BuzzwordsController implements Controller 2  { 3   private BuzzwordService facade;    4   publicvoid setFacade(BuzzwordService facade) 5   {        6     this.facade = facade; 7   }    8   public ModelAndView handleRequest(HttpServletRequest request,  HttpServletResponse response) throws Exception 9   {        10    returnnew ModelAndView("buzzwords", "buzzwordService", facade);    11   }12  }13

   3.buzzwords-servlet.xml-指定servlet controller和urlmapping的映射关系

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<bean id="buzzwordsController“ 2   class="BuzzwordsController"> 3    <property name="facade"><ref bean="buzzwordService"/></property> 4  </bean> 56  <bean id="urlMapping" class="SimpleUrlHandlerMapping"> 7   <property name="mappings"> 8    <props> 9    <prop key="/buzzwords.htm">10     buzzwordsController 11    </prop>1213

   4.指定viewResolver

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<bean id="viewResolver" class="org.springframeworkInternalResourceViewResolver">2    <property name="viewClass">3   <value>org.springframeworkView</value>4   </property>5    <property name="prefix"><value>/WEB-INF/jsp/</value></property>6     <property name="suffix"><value>.jsp</value></property>7  </bean>

5.buzzwords.jsp 6.参考 \spring mvc\Spring MVC 详解.ppt   \spring mvc\Spring MVC 技术交流.ppt      1. DispatchServlet在Web容器初始化的时候完成初始化——initStrategy()      2.ViewResolver-从一个String逻辑视图名映射到一个视图对象;对JSP用户, 通常实现 InternalResourceViewResolver      3.Controller负责接收从DispatchServlet转发的URL请求

     开发一个Spring MVC程序的基本步骤:      1编写处理请求逻辑的处理器-controller;      2在DispatcherServlet上下文对应的Spring配置文件中配置处理器;      3配置一个视图解析器,对处理器返回的ModelAndView进行解析;      4编写一个视图对象(jsp或ftl等),将响应展现给客户

Controller      -AbstractController           -MultiActionController 将多个请求行为合并在一个控制器里           -BaseCommandController                 -AbstractCommandController 能将请求参数绑定到命令对象                 -AbstractFormController 支持表单提交的抽象控制器类                        -SimpleFormController 简单表单处理控制器                        -AbstractWizardFormController 向导型表单处理控制器

     ViewResolver接口:Controller传回ModelAndView对象,DispatcherServlet将其交由ViewResolver来作View层的相关解析。要在Spring MVC配置文件中定义一个ViewResolver实例

     ModelAndView-Mode1AndView 类代表了 Spring Web MVC 程序中,呈现画面时所使用 Model 数据对象与 View 数据对象,由于 Java  程序的方法中一次只能回传一个对象,所以 Modelview 的作用是封装这两个对象,方便您同时返回 Model 与 View SimpleUrlHandlerMapping-最常用的处理器映射,将请求的URLs 影射到handlers;由一系列的分别代表URLs 和bean 的名字的name/value 对来定义影射;在x-servlet.xml中定义

7. 参考\spring mvc\Spring_Web_MVC_架构.ppt 1.web.xml:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<servlet> 2  <servlet-name>dispatcherServlet</servlet-name> 3  <servlet-class> 4      org.springframework.web.servlet.DispatcherServlet 5  </servlet-class> 6  <init-param> 7      <param-name>contextConfigLocation</param-name> 8      <param-value>/WEB-INF/mvc-config.xml</param-value> 9  </init-param>        10  <load-on-startup>1</load-on-startup>11     </servlet>1213     <servlet-mapping>14  <servlet-name>dispatcherServlet</servlet-name>15  <url-pattern>*.do</url-pattern>16     </servlet-mapping>17

 

     可以在 XML 文件中设定 Controller 请求处理完毕之后,所要呈现数据的网页路径,见mvc -config . xml

    2.controller:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1publicclass HelloController implements Controller 2  { 3     private String viewPage;    4     public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res)  throws Exception 5     { 6  String user = req.getParameter("user"); 7  //viewPage与mvc-config.xml中的<property name="viewPage">对应,<value>对应返回的jsp页面 8  returnnew ModelAndView(viewPage, "user", user); 9     }    10     publicvoid setViewPage(String viewPage) 11     { 12  this.viewPage = viewPage; 13     }14 }

   3.mvc-config.xml:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<beans>   2     <bean id="viewResolver" 3    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 4  <property name="prefix"> 5      <value>/WEB-INF/jsp/</value> 6  </property> 7  <property name="suffix"> 8      <value>.jsp</value> 9  </property>10     </bean>11     12     <bean name="/hello.do"13    class="onlyfun.caterpillar.HelloController">14  <property name="viewPage">15      <value>hello</value>16  </property>17     </bean>18</beans>19

        DisPatcherServlet 必须根据一个 HandlerMaPping 对象,决定请求由哪一个 Controller 来处理, DispatcherServlet 默认使用 org.spring- framwork .web.servlet.handler . BeanNameUrlHandlerMapping ,也就是根据 Bean 在定义时的”name”属性及使用者请求的 URL ,决定使 用哪一个 controller 实例,例如在这个例子中,请求 / FirstSpringMVC / hello.do 时, DispatcherServlet 根据” hello.do ”名称,决定要 使用 “name”为”hello.do”的 Bean 实例,所以就是将请求交由 HelloController 的实例来处理。

     在 controller 返回 ModelAndView 后, Dispatcherservlet 会交由 ViewResolver 对象来作 View 层的相关解析,因而您需要设置一个 ViewResolver 实例,在这个范例中将以 JSP 作为 View 层技术-InternalResourceViewResolver如果想要在自己所定义的 servlet 类中使用 spring 的容器功能,则也可以使用org·springframework·web·context·ContextLoaderListener contextLoaderListener 默认会读取 applicationContext.xml,您可以指定自己的定义文件,只要在 <context-param>中指定”contextConfigLocation”参数;

WebApplicationContext 实现了 ApplicationContext 接口,是 Spring 专为 Servlet 的 Web 应用程序设计的ApplicationContext 实现类,在取得 WebApplicationContext 之后,可以利用它来取得 Bean 定义文件中定义的 Bean 实例;      即web.xml中-

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<context-param> 2    <param-name>contextConfigLocation</param-name> 3    <param-value>/WEB-INF/beans-config.xml</param-value> 4   </context-param>      5    <listener> 6    <listener-class> 7     org.springframework.web.context.ContextLoaderListener 8   </listener-class> 9   </listener>10  beans-config.xml- 11   <?xml version="1.0" encoding="UTF-8"?>12   <!DOCTYPE beans PUBLIC 13    "-//SPRING/DTD BEAN/EN" 14    "http://www.springframework.org/dtd/spring-beans.dtd">1516   <beans>   17     <bean id="dateBean" class="java.util.Date" singleton="false"/>18   </beans>1920

        4.MultiActionController -如果为每一个请求编写一个 Controller 类,在程序规模增大时,您的 Controller 类将会迅速增加,可以继承 或直接使用MultiActionController类,将数个相关的请求处理集中于同一个对象,而不用每一个请求编写一个控制对象。      使用MultiActionController,您要配合一个 MethodNameResolver 的实例, MultiActioncontroller 默认使用的 MethodNameResolver 类是
org . springframework . web . servlet . mvc . multiaction . InternalPathMethodNameResolver ,这个类可以根据所给的网址中,最后请求的 文件名称来判断执行 Controller中的哪一个方法,例如/test . do 的请求会执行 test ( HttpservletRequest , HttpservletResponse )方法 。但通常不会使用 InternalPathMethodNameResolver ,因为这就失去了使用 MultiActionController 的一些优点,像是依使用者的请求 参数来决定所要执行的方法。   改用->ParameterMethodNameResolver   mvc-config.xml-

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<bean id="paraMethodResolver"           2    class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> 3    <property name="paramName"> 4     <value>action</value> 5    </property> 6    <property name="defaultMethodName"> 7     <value>list</value> 8    </property> 9    </bean>1011   <bean id="bookController" class="onlyfun.caterpillar.BookController">12   <property name="methodNameResolver">  <ref bean="paraMethodResolver"/>  </property>13

 

  也可以将所有相对应的方法专门组织在一个委托(delegate)物件中,而不是撰写在 Controller 类别中,当请求来到时,将   委托给这个物件来执 行指定的方法,您只要设定 MultiActionController 的"delegate"属性参考至委托物件即可

  或者->PropertiesMethodNameResolver

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<bean id="propMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">2   <property name="mappings">3    <props>4     <prop key="/listbook.do">list</prop>5     <prop key="/addbook.do">add</prop>6     <prop key="/deletebook.do">delete</prop>7    </props>8   </property>9  </bean>
分享到:
评论

相关推荐

    Spring MVC3入门之1 Hello World(XML based)

    **Spring MVC3 入门教程** 在本文中,我们将探讨如何使用Spring MVC 3框架创建一个简单的"Hello World"应用程序。Spring MVC是Spring框架的一部分,它提供了一个模型-视图-控制器(MVC)架构来构建Web应用程序。...

    spring mvc 的入门级资料

    Spring MVC 入门级资料 Spring MVC 是一个基于 Java 的 Web 框架,它提供了一种灵活、可扩展、Easy-to-use 的 Web 应用程序开发方式。Spring MVC 是 Spring 框架的一部分,提供了一个强大、灵活、可扩展的 MVC 框架...

    spring mvc经典入门案例

    3. **配置 Spring MVC** 在Spring MVC 应用中,我们需要配置 `web.xml` 以注册 DispatcherServlet,同时创建一个或多个 Spring 配置文件来定义 MVC 组件。配置包括配置视图解析器、处理器映射器、拦截器等。 4. **...

    spring MVC_快速入门

    这个“spring MVC_快速入门”文档可能涵盖了以上部分或全部内容,旨在帮助初学者快速理解Spring MVC的工作原理和基本用法。通过学习,开发者可以快速搭建起一个功能完善的Web应用,并逐步深入到更高级的特性,如AOP...

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    精简源码-spring-mvc 入门级使用,亲测好用

    这个"精简源码-spring-mvc 入门级使用"的压缩包文件,旨在为初学者提供一个简单易懂的实践案例,帮助他们快速理解和上手 Spring MVC。 首先,我们从 "spring" 这个标签开始。Spring 是一个开源框架,它提供了一个...

    Spring MVC 教程快速入门 深入分析

    十三、如何给Spring3 MVC中的Action做JUnit单元测试:说明了如何对Spring MVC中的控制器进行单元测试,包括配置测试环境和编写测试代码。 十四、Spring MVC转发与重定向:详细讲解了在Spring MVC中如何使用转发和...

    Spring MVC入门(登录示例)

    **Spring MVC 入门教程——基于登录示例** Spring MVC 是 Spring 框架的一个模块,主要用于构建 Web 应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者分离业务逻辑、数据处理和用户界面,使得代码更易于...

    Spring MVC入门教程

    十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

    Spring MVC快速入门

    【Spring MVC 快速入门】 Spring MVC 是一个强大的基于Java的Web应用开发框架,它提供了模型-视图-控制器(MVC)架构模式,使得开发者能够有效地分离业务逻辑和表现层。Spring MVC 以其简洁、高效和高度可扩展性...

    Spring MVC 教程 快速入门 深入分析

    Spring MVC 教程 快速入门 深入分析 目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 双亲上下文的说明 六、springMVC-mvc.xml 配置...

    Spring mvc指南+Spring mvc入门

    Spring MVC 是一款基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分,主要用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本指南将深入探讨 Spring MVC 的核心概念、配置、控制器、...

    spring mvc入门示例

    3. **模型(Model)**:在Spring MVC中,模型通常是POJO(Plain Old Java Object),用于封装数据。 4. **视图(View)**:Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。视图负责渲染模型中的数据...

    spring mvc - 入门

    本教程将带你入门 Spring MVC,理解其核心概念和工作原理,以及如何在实际项目中应用。 一、Spring MVC 架构 Spring MVC 提供了一个模型-视图-控制器的设计模式,它将应用程序逻辑、用户界面和数据处理分离,使得...

    Spring Web MVC入门教程

    Spring Web MVC是一种基于MVC模式的轻量级Java Web应用框架,它是Spring框架的一部分,主要用于简化Web层的开发。Spring Web MVC允许开发者将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller...

    spring mvc 快速入门深入分析

    ### Spring MVC 快速入门深入分析 #### 一、Spring MVC 概述 Spring MVC 是 Spring Framework 的一个重要模块,主要用于构建 Web 应用程序。它遵循 MVC(Model-View-Controller)设计模式,将应用程序的不同关注点...

    Spring MVC 简单入门

    **Spring MVC 简单入门** Spring MVC 是 Spring 框架的一个模块,主要用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关注底层细节。...

    spring mvc入门小例子

    本教程将深入探讨Spring MVC的基本概念和关键组件,帮助初学者快速入门。 首先,让我们理解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制器,负责接收HTTP请求,根据请求的URL和...

    Spring MVC 从入门到精通

    **Spring MVC 框架详解** Spring MVC 是 Spring 框架的重要组成部分,是一个轻量级的、模型-视图-控制器(Model-View-Controller)的 Web 应用开发框架,它允许开发者以简洁、高效的方式构建动态的、数据驱动的 Web...

Global site tag (gtag.js) - Google Analytics