Spring mvc 的基本使用说明

来源:互联网 发布:可以手写的软件 编辑:程序博客网 时间:2024/05/18 03:03
     

                          Spring MVC整体架构请求流程如图:


step1: 

       首先用户发送请求前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;

step2:

    页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

step3:

    前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;

step4:

    前端控制器再次收回控制权,将响应返回给用户;至此整个结束。


SpringMVC的核心组件有:

    1. DispatcherServlet   前端控制器

    2. HandlerMapping      处理器的规则映射

    3. HandlerAdapter      处理器适配器

    4. controller          处理器或者页面控制器

    5. HandlerExceptionResolver   处理器异常解析

    6. ViewResolver         视图解析器


当我们在做一个Spring MVC准备的工作的时候,导入固定的项目包之后,就要写web.xml的配置文件:

<servlet>    <servlet-name> dispatcher </servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name> dispatcher </servlet-name>     <url-pattern>/app/*</url-pattern> </servlet-mapping>

load-on-startup表示启动容器时初始化该Servlet

url-pattern表示哪些请求交给Spring Web MVC处理, /app/*” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

     自此请求已交给MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServletServlet名字]-servlet.xml配置文件。比如:WEB-INF/ dispatcher-servlet.xml


然后配置组件项:

   在dispatcher-servlet.xml中添加:

          <mvc:annotation-driven/>
该标签的作用是可以自动识别HandlerMapping,HandlerAdapter的默认相关实例,这样在添加@Controller @RequestMapping标注的类和方法会被自动扫描注册。

可以看一下HandlerMapping的关系:



工作中基于开发效率,我们最常用的也是 DefaultAnnotationHandlerMapping


完整的dispatcher-servlet.xml文件:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"><pre name="code" class="java"><span style="font-family:宋体;">        //HandlerMapping</span><context:component-scan base-package="zttc.itat.controller"/>
 <mvc:annotation-driven/>

 <!-- 将静态文件指定到某个特殊的文件夹中统一处理 --><mvc:resources location="/resources/" mapping="/resources/**"/>//视图处理<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!-- 设置multipartResolver才能完成文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="5000000"></property></bean><bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="exceptionMappings"><props><prop key="zttc.itat.model.UserException">error</prop></props></property></bean></beans>


Controller层面的写法:

@Controller    public class HelloController  { @RequestMapping("/hello")public String hello(@RequestParam("username") String username){System.out.println("start----");System.out.println(username);return "hello";<span style="font-family:宋体;">    </span>}}

    控制器的建立可以通过实现Controller接口实现,也可以通过@Controller注解将某个类声明为Controller,本节主要讲解注解式控制器的使用。

    注解式控制器通过@Controller@RequestMapping注解定义我们的处理器类。需要通过处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter来开启支持@Controller @RequestMapping注解的处理器。


传值的问题:

    @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;

    如果数据绑定了@RequestParam 那么url上面一定要绑定数据,否则会报“400”错误。一般只有在这个数据一定是要填写的,我们才会去绑定了@RequestParam,不然我们不要添加@RequestParam,直接写参数也是可以的。

   




   






0 0
原创粉丝点击