Sping MVC知识点总结

本文详细介绍了SpringMVC的工作流程,包括前端控制器如何处理HTTP请求和响应,配置文件的具体设置,以及控制器的定义与视图的创建过程。

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”作为逻辑视图名”吗?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值