spring MVC框架(入门篇)-1

Spring Web MVC 简称(Spring MVC),是一个Spring提供给web应用的一个框架设计

1.MVC是什么?

MVC框架是一种理念,被广泛应用到各类语言和开发中。

M-MODEL(模型层)

V-VIEW(视图层)

C-COntroller(控制层-或者叫控制器)

2.MVC有什么作用?

MVC可以解耦各个模块

3.Spring MVC 的各个模块扮演什么样的角色?

Servlet扮演控制器(Controller)

Java Bean 是一个专门操作数据库组件的模型层(MODEL)

JSP主要是展示给用户看的,扮演一个视图的角色(VIEW)

4.Spring MVC的核心是什么?

Spring MVC的核心在于其流程,这是使用Spring MVC框架的基础,Spring MVC是一种基于Servlet的技术,

它提供了核心控制器(DispatcherServlet)和相关的组件

并制定了松散的结构,以适合各种场景的需求。

DispatcherServlet:叫做核心控制器,

     Spring C 层框架的核心是 DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即 使用了一种被称为Front Controller 的模式

Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。

spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象


了一种被称为Front Controller 的模式

Dispatcher:调度者,调度员,调度程序

servlet的作用:拦截HTTP页面发送过来的请求

5.控制层(control)的作用是什么?

  1. 封装web 请求为一个数据对象、
  2. 调用业务逻辑层来处理数据对象、
  3. 返回处理数据结果及相应的视图给用户

下面是一个简单的实例

1.创建一个web project 不是java project(spring MVC是在web项目应用的,不是java项目)

  注意:创建的时候将web.xml选中

2.添加spring mvc的支持

3.配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 3 xmlns="http://java.sun.com/xml/ns/javaee" 
 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
 6 id="WebApp_ID" version="3.0">
 7   <display-name>my_web_spring</display-name>
 8   <!-- 项目欢迎页,首页 -->
 9   <welcome-file-list>
10     <welcome-file>index.jsp</welcome-file>
11   </welcome-file-list>
12   <!-- 配置ContextLoaderListener 用来初始化Spring IOC容器 -->
13   <listener>
14     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
15   </listener>
16   <!-- 配置Spring Ioc配置文件路径 -->
17   <context-param>
18     <param-name>contextConfigLocation</param-name>
19     <param-value>classpath:applicationContext.xml</param-value>
20   </context-param>
21   
22   
23   <!-- 注意:Spring MVC框架会根据Servlet-name的配置,找到/WEB-INF/spmvc-servlet.xml作为配置文件载入web工程中 -->
24     <servlet>
25         <servlet-name>spmvc</servlet-name>
26         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
27         <!-- 下面的代码表示Dispatcher在服务器启动的时候就初始化 -->
28         <load-on-startup>1</load-on-startup>
29     </servlet>
30     <!-- servlet的拦截配置 -->
31     <servlet-mapping>
32         <servlet-name>spmvc</servlet-name>
33         <!-- 拦截以   后缀为“do”为结尾的请求 -->
34         <url-pattern>*.do</url-pattern>
35     </servlet-mapping>
36 </web-app>

在上面我们配置了DispatcherServlet 

DispatcherServlet 说白了其实就是一个Servlet ,它是对请求进行转发的核心Servlet 。

在这里即所有.do 的请求将首先被DispatcherServlet 处理,

而DispatcherServlet 它要作的工作就是对请求进行分发(也就是说把请求转发给具体的Controller )。

可以简单地认为,它就是一个总控处理器,但事实上它除了具备总控处理理器对请求进行分发的能力外,还与spring 的IOC 容器完全集成在一起,从而可以

更好地使用spring 的其它功能。在这里还需留意 < servlet-name > spmvc </ servlet-name > ,下面
4.建立 spmvc-servlet.xml 文件,它的命名规则: servlet-name-servlet.xml 。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 3 <beans>
 4     <!--在spring中一切资源都被视为bean -->
 5     <bean id="simpleUrlHandlerMapping"
 6         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 7         <property name="mappings">
 8             <props>
 9                 <prop key="/my.do">MyControl</prop>
10             </props>
11         </property>
12     </bean>
13     <!-- 说明: my.do 的请求将给名为 MyControl 的 bean 进行处理。 -->
14     <bean id="MyControl" class="com.pojo.MyController"></bean>
15 
16 
17 </beans>

5.编写com.test.MyController.java文件

package com.pojo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class MyController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        // TODO Auto-generated method stub
        ModelAndView mv = new ModelAndView("index.jsp");
        mv.addObject("message", "喂喂喂,是我");

        return mv;
    }

}

6.编写index.jsp文件

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'index.jsp' starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22   
23   <body>
24     This is my JSP page. <br>
25     ${message}
26   </body>
27 </html>

7.启动服务器

因为在web.xml中设置了欢迎页,所以访问项目时直接访问的是index.jsp

 在地址栏中输入my.do

8.备注

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 3 xmlns="http://java.sun.com/xml/ns/javaee" 
 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
 6 id="WebApp_ID" version="3.0">
 7   <display-name>my_web_spring</display-name>
 8   <!-- 项目欢迎页,首页 -->
 9   <welcome-file-list>
10     <welcome-file>index.jsp</welcome-file>
11   </welcome-file-list>
12   <!-- 配置ContextLoaderListener 用来初始化Spring IOC容器 -->
13   <listener>
14     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
15   </listener>
16   <!-- 配置Spring Ioc配置文件路径 -->
17   <context-param>
18     <param-name>contextConfigLocation</param-name>
19     <param-value>classpath:applicationContext.xml</param-value>
20   </context-param>
21   
22   
23   <!-- 注意:Spring MVC框架会根据Servlet-name的配置,找到/WEB-INF/spmvc-servlet.xml作为配置文件载入web工程中 -->
24     <servlet>
25         <servlet-name>spmvc</servlet-name>
26         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
27         <!-- 下面的代码表示Dispatcher在服务器启动的时候就初始化 -->
28         <load-on-startup>1</load-on-startup>
29     </servlet>
30     <!-- servlet的拦截配置 -->
31     <servlet-mapping>
32         <servlet-name>spmvc</servlet-name>
33         <!-- 拦截以   后缀为“do”为结尾的请求 -->
34         <url-pattern>*.do</url-pattern>
35     </servlet-mapping>
36 </web-app>

如果乱码,需要设置字符编码 


原文地址:https://www.cnblogs.com/xyblogs/p/9024895.html