springmvc IDEA

来源:http://www.cnblogs.com/leigang1314/archive/2016/06/07/5566174.html
-Advertisement-
Play Games

回顧Java平臺上Web開發歷程來看,從Servlet出現開始,到JSP繁盛一時,然後是Servlet+JSP時代,最後演化為現在Web開發框架盛行的時代。一般接觸到一個新的Web框架,都會想問這個框架優勢在哪?或者比其他框架好在哪裡?如果沒有使用Spring MVC框架,而是使用其他框架並且能夠很 ...


  回顧Java平臺上Web開發歷程來看,從Servlet出現開始,到JSP繁盛一時,然後是Servlet+JSP時代,最後演化為現在Web開發框架盛行的時代。一般接觸到一個新的Web框架,都會想問這個框架優勢在哪?或者比其他框架好在哪裡?如果沒有使用Spring MVC框架,而是使用其他框架並且能夠很好地滿足要求,這樣轉換框架或許不是一個好主意。如果像我這樣首次接觸Web開發框架,Spring MVC還是值得優先考慮的。

  • Web層,更確切說是在框架處理器方面,Spring MVC對請求處理期間涉及的各種關註點進行了合理而完全的分離,並明確設置了響應的角色用於建模並處理整個聲明周期中的各個關註點。其中包括:HandlerMapping用於處理Web請求與具體請求處理控制器的映射關係;LocaleResolver用於國際化處理;ViewResolver用於靈活的視圖選擇。
  • 從表現層來看,Spring MVC用了邏輯命名視圖策略,通過引入ViewResolver和View,清晰分離了視圖策略的選擇和渲染與具體控制器之間的耦合,適合各種視圖技術很容易集成到Spring MVC中,不管是JSP/JSTL作為視圖技術,還是Velocity/FreeMarker,甚至是PDF/Excel等二進位格式視圖形式,使用它們,只需要簡單的配置。
  • Spring MVC還有另一個特色,就是“師出名門”,作為Spring大家族中的一員,很容易得到家族中其他兄弟的支持,從IoC到AOP的支持,以及數據訪問層、事務管理層的支持等。Spring MVC屬於請求驅動的Web框架,將單一Servlet作為整個應用的Front Controller,該Servlet收到具體的Web請求後,會參考設置的映射關係,將待處理的Web請求轉發給次一級的控制器來處理。

建立Spring MVC工程

  LZ的開發環境是IDEA,這幾天使用IDEA的感覺來看,IDEA整體界面比eclipse清爽,打開和關閉速度要快好多,但是好多功能還不知道在哪裡,嗚嗚嗚…

1 打開IDEA,新建工程

2 工程選擇如下所示

  當然,新建工程時也可以選擇Spring – Spring MVC(這裡把Web Application也要選擇上)

3 工程命名為mvcdemo,如下所示,然後點擊finash

4 新建工程完成後,需要手動添加關聯的jar包(LZ沒有使用maven,為什麼呢,因為現在還不會…),滑鼠移動工程名處右鍵點擊Open Module Settings,添加對應的Jar包

5 最後工程整體如下所示,為了方便,把spring所有的jar包都給添加上了,還有commons-logging包。

6 配置web.xml文件和mvcdemo-servlet.xml文件

複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <display-name>Spring MVC</display-name>

    <servlet>
        <servlet-name>mvcdemo</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvcdemo</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
複製代碼

  以上是web.xml文件,DispatcherServlet作為整個應用的Front Controller,其用來處理所有請求,而不能像“一個Web請求對應一個Servlet”那樣獲取Web容器對URL映射匹配的支持,而只好自己處理具體的Web請求和具體的處理類之間的映射關係了,也就是需要藉助於ControllerBeanNameHandlerMapping了。

複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- HandlerMapping 根據benaname找到對應的controller -->
    <bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"/>

    <!-- controller 配置處理器 -->
    <bean name="/hello" class="com.luoxn28.hello.HelloController"/>

    <!-- ViewResolver 視圖解析器  -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 首碼 和 尾碼 -->
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
複製代碼

  ControllerBeanNameHandlerMapping用來處理具體的Web請求和具體的處理類之間的映射關係,而Controller(HelloController是Controller的實現類)也就是一個具體的處理類。InternalResourceViewResolver配置的是視圖解析相關信息。

7 在src文件夾下新建com.luoxn28.hello包,然後在包下新建HelloController類。

複製代碼
package com.luoxn28.hello;

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

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

public class HelloController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {
        String hello = request.getParameter("hello");

        System.out.println("HelloController: " + hello);
        ModelAndView mav = new ModelAndView("hello");
        mav.addObject("hello", hello);

        return mav;
    }
}
複製代碼

8 在WEB-INF文件夾下新建hello.jsp文件,內容如下:

複製代碼
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>springmvc</title>
</head>
<body>
    Spring MVC<br/>
    ${hello}
</body>
</html>
複製代碼

9 更改index.jsp文件如下:

複製代碼
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <form action="hello" method="post">
      hello:<input type="text" name="hello"/>
      <input type="submit" value="提交"/>
    </form>
  </body>
</html>
複製代碼

10 至此,整個工程建立完畢,現在的工程視圖如下:

 

  然後滑鼠移動工程名處右鍵點擊Open Module Settings,進行配置,在Modules下添加Spring,選擇Spring Application Context為WEB-INF下的mvc-demo-servlet.xml,如下圖所示:

  點擊Artifacts,下麵有提示信息,點擊Fix...按鈕,如下所示:

  一切設置完畢後,點擊啟動按鈕,顯示畫面如下所示:

  隨便輸入一串字元串後點擊提交,比如輸入"luoxn28",最後會跳轉到如下界面,到此整個工程結束。

 

參考資料

  1、Spring MVC從入門到精通視頻教程


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文介紹了用 SimpleDateFormat、Joda-Time、Apache-DateUtils 三種方式解析ISO8601日期字元串的異同 ...
  • 最近在看js,看到closure(閉包)這一塊兒的時候就想到了 java的匿名內部類 兩者都有涉及到變數/參數的引用問題。 先說java的匿名內部類,他的定義我就不多做說明瞭,可以參考地址 http://docs.oracle.com/javase/tutorial/java/javaOO/anon ...
  • c++重載運算符 by ysmor 重新解釋運算符的含義,叫做運算符重載 c++程式設計P277 不多說了,給代碼 輸入9 100 2 運行結果 THE END... 歡迎大家跟帖,並繼續關註我 註意:本博客為原創作品,csdn上的那篇也是我發的 鏈接http://blog.csdn.net/yig ...
  • VC++代碼是最接近彙編指令的高級語言,為了更加準確和深刻理解VC++編碼中所涉及的很多技術概念和編譯器參數的含義,從彙編指令層面進行剖析和解讀,有助於開發者更加準確、直觀、深刻理解高級語言中很多概念和技術的真正含義,對程式優化和編碼都有非常實用的重要價值。由於內容很多,我會分解為很多篇章進行解讀實 ...
  • 起源 1950晶體管電腦年代,歐美電腦學家合力所組成的聯席大會共同開發 ALGOL(ALGOrithmic Language),也稱為A語言。 1963年,劍橋大學將ALGOL 60語言發展成為CPL(Combined Programming Language)語言。 1967年,英國劍橋大學的 ...
  • urllib 模塊是一個高級的 web 交流庫,其核心功能就是模仿web瀏覽器等客戶端,去請求相應的資源,並返回一個類文件對象。urllib 支持各種 web 協議,例如:HTTP、FTP、Gopher;同時也支持對本地文件進行訪問。但一般而言多用來進行爬蟲的編寫,而下麵的內容也是圍繞著如何使用 u ...
  • 本章內容: 創建類和對象 面向對象三大特性(封裝、繼承、多態) 類的成員(欄位、方法、屬性) 類成員的修飾符(公有、私有) 類的特殊成員 面向對象編程是一種編程方式,此編程方式的落地需要使用 “類” 和 “對象” 來實現,所以,面向對象編程其實就是對 “類” 和 “對象” 的使用。 類就是一個模板, ...
  • 1、PDF下載 蘋果Swift編程語言入門教程【完整中文版】http://www.code4app.com/thread-7878-1-1.htmlThe Swift Programming Language中文完整版 http://www.code4app.com/thread-7966-1-2. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...