Sping MVC知识点总结

来源:互联网 发布:浮空 知乎 编辑:程序博客网 时间:2024/04/24 18:38

Sping MVC知识点总结

第一次总结,可能还不全面,但是会尽量的简单易懂

  • Spring MVC是怎样工作的

Spring MVC是怎样工作的

Spring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring的Web MVC框架的DispatcherServlet的请求处理流程说明如下图:

这里写图片描述
图2_1
具体执行步骤如下:

1、 首先是浏览器通过向前端控制器发送一个请求,由前端控制器选择哪个页面控制器来处理这个请求;

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

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

4、 前端控制器再次收回控制权,将响应返回给浏览器,至此整个结束。

配置文件的配置

1.首先就应该在web.xml文件中配置前端控制器(DispatcherServlet),

<?xml version="1.0" encoding="UTF-8"?>  <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"      id="WebApp_ID" version="3.0">      <!-- SpringMVC的前端控制器 -->      <servlet>          <servlet-name>Hello</servlet-name>          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>          <load-on-startup>1</load-on-startup>      </servlet>      <!-- Spring MVC配置文件结束 -->      <!-- 拦截设置 -->      <servlet-mapping>          <servlet-name>Hello</servlet-name>          <!-- 由SpringMVC拦截所有请求 -->          <url-pattern>/</url-pattern>      </servlet-mapping>  </web-app>

这其中没有太多要注意的,主要是配置SpringMVC的前端控制器,并且由SpringMVC拦截所有请求.

2.其次就是配置spring mvc自身的配置文件-[servlet-name]-servlet.xml
(1)可以采用默认配置:放置于WebContent/WEB-INF下
(2)或者在web.xml文件中自定义xml文件

<!-- 设置自己定义的控制器xml文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Hello-servlet.xml</param-value>
</init-param>

3.就应该是[servlet-name]-servlet.xml文件的配置

<!-- 把标记了@Controller注解的类转换为bean -->      <context:component-scan base-package="com.mucfc" />      <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />      <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"          p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>  

4.定义控制器

@Controller    public class HelloWorldController {        @RequestMapping(value="/hello",method=RequestMethod.GET,params="userid")        public String printWelcome(ModelMap model,String userid) {            model.addAttribute("message", "Spring 3 MVC Hello World");            return "hello";        }    

注解@Controller表示一个特定的类提供一个控制器的角色。注解@RequestMapping 用于将URL映射到任何一个类或者一个特定的处理方法,该控制器上的所有处理方法是相对于/hello 路径。
return “hello”定义的服务方法可以返回一个字符串,其中包含要用于渲染模型视图的名称。这个例子返回“hello”作为逻辑视图名。

5.创建逻辑视图(主要是jsp)
注意文件名:是hello.jsp,还记得上面说的“这个例子返回“hello”作为逻辑视图名”吗?

0 0
原创粉丝点击