SpringMVC 第一篇【萬能的Hello World】

前言

       既然大家看到這篇文章,相信大家都聽說過SpringMVC也大概知道它是做什麼的。請允許我簡單的介紹一下SpringMVC 給那些初學者一些入門的提示。

       對於Java的碼農來說,Web應用應該都是很熟悉的。而Web應用的展現層是Web應用必不可少的環節。而SpringMVC就是爲展現層提供的一個優秀的Web框架。和衆多Web框架一樣,它基於MVC設計模式,此外它採用的鬆散耦合可插拔的組件結構,比其它的MVC框架更具有拓展性和靈活性。SpringMVC通過一套註解,讓POJO成爲請求處理的控制器,無需實現或者繼承任何接口或者父類,大大增加了代碼的靈活程度,減少了耦合度。另外SpringMVC還支持REST風格的URL請求:註解驅動及REST風格的SpringMVC是Spring3.0的最出彩的功能之一。此外,SpringMVC在數據綁定、視圖解析、本地化處理及靜態資源處理上都有許多不俗的表現。它在框架的拓展性、靈活性方面全面超越了Struts、WebWork等MVC框架。越來越多的企業已經開始把原來的Struts換成了SpringMVC,爲了讓 大家快速的熟悉SpringMVC我編寫了此係列的文章。把我在工作中常用的功能展現給大家,讓大家快速的學習使用它。本人技術水平有限,如果有錯誤請大家指正。說了那麼多廢話,現在開始進入正題吧,編寫那萬能的入門開篇 Hello World!

聲明:本人的開發環境爲Eclipse,使用Maven的朋友我會把pom文件也上傳上來的。

前期準備

1.到Spring官網下載Spring框架最新版本3.2.1  http://www.springsource.org/download/community?project=Spring%2520Framework

2.創建Web項目SpringMVC File->New->Other>Web>Dynamic WebProject

 

3.增加一個新的文件夾config.files用來存放配置文件

4.修改Context Directory爲webapp

 6.添加j2ee依賴包

右鍵項目->Build Path->Add Libraries..->Server Runtime->Apache Tomcat xx(注意:這個需要你在eclipse添加tomcat配置)

添加springmvc依賴jar包

到此,基本項目創建已經完成。下面開始編寫代碼。

配置SpringMVC框架

首先要對web.xml文件進行配置,以便Web容器啓動時能夠自動啓動Spring容器

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>SpringMVC</display-name>
  4. <!-- 配置Spring配置文件的加載路徑 -->
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>/WEB-INF/spring/root-context.xml</param-value>
  8. </context-param>
  9. <!-- 配置Spring容器的監聽器,它將使用上配置的contextConfigLocation的值的路徑來獲得Spring配置文件的路徑 -->
  10. <listener>
  11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  12. </listener>
  13. <!-- SpringMVC的主控Servlet -->
  14. <servlet>
  15. <servlet-name>appServlet</servlet-name>
  16. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  17. <init-param>
  18. <param-name>contextConfigLocation</param-name>
  19. <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
  20. </init-param>
  21. <load-on-startup>1</load-on-startup>
  22. </servlet>
  23. <!--SpringMVC處理的URL -->
  24. <servlet-mapping>
  25. <servlet-name>appServlet</servlet-name>
  26. <url-pattern>/</url-pattern>
  27. </servlet-mapping>
  28.  
  29. <welcome-file-list>
  30. <welcome-file></welcome-file>
  31. </welcome-file-list>
  32. </web-app>
  1.  

配置好web.xml後 我們首先寫一個控制器HomeController,來處理首頁請求。 

  1. package com.yubai.springmvc;
  2.  
  3. import java.text.DateFormat;
  4. import java.util.Date;
  5. import java.util.Locale;
  6.  
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.ui.Model;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13.  
  14. /**
  15. * 處理首頁請求
  16. *
  17. * @author SongYF
  18. *
  19. */
  20. @Controller
  21. public class HomeController {
  22.  
  23. private static final Logger logger = LoggerFactory
  24. .getLogger(HomeController.class);
  25.  
  26. /**
  27. * 處理首頁請求
  28. */
  29. @RequestMapping(value = "/", method = RequestMethod.GET)
  30. public String home(Locale locale, Model model) {
  31. // 顯示當前地域
  32. logger.info("Welcome home! The client locale is {}.", locale);
  33.  
  34. Date date = new Date();
  35. DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
  36. DateFormat.LONG, locale);
  37.  
  38. String formattedDate = dateFormat.format(date);
  39.  
  40. model.addAttribute("serverTime", formattedDate);
  41. return "home";
  42. }
  43.  
  44. }

SpringMVC的Controller註解可以講任何一個POJO類標註爲SpringMVC的控制器,處理HTTP請求。具體其它部分代碼是什麼意思,暫不講解。首先教大家入門。

接下來創建SpringMVC的配置文件 在WEB-INF中創建spring/appServlet文件夾 創建servlet-context.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans:beans xmlns="http://www.springframework.org/schema/mvc"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:beans="http://www.springframework.org/schema/beans"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  9.  
  10. <!-- 開啓 Spring MVC @Controller設計模型-->
  11. <annotation-driven />
  12.  
  13. <!-- 處理HTTP GET請求 /resources/** 使之直接從 ${webappRoot}/resources文件夾下返回資源 -->
  14. <resources mapping="/resources/**" location="/resources/" />
  15.  
  16. <!-- 配置視圖解析器 把控制器返回的字符串解析爲/WEB-INFO/views/下面的jsp頁面 具體做法就是講返回的字符串加上你指定的後綴.jsp -->
  17. <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  18. <beans:property name="prefix" value="/WEB-INF/views/" />
  19. <beans:property name="suffix" value=".jsp" />
  20. </beans:bean>
  21. <!--配置SpringMVC掃描路徑 -->
  22. <context:component-scan base-package="com.yubai.springmvc.web" />
  23. </beans:beans>

 在這裏解釋一下HomeController裏面home方法返回的“home”是啥意思?   SpringMVC講home方法返回的home字符串 匹配配置文件裏面的配置  到prefix指定的/WEB-INF/views/文件夾裏面去找  home.jsp這個界面 渲染後返回給用戶。

   現在在/WEB-INF/views/下面建立 home.jsp

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <html>
  4. <head>
  5. <title>SpringMVC學習首頁</title>
  6. </head>
  7. <body>
  8. <h1>
  9. Hello world!
  10. </h1>
  11.  
  12. <P> 當前服務器時間 ${serverTime}. </P>
  13. </body>
  14. </html>

 最後一項任務,將log4j的配置文件增加到config.files文件夾中

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4.  
  5. <!-- Appenders -->
  6. <appender name="console" class="org.apache.log4j.ConsoleAppender">
  7. <param name="Target" value="System.out" />
  8. <layout class="org.apache.log4j.PatternLayout">
  9. <param name="ConversionPattern" value="%-5p: %c - %m%n" />
  10. </layout>
  11. </appender>
  12. <!-- Application Loggers -->
  13. <logger name="com.yubai.springmvc">
  14. <level value="info" />
  15. </logger>
  16. <!-- 3rdparty Loggers -->
  17. <logger name="org.springframework.core">
  18. <level value="info" />
  19. </logger>
  20. <logger name="org.springframework.beans">
  21. <level value="info" />
  22. </logger>
  23. <logger name="org.springframework.context">
  24. <level value="info" />
  25. </logger>
  26.  
  27. <logger name="org.springframework.web">
  28. <level value="info" />
  29. </logger>
  30.  
  31. <!-- Root Logger -->
  32. <root>
  33. <priority value="warn" />
  34. <appender-ref ref="console" />
  35. </root>
  36. </log4j:configuration>

到現在項目的截圖如下

 

   其中root-context.xml的內容爲

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <!-- Root Context: defines shared resources visible to all other web components -->
  6. </beans>

 發佈項目測試運行

                          關於eclipse如何部署項目我就不再贅述了,如果不會的同學可以到baidu上去查詢一下。

 在瀏覽器中輸入http://localhost:9080/SpringMVC/  (我將我的tomcat端口修改爲9080了  大家的應該是8080)就可以看到效果了。

 結束語

到目前爲止大家已經看到了如何搭建一個基礎的SpringMVC開發環境,後面的文章我會陸續的和大家分享SpringMVC的原理以及各種功能。這篇文章僅作爲HelloWorld給大家呈現。代碼在後面添加上了了,但是建議大家還是自己動手寫一下。另外使用MAVENd的同學(.pom文件我給放在config.files文件夾下面了,不使用MAVEN的同學可以刪除掉)。如有不足請聯繫我,謝謝!          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章