1. 程式人生 > >SpringMVC 的第一個程式——HelloWorld

SpringMVC 的第一個程式——HelloWorld

SpringMVC 的HelloWorld

1.什麼是SpringMVC?

  Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程式的全功能 MVC 模組。Spring MVC基於模型-檢視-控制器(Model-View-Controller,MVC)模式,它能夠幫助我們建立靈活和鬆耦合的Web程式。

2.展示圖片

1)請求處理的流程圖

SpringMVC的流程圖

2)專案目錄結構

專案目錄結構

3.基本步驟

1)響應請求-DispatcherServlet

  DispatcherServlet是SpringMVC中最核心

的部分,它是接收所有使用者請求的前端控制器Servlet,Servlet運行於Web的應用伺服器中,理論上可以響應任何型別的請求。當用戶在瀏覽器發出請求的時候,最先進入SpringMVC中的DispatcherServlet。它的作用是通過處理器對映,把使用者的請求傳送到相應的控制器(Controller)中,再由控制器處理使用者請求的SpringBean。

2)處理器對映-HandlerMapping

  當DispatcherServlet截獲到請求的時候,不知道要把請求發往哪一個控制器,這個時候就要用到處理器映射了。通過查詢處理器對映,DispatcherServlet就能由使用者的請求知道該用哪一個控制器。

3)控制器-Controller

  控制器(Controller)即MVC中的C,控制器在後面的小黑屋完成資料的處理,然後返回一個ModelAndView物件給DispatcherServlet,Model將會在相應的View上顯示出來。

4)檢視解析器-view resolver

  檢視解析器(view resolver)對上一步得到的ModelAndView物件進行解析,將其匹配到相應的檢視(例如一個jsp),利用相應的檢視顯示資料。

5)檢視顯示-view

  檢視(view)即MVC中的V,其作用就是把控制器返回的相應的model進行顯示。到了這裡,請求的任務基本就已經完成了。

4.第一個HelloWorld程式

1)新建一個JavaWeb專案

2)配置web.xml檔案

  在web.xml配置Spring MVC的核心類DispatcherServlet(以及ContextLoaderListener)。

<servlet>
    <servlet-name>spring-web</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-web-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring-web</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

  servlet-name即自定義你的servlet的名字;
  servlet-class即指定你的servlet用的是哪個類;
  ini-param中用於指定你的servlet的配置檔案,在這裡指定servlet的配置檔案路徑為/WEB-INF/spring-web-config.xml,不指定的話,則會預設指定為WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置檔案。
  load-on-startup設為1,表示啟動容器時初始化該servlet。
  url-pattern設為/,表示響應預設servlet對映。

3)配置應用上下文config.xml,即上文提到的servlet的配置檔案

在這裡配置viewresolver和處理器對映HandlerMapping。

<bean name="/helloWorld" class="com.SpringMVC.web.controller.HelloWorldController" /> 

    <!-- ViewResolver --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/> 
        <property name="suffix" value=".jsp"/> 
    </bean>

  處理器對映會將請求的URL和Bean名字對映,如URL為 “上下文/helloWorld”,則Spring配置檔案必須有一個名字為“/helloWorld”的Bean,上下文預設忽略。當用戶請求為/helloWorld的時候,DispatcherServlet就會把請求傳送到相應的HelloWorldController控制器去。
  viewresolver中的class指定用的是spring框架中的viewresolver類,prefix和suffix屬性表明查詢檢視頁面的字首和字尾,比如/WEB-INF/helloWorld.jsp。

  不過好像現在不流行用這種映射了,直接用註解好像更加方便快捷,不需要再這裡配置map了,新增如下配置,在控制器類中添加註解,程式就會自動檢測並且跳轉到相應的控制器中。

    <!-- 自動掃描的包名 -->
    <context:component-scan base-package="com.techbirds.controller"></context:component-scan>
    <!-- 預設的註解對映的支援 -->
    <mvc:annotation-driven />

4)編寫Controller控制器類HelloWorldController.java

程式需要實現Controller介面,並實現裡面的hadleRequest函式。

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 HelloWorldController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest arg0,
            HttpServletResponse arg1) throws Exception {
        return new ModelAndView("/helloWorld");
    }
}

  程式會根據ModerlAndView中的/helloWorld找到相應的helloWorld.jsp,然後返回給使用者。

  如果你使用的是註解,則像下面這樣寫:

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldContorller {
    //hello world例子
    @RequestMapping(value="/helloWorld")
    public String hello(){
        System.out.println("spring mvc hello world!");
        return "helloWorld";
    }
}

  使用註解之後,不需要實現Controller介面,只需要新增@RequestMapping(value=”/helloWorld”)註解,程式就會自動匹配了。

5)新增前端檢視helloWorld.jsp

<% String path = request.getContextPath();%>
<% String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>Hello World!</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
  </head>

  <body>
    -----------------Hello World! ----------------------<br>
  </body>
</html>

6)請求

  這個時候要先把專案新增到Tomcat中,然後執行Tomcat(Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,可利用它響應HTML頁面的訪問請求,你的Web程式要執行在這上面來截獲使用者請求),在瀏覽器輸入 localhost:8080/專案名/helloWorld,即可得到結果。
helloWorld程式執行結果

相關推薦

SpringMVC第一程式——HelloWorld

SpringMVC 的HelloWorld 1.什麼是SpringMVC?   Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程式的全功能 MVC

Java (二)第一程式HelloWorld

      我們都知道java是跨平臺的,所說的跨平臺就是指可以在不同得平臺環境上執行,win7,win8,win10,xp,mark等,在不同得平臺上執行就要安裝不同的執行工具JRE,JDK是開發工具它裡面包含了JRE。 1.安裝好開發工具JDK 2.在

《Linux C程式設計一站式學習》——第一程式HelloWorld.c

1、首先確保linux系統下安裝了gcc編譯器,使用vim編寫一個簡單的C程式: 2、儲存退出,用gcc命令編譯,預設會生成a.out可執行檔案,如果要生成指定名稱的檔案,需要加入-o  appname  引數: 3、執行程式; 4、對於程式中出現的一些警告,gcc編

Java的第一程式HelloWorld

2018年11月10日 12:01:09 LuckyShawn 閱讀數:4 標籤: Java

Servlet實現我的第一程式HelloWorld

用myeclipse建立web專案,編寫servlet。部署後,啟動Tomcat伺服器。 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.ht

wxWidgets教程01:第一程式 HelloWorld

本節將會手動編寫建立一個最簡單的wxWidgets程式,該程式不做任何事情,只是一個窗體。寫的比較細,包括部分原始碼及執行原理,希望可以徹底理解! 1. Frame和Dialog的區別 一般情況下,有選單工具欄的是Frame,沒有的是Dialog。當然這是一般情況,因為

Java實現我的第一程式HelloWorld

public class HelloWorld { public static void main(String[] args){//程式的入口 System.out.print("Hello

用匯編寫的第一程式---helloworld.asm

 DATA         SEGMENT                            ;資料段定義開始 NUMBER       DB        'hello,world!',0AH,0DH   ;被顯示得字串 DATA         ENDS       

【 D3.js 入門系列 --- 1 】 第一程式HelloWorld

下面開始用D3.js處理第一個簡單問題,先看下面的程式碼:  <html> <head> <meta charset="utf-8"&g

Struts2入門第一程式HelloWorld

俗話說萬事開頭難,只要入了門什麼都好說!今天我就來帶看我部落格的朋友們入struts2的門 一、首先我們要下載struts2(去官網www.apache.org找struts2的下載)如圖: 選擇下載即可。這樣我們就完成了第一步,現在我們有了struts2的軟體了,先解壓來

android的第一程式helloworld (有圖有真相)

1、建立工程 2、都不需要編寫程式碼 非常簡單  AndroidhelloActivity.java package com.mrjing.org; import android.app.Activity; import android.os.Bundle; pub

學習筆記(第一程式HelloWorld的解釋)

關鍵字,主函式的概念 class Demo {   public static void main(String[] args)   {     System.out.println("hellow java");   } } 1、在我們這個類中,Demo稱之為類名,cl

安卓學習筆記 -- (安裝環境) Android Studio安裝配置、環境搭建詳細步驟及基本使用 Android Studio和SDK官方開發工具下載 Android Studio教程從入門到精通 Android開發-之第一程式HelloWorld

1、下載Android Studio安裝配置、環境搭建詳細步驟及基本使用    https://www.cnblogs.com/yanglh6-jyx/p/Android_AS_Configuration.html https://blog.csdn.net/k491022087/ar

Java環境變數設定後,編寫第一程式報錯:找不到或無法載入主類 D:\java\HelloWorld

Java 環境變數配置完後,按照網上說的辦法測試都成功了,但在寫第一個HelloWorld程式時,編譯通過了,執行時報“找不到或無法載入主類 D:\java\HelloWorld”錯誤。 網上解決辦法 程式設計時習慣地認為一個執行命令後面一般跟的是一

SpringMVC -- 第一簡單的程序

add control mar con print tex i++ 控制 str 學習springMVC,我們來記錄下第一個HelloWord的程序 首先。我們組織須要的jar包 commons-logging-1.1.3.jar spring-a

我的Java第一程式

一個Java程式可以認為是一系列物件的集合,而這些物件通過呼叫彼此的方法來協同工作。下面簡要介紹下類、物件、方法和例項變數的概念。 物件:物件是類的一個例項,有狀態和行為。例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。 類:類是一個模板,它描述一類物件的

python的第一程式-拷貝檔案遇到的問題

開始學習python了(windows環境). 第一個程式就是跟著文件敲一個備份的程式碼,文件適壓縮成zip檔案,但是系統沒有安裝zip包 #------------------------------上程式碼-----------請注意windows是反斜槓--------------

Java第一程式hello world

import java.util.Scanner; public class hello { public static void main(String[] args) { System.out.println("hello"); Scanner in

JAVA學習之路第2篇-JAVA第一程式hello world

java實現hello word 第1篇中我們瞭解了什麼是機器語言以及關於儲存單位的一些知識點,知道了能夠用編寫機器語言的二進位制值程式設計,但是二進位制面向機器挺友好機器能夠快速的識別和執行,但是面向編寫它的人就不太友好了。能否有一種語言對人比較友好而且機器還能識別執行的呢?我告訴你是

Golang的第一程式-Hello, World !

安裝Golang: 1. 下載安裝包 https://golang.google.cn/dl/ 我這裡使用壓縮包,下載後解壓到D盤(自定義)。 2. 新增環境變數:把解壓後的bin目錄新增到環境變數中   第一個程式: 1. 新建一個test.go檔案,編寫如下內容: