1. 程式人生 > >Spring MVC Web簡單入門例項

Spring MVC Web簡單入門例項

本文通過一個簡單的使用者登入例子帶你入門Spring MVC Web開發。

開發環境

1、STS 3.7.3(Spring Tool Suit),下載。STS其實是一個包裝過的Eclipse,由Spring小組開發的,專門用於Spring專案的開發。老規矩,安裝之前先要安裝jdk,並配置好環境變數。

2、Tomcat 7,下載Tomcat 7。sts已經集成了一個叫Pivotal tc Server的web伺服器,不過我們一般都使用Tomcat作為我們的Web伺服器。Tomcat配置

建立專案

1、新建Spring Legancy Project。


2、填寫專案名稱:SpringMVCLoginDemo,專案模板選擇:Spring MVC Project


3、設定包名:com.xxx.logindemo,然後點選finish。


4、新建工程完成後,工程目錄大概是下面這個樣子


目前只需要關注src目錄就行了,最重要的部分已經用紅色下劃線標出來了,下面進行簡單的解釋:

web.xml:專案配置檔案

root-context.xml:Web通用上下文環境配置檔案。

servlet-context.xml:Spring MVC上下文環境配置檔案,其中最重要的包括前端控制器DispachServlet的配置。

home.jsp:home檢視

HomeController.java:控制器

請求的處理流程

為了能夠繼續下去,我們應該先了解一下一個請求的處理流程。每當使用者點選連結或者提交表單的時候,一個請求就開始了。請求到達web伺服器後,第一個接收的就是一個叫DispacherServlet的總管家,它是一個集中處理並分派請求的人,通過它請求被分派到具體的某個控制器。每個web請求必須通過DispacherServlet,以便它能夠管理整個請求的生命週期。

      當請求被DispacherServlet派發到具體的控制器後,控制器便馬不停蹄的開始工作,處理完成後,便將資料(model)和檢視名字(viewname)打包一起返回給總管家,告訴它用這些資料去渲染叫這個名字的檢視就OK了(為什麼不直接給檢視,而是給個檢視名字?當然是為了解耦啦!)。管家拿到檢視名字後,需要請教一個叫檢視解析器的傢伙,讓他告訴自己這個檢視名字對應的檢視到底是誰。檢視解析器告訴管家,這個檢視指的就是home.jsp這個傢伙,然後管家把資料就交給home.jsp去渲染,然後再返回給使用者。具體流程可以參考下面這個圖(盜來的 #^_^):



專案配置

1、DispacherServlet配置

       通過上面的流程,我們知道了DispacherServlet的重要性,那麼如何配置這個總管家呢?開啟web.xml,裡面有如下配置:

<!-- 處理使用者請求 -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
       沒錯,這就是DispacherServlet的配置部分。裡面配置了一個叫appServlet的DispacherServlet,並在初始化引數中給出了MVC上下文的詳細配置的檔案路徑。load-on-startup=1表明DispacherServlet在應用啟動後就先載入(這是必須的,不然誰來第一個接收請求)。

       然後我們需要告訴DispacherServlet需要攔截什麼樣的請求:

<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

url-pattern="/"表明DispacherServlet來者不拒,所有請求都接收,除了靜態資源。因為靜態資源的特殊性,不用處理,可以直接交給使用者,所以不希望被DispacherServlet攔截,那麼可以在servlet-context.xml配置一個單獨的處理靜態資源的控制器:

<resources mapping="/resources/**" location="/resources/" />
這樣所有包含/reources/的連結,web伺服器都會去根下resources目錄尋找該資源。具體可以參考:SpringMVC訪問靜態資源

2、控制器配置

      專案使用的Spring版本是3.1,採用的是基於註解的控制器配置,省去了大量xml配置的麻煩。要使得基於註解的控制器配置模式生效,需要在servlet-context.xml中說明:

<annotation-driven />
然後告訴控制器在哪個包裡面:
<context:component-scan base-package="com.xxx.logindemo" />
如上所示,我們專案中的HomeController控制器就在com.xxx.logindemo包裡面。如何判斷一個JavaBean是一個控制器呢?
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}
HomeController類使用了@Controller註解,這就表明了HomeController是一個控制器。

3、請求對映

       請求到達DispacherServlet後是如何被派發到具體的控制器呢?這個要通過@RequestMapping註解來實現。@RequestMapping可用於方法和類上,有兩個重要屬性,value指定哪些路由的請求會進入該方法被處理,例如上面表示所有請求都會進入home方法;method指定接收何種請求方式,例如上面程式碼表示home方法只接收GET請求。@RequestMapping具體內容可以參考:@RequestMapping用法詳解

4、檢視解析器配置

       檢視解析器作用上面已經說了,就是將檢視名稱對映到具體的檢視,在servlet-context.xml中配置如下:

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
</beans:bean>
       檢視解析器有多種,最簡單的是這個叫InternalResourceViewResolver的檢視解析器,表示在檢視名字加上/WEB-INF/views/字首和.jsp字尾形成路徑,然後在該路徑下尋找具體檢視,如/WEB-INF/views/home.jsp。

登入例子

       好,現在再回到我們的登入例子中來。具體功能是使用者輸入使用者名稱和密碼,登入成功後在新頁面展示使用者輸入的使用者名稱和密碼。

1、編寫控制器

在HomeController中設定home方法響應所對"/"下的請求,並返回到登入檢視login。

@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home() {
		return "login";
	}
2、編寫登入頁面

在views目錄下新增login.jsp,在表單form中新增動作目的地址login,請求方法為post。

<h1>
	你好!請輸入賬號和密碼!  
</h1>
<form action="login" method="post"> 
賬號:<input type="text" name="username" required="required"/>
密碼:<input type="password" name="password"  required="required"/>
<input type="submit" value="登入"/>
</form>
3、編寫響應login路由的方法

在HomeController中編寫響應login路由的方法,驗證使用者名稱密碼,成功則返回結果檢視result.jsp,否則返回login.jsp。

/*
	 * 攔截對login路由的訪問
	 * */
	@RequestMapping(value = "login", method = RequestMethod.POST)
	public String login(String username,String password,Model model) {
		        //驗證傳遞過來的引數是否正確,否則返回到登陸頁面。
				if(username.equals("gameloft9")&&password.equals("123")){
					model.addAttribute("username", username);//往資料模型中新增資料
					model.addAttribute("password", password);
					return "result";//返回檢視名稱"result"
				}
				return "login";//返回登入頁面
	}
3、編寫結果頁面

在views目錄下新增result.jsp,顯示傳遞過來的模型資料(這裡是使用者名稱及密碼)。

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>結果</title>
</head>
<body>
<h2>登陸成功!</h2>   
使用者名稱:${username }  
<p>  
密碼:${password }  
</body>
</html>


執行截圖



從上面可以看到訪問localhost:8080/logindemo/,跳轉到了login.jsp頁面。


輸入錯誤的使用者名稱和密碼,跳轉到了localhost:8080/logindemo/login路由,這個是form表單的action指定的,由於使用者名稱密碼錯誤,所以還是返回的登入頁面login.jsp。


如果使用者名稱密碼正確,則返回的是結果頁面result.jsp。請注意目的路由仍然是localhost:8080/logindemo/login。也就是說路由與檢視頁面沒有確定的一對一關係。

好了,這就是一個簡單的Spring MVC登入例子,希望能幫助你入門。

工程原始碼已經上傳到GitHub:https://github.com/gameloft9/SpringMVCLoginDemo。

另外也在CSDN上留存的一份:http://download.csdn.net/detail/gameloft9/9582346。

相關推薦

Spring MVC Web簡單入門例項

本文通過一個簡單的使用者登入例子帶你入門Spring MVC Web開發。開發環境1、STS 3.7.3(Spring Tool Suit),下載。STS其實是一個包裝過的Eclipse,由Spring小組開發的,專門用於Spring專案的開發。老規矩,安裝之前先要安裝jdk

Spring簡單入門例項

從一個簡單的例子入門,輕鬆瞭解依賴注入。 假設我們開發了一套管理系統,每收到一筆訂單後,系統呼叫notifyservice.sendMessage給客戶傳送訂單成功郵件。有天老闆(也有可能是產品)突然要改個需求:將原來的給客戶傳送郵件功能改為發手機簡訊。你無需改

SSM框架(Spring Spring MVC Mybatis)基礎入門學習2——Spring入門例項

上次學習了servlet的基礎知識還記得麼,先來回顧一下吧:講了servlet的訪問流程,配置方法,以及原理。今天我們來學習spring的入門例項,分為3部分來學習。 1.Spring的基本知識:IoC(控制反轉)和DI(依賴注入),AOP(面向切面的程式設計) 2.Spr

使用Maven創建一個Spring MVC Web 項目

dart 目的 servle end location r文件 ext version ons 使用Maven創建java web 項目(Spring MVC)用到如下工具: 1、Maven 3.2 2、IntelliJ IDEA 13 3、JDK 1.7 4、Spring

spring MVC框架(入門篇)-1

app 容器 入門 pri 初始 調度員 att url 結果 Spring Web MVC 簡稱(Spring MVC),是一個Spring提供給web應用的一個框架設計 1.MVC是什麽? MVC框架是一種理念,被廣泛應用到各類語言和開發中。 M-MODEL(模型層)

Spring MVC web.xml配置檔案

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-a

Maven入門實戰(一)——MVN的安裝、配置、生命週期、簡單入門例項和建立父/子工程

1 Maven簡介  Maven是Apache旗下的一個開源專案,是純Java開發的一個專案管理工具,並且只是用來管理Java專案的。 1.1 Maven的好處  1)Maven專案佔用容量小 同樣的一個專案,如果是用Maven構建的話,專案的大小要小得多。(這是由於Ma

Spring MVC web 進行頁面傳值

當Controller元件處理後,需要向jsp傳值時,用下面方法: 1.直接使用HttpServletRequest和Session 2.使用ModeAndView物件 3.使用ModelMap(建模)引數物件 4.使用@ModelAttribute註解 直接使用HttpServ

Spring MVC Web請求提交資料

Spring MVC Web請求提交資料到控制器有下面幾種方法:     1.使用HttpServletRequest獲取     2.使用@RequestParam註解     3.使用自動機制封

Spring-MVC WEB進行頁面傳值(繼續上章)

8.使用RedirectView重定向 //8.使用RedirectView重定向 @RequestMapping("/test10.do") public ModelAndView test10(User user) { if(user.getUserName().equ

SpringCloud2.0版本入門 | 服務鏈路追蹤(Spring Cloud Sleuth)簡單入門

本文出自 [ 慌途L ] 最近開始寫部落格,一些問題可能瞭解也不夠透徹,寫一下快速入門並且踩過的坑,希望大家少踩坑。本文簡單介紹一下springcloud的服務鏈路追蹤,不足之處希望大家指出,我改正。不喜勿噴! 這篇文章主要講述服務追蹤元件zipkin,Spr

scrapy爬蟲框架簡單入門例項(二)

接著上一篇文章,我們已經可以用爬蟲訪問目標網站爬取頁面了,現在需要自動提交表單查詢資料,並且從頁面中篩選出每期中獎號碼儲存為json檔案匯出。首先建立一個scrapy.Item類(開啟專案資料夾下的items.py檔案): import scrapy class SsqSpiderIte

scrapy爬蟲框架簡單入門例項(一)

scrapy是一個用於爬取網站資料,提取結構性資料的python應用框架。爬取的資料一般用於資料分析,資料處理,儲存歷史資料等。scrapy的整體架構大致如下: 主要包括了以下元件: 引擎(Scrapy) 用來處理整個系統的資料流, 觸發事務(框架核心) 排程器(

SpringCloud學習點滴——Spring boot的簡單入門1

因為SpringCloud是在Spring Boot 的基礎上開發的,所以在學習Spring cloud之前,應該要對spring boot有一定的瞭解 一、首先構建一個Spring boot專案:   1、通過官方的Spring Initializr工具產生基礎專案   2、訪問http://star

Spring MVC+mybatis 專案入門:旅遊網(二) dispatcher與controller與Spring MVC

MVC模式         既然在使用Spring MVC,那麼當然要了解什麼是MVC模式。 MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介

Spring MVC+mybatis 專案入門:旅遊網(三)使用者註冊——控制反轉以及Hibernate Validator資料驗證

註冊原理         其實很簡單,前端頁面顯示一個表單,然後由dispatcher傳遞到controller,controller呼叫資料庫驗證,如果ok,那就寫入資料庫,同時返回註冊成功的檢視,否則可以返回註冊頁,或者是到一個錯誤頁。 依賴注入與控制反轉    

Docker學習--使用Tomcat 容器執行 Spring mvc web app

本文主要使用Spring mvc 做一個web 的demo ,使用tomcat 的容器來執行,下面開始介紹:一、 首先在自已的虛機中安裝一個linux系統 ,我這裡的系統是Centos7.4,安裝步驟就不多講述,請讀者自行搜尋,在linux 系統 中安裝完後,依次執行以下命令

百度地圖API呼叫簡單入門例項

<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv

RabbitMQ簡單入門例項

import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; impor

spring mvc web.xml配置(攔截資源)

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.o