從零開始搭建JavaSpringMVC(一)


從零開始搭建JavaSpringMVC(一)

本來具有一定的Django開發、和網絡攻防背景,但由於工作中確實有許多接觸JavaWeb的情況——主要是各位老師傅們的反序列化騷操作拿shell,那個內存馬看得我頭禿,但想學。所以考慮好好學一波Java。編程向來都是實戰中學習來的最快,也就考慮干脆架一個SpringMVC試試,搭個和Django官方教程那樣差不多的Web就Ok了。

但Java環境配置看起來一直都是一個頭疼的問題,而且網上零零碎碎的也有各種各樣的SpringMVC的教程,但都比較零散,網課雖然有卻又要花不少銀子,所以我這邊想干脆就邊搜資料邊實戰,弄出個能工作的WebMVC的實戰文章,從零開始搭建,整就行了。

估計編程的中途又會出現一些需要補充Java基礎知識的情況,就分別寫一些博客來進行補充。

此次搭建主要參考的還是jpwz的博客,當然在搭建的時候也會加入一下自己的理解,如果有誤也希望各位師傅指正,感謝感謝。相關的文章如下:

https://www.cnblogs.com/jpwz/p/10538635.html

環境配置

  • JDK8 + Intellj
  • maven 3.6.2

先說說JDK

這玩意兒直接去官網上下載即可,如果是因為xx上網問題導致下載不了。那就盡量找資源吧,總之下載好了之后進行安裝即可,需要配置環境變量。JDK我在搭建前就已經有了,所以也就不贅述如何安裝JDK。粗略找了幾個有用的url,各位看看應該就能配置好了。以下兩個鏈接二選一即可。

再說說Maven

這東西就是個依賴包的管理器,賊好用。一開始接觸java項目對於maven這個玩意兒也是很懵逼的,后來發現這東西真的好用,具體的話可以參考慕課網的《Maven項目依賴管理》的免費課程學一波即可。

把前三章開個1.5倍速看完,在本地配置一下就懂了。至少夠用,如果不夠用的話,我后續再更新這個博客。鏈接如下:

  • https://www.imooc.com/learn/1282
  • 注意maven可以配置國內的鏡像源,這個可以讓你的項目下載變得極其的快,前三章的課內有提到如何配置,務必配上。

再說說Intellj

這東西就是個IDE了,說白了就是讓你寫代碼方便一些。Intellj可以在官網下載,有資源的可以考慮直接買一個,學生應該還能用學生郵箱免費使用pro版到畢業,目前來說Java開發都比較喜歡使用Intellj或者Eclipse來進行開發。我這邊就用的Intellj了。

不廢話了,項目開始

第一步:初始化項目

首先運行Intellj,新建項目,按照如下圖所示選擇:

image-20201023204743982

選擇項目所在的文件夾,我就新建了一個空文件夾SpringMVCPractise2作為項目的地址

image-20201023204925913

下一步后就是我的本地maven配置了,我沒有用intellj的默認maven配置,這個在之前介紹的maven網課中前三章內提到過,按照老師說的配置即可,當然用Intellj默認的也沒啥問題。

image-20201023205055352

初始化好的項目結構如下,部分敏感信息做了脫敏,不會影響,如果存在項目創建失敗或者卡主的情況,應該是maven沒有配置國內的鏡像源。可以從網課那邊知道怎么搞,想快一點就走下面這個url看看,也是在網上翻到的。(說白了也就是在maven的配置文件setting.xml中加一段鏡像配置即可,用aliyun的鏡像就挺好的,畢竟人家Java大廠,肯定不會虧待我們)

初始化的項目結構如下:

image-20201023205229136

然后在項目的src目錄下添加java目錄和resource目錄。同時將Java目錄標記成Sources root,將resource目錄標記成Resources root,注意當標記成功后,Java目錄的圖標會變成藍色,resource目錄的圖片會多一個小圖標,見下圖。

image-20201023205724051

隨后在pom.xml中添加springmvc的依賴,然后點擊右上角帶着M的小圖標,如下圖所示。

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.1.RELEASE</version>
  </dependency>

image-20201023210122614

第二步:構建一個簡單的Servlet

Servlet說白了就是一個網頁的服務,比如你網上沖浪的時候點一個url就返回一個頁面。假設你點的是 hxxp://xx.xx.xx/login.jsp,那在JavaMVC中看到的就是如下的流程,:

  1. 用戶點擊了url: /login.jsp
  2. /login.jsp 被扔到 web.xml中找有沒有匹配的配置(這也就是我們這章節需要去構建的)。
  3. web.xml中找到匹配的配置,在springMVC中是找到了spring的配置文件springmvc.xml(所以我們也要配置這玩意兒,然后在springmvc.xml中找到對應的Java代碼)
  4. springmvc.xml會指向指定的Java代碼(一個implement了Controller的Class,也是我們要去寫的)。
  5. 這個Java代碼會執行你想要執行的邏輯,比如做一些簡單的運算,然后回復一個的登錄窗口。

那么根據流程來看,首先就是在web.xml中添加配置了,讓某個url可以指向我們想要的Java代碼,添加以下配置,結果如下圖所示,注意到springmvc.xml標紅了,估計是還要加個配置文檔,不急,慢慢走:

<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--配置springmvc.xml的路徑-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

image-20201023212200913

在resources目錄下添加springmvc.xml文件,也就是上圖中標紅的東西。記得選spring.xml,如下圖:

image-20201023212439216

結果如下,不紅了。(如果發現其他地方有標紅,可以注意一下右上角是不是有個m的圖標,點擊一下下載好依賴就解決了)

image-20201023212534560

接下來就是寫代碼了,我們在java目錄下創建一個com.myfirstspring.controller的package,然后在該package下創建一個MyFirstController類,內置代碼如下:

package com.myfirstspring.controller;

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

public class MyFirstController implements Controller {

    @Override
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        return null;
    }
}

image-20201023213935602

如上圖所示,我們應該是缺了Tomcat,整!我們就弄個tomcat的plugin試試吧,看看效果。

前往maven官網地址 http://maven.apache.org/,選擇Plugin。

image-20201023215742319

然后頁面 http://maven.apache.org/plugins/index.html 內搜索Tomcat,找到這個位置

image-20201023215838049

就他咯,https://tomcat.apache.org/maven-plugin.html

image-20201023215941829

跳轉到了https://tomcat.apache.org/maven-plugin-2.2/ 按照指南在pom.xml中添加plugin即可。

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
</plugin>

image-20201023220057660

結果如下:

image-20201023220245834

結果問題還在,如下圖。但問題不大,因為Tomcat我們肯定也是要的,按照之前的步驟走下來總得裝個tomcat,不然web跑不起來。現在那就下個Servlet-api吧,總應該沒錯了。

image-20201023220511191

前往mavenrepository,搜索Servlet,https://mvnrepository.com/search?q=servlet

image-20201023220832023

點進去選擇最火的吧。

image-20201023220905070

然后把這個xml放到我們的pom.xml中,點擊右上角的m進行刷新。

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

image-20201023221015872

他總算可以了!Good,繼續走下一步。

image-20201023221058547

我們寫一點業務邏輯到MyfirstController中去,如下代碼

@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
    ModelAndView mav = new ModelAndView("index.jsp");
    mav.addObject("message", "Hello Myfirst SpringMVC");
    return mav;
}

如下圖所示:

image-20201023221748428

這樣子業務邏輯就ok了。讓我們把index.jsp給配置一下內容,使用以下代碼,如下圖

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" isELIgnored="false"%>

<h1>${message}</h1>

image-20201023222121805

message這個參數應該就是我們在MyFirstController中定義的message了,不過標黃了,仔細想想應該是我們的springmvc.xml還沒有配置。所以整個springmvc在一次訪問的生命周期就應該是:

用戶輸入url --> 在web.xml中找匹配 --> 被跳轉到 springmvc.xml中找匹配 --> 找到匹配的class MyFirstController --> 將message對應值放置到index.jsp中 --> 返回index.jsp 給用戶。

所以應該是這個 被跳轉到 springmvc.xml中找匹配 環節出了問題,因此才標黃的。那就加上吧。

<bean id="simpleUrlHandlerMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <!-- /hello 路徑的請求交給 id 為 helloController 的控制器處理-->
            <prop key="/hello">myFirstController</prop>
        </props>
    </property>
</bean>
<bean id="myFirstController" class="com.myfirstspring.controller.MyFirstController"/>

image-20201023223953726

配置到這里網站就寫好了,但我們還差一個Tomcat

第三部:把Tomcat啟動起來

因為我們之前是安裝的maven-plugin形式的tomcat,所以我們還要配置一下Tomcat,點擊右上角的Add Configuration,然后點擊加號,選擇maven,如下圖。

image-20201023223233108

修改一下名字,然后添加command,點擊Apply,command如下圖。

tomcat7:run

image-20201023223342907

這就好起來了。訪問網址 http://localhost:8080/SpringMVCPractise2/hello

image-20201023223636328

總結

SpringMVC的整體流程感覺如下:

用戶輸入url --> 在web.xml中找匹配 --> 被跳轉到 springmvc.xml中找匹配 --> 找到匹配的class MyFirstController --> 將message對應值放置到index.jsp中 --> 返回index.jsp 給用戶。

但目前來說還缺少一個與數據庫交互的地方,就放在第二章節吧,弄個可以訪問本地數據庫的Web應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM