1. 程式人生 > >spring MVC框架(入門篇)-1

spring MVC框架(入門篇)-1

app 容器 入門 pri 初始 調度員 att url 結果

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>

如果亂碼,需要設置字符編碼

spring MVC框架(入門篇)-1