JAVA學習篇--------使用idea新建、導入、部署、調試spring MVC項目

一、環境介紹

    idea版本:  IntelliJ IDEA 2019.3.3 x64

    jdk版本:如果不知道自己裝了什麼版本,可以使用cmd窗口輸入   java -version   命令就可以看到對應的版本號

                   java version "1.8.0_121"
                   Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
                   Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

    是否聯網:是   也可以在不聯網的環境下使用,我這裏聯網主要使用了idea的工程創建功能,在工程創建中需要聯網下載最新的 spring MVC 包;

    操作系統:Windows10 64位 

    tomcat版本:apache-tomcat-9.0.1-windows-x64  

    注:這裏我簡單說一下tomcat版本和java版本的關係,在查找關係的時候一定要看tomcat官網,現在網上的資料真的是~,【嗯嗯  不吐槽,專心寫】,之前通過網上查看資料有博主說tomcat9支持jdk8之前的所有版本,但是我在建立工程的時候會報一些協議不匹配的問題,其實就是jdk版本和tomcat版本不匹配,高級版本的tomcat實現的協議本版也比較高,查看tomcat和jdk版本的關係的官網地址:http://tomcat.apache.org/whichversion.html對應關係內容如下,協議實現的具體解釋還是去官網查看,  強烈推薦優先使用官網查資料,不然有些信息在你第一次獲取的時候就是錯的,這樣很傷,有的問題非常難找。  

Servlet Spec JSP Spec EL Spec WebSocket Spec Authentication (JASIC) Spec Apache Tomcat Version Latest Released Version Supported Java Versions
5.0 3.0 4.0 2.0 2.0 10.0.x 10.0.0-M4 (alpha) 8 and later
4.0 2.3 3.0 1.1 1.1 9.0.x 9.0.34 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.54 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.53 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.103 6 and later
(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x (archived) 6.0.53 (archived) 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

二、工程創建過程

        使用過程我儘量寫的詳細一點,以免漏掉坑沒有說明白:

        使用idea,File—》new—》project,會出現如下界面:

        我選擇使用idea自帶的創建工具創建工程,這個自帶的工具創建過程需要聯網,從網上下載包,網絡不好的情況下包可能會下載不成功,像上圖中選擇spring—》勾選spring MVC,點擊下一步,給自己的工程起一個名字選擇保存路徑,我使用的名字是myfirstMVC;

    點擊Finish就會出現從網上下載包,準備工程界面,我的網速還行,下載過程持續2分鐘左右,如果不能聯網或者下載失敗的朋友,下篇我會介紹離線環境下建立工程。

工程建立完成之後,如下圖,我這個是測試後的,可能會有點不一樣,不過沒關係:

在src下建立control包,在control下新建一個測試用的controler類,我的名字用IndexController內容如下:

package control;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

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

@Controller
public class IndexController {
    @RequestMapping("/index")
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{
        ModelAndView model=new ModelAndView("index");
        model.addObject("message","這是第一個SpringMVC網頁");
        return model;
    }
}

在WEB-INF目錄下新建一個page目錄,保存靜態資源,在page目錄下面新建一個jsp文件,命名爲index.jsp,

jsp文件內容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC</title>
</head>
<body>
<h1>測試</h1>
<h1>${message}</h1>
</body>
</html>

然後配置servlet,在web.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_4_0.xsd"
         version="4.0">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <description>JAX-WS endpoint</description>
        <display-name>WSServlet</display-name>
        <servlet-name>WSServlet</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <!--        兩個HelloMVC必須一樣,隨意自己取名-->
        <servlet-name>HelloMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.form</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>WSServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HelloMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

上面的配置中增加了下面兩個配置,這兩個配置是成對的,

    <servlet>
        <!--        兩個HelloMVC必須一樣,隨意自己取名-->
        <servlet-name>HelloMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

然後再WEB-INF下建立一個HelloMVC-servlet.xml文件,對應servlet配置,

文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="control"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--    /WEB-INF/page/意爲頁面的路徑,.jsp爲頁面格式-->
        <property name="prefix" value="/WEB-INF/page/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

文件按寫完了目錄結構如下:

下面就是關鍵啦,開始調試、部署:

應該是先配置工程的project structure,這裏我先不配,再下面我會介紹project structure常用項的功能

點下面的配置,進行調試運行相關配置:

再界面中點擊左邊的加號,新建一個tomcat:

然後在下面的界面中,配置運行環境

1先配置tomcat容器根目錄

2配置端口號

3部署配置

第3步部署配置如下,context使用根目錄就行:

好啦配置tomcat結束,咱們先啓動看看,能不能起來。肯定是不行的啦,報錯如下:

[2020-04-25 11:27:35,567] Artifact untitled:war exploded: Artifact is being deployed, please wait...
25-Apr-2020 11:27:36.715 嚴重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
25-Apr-2020 11:27:36.721 嚴重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
[2020-04-25 11:27:36,778] Artifact untitled:war exploded: Error during artifact deployment. See server log for details.
25-Apr-2020 11:27:45.300 信息 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [F:\apache-tomcat-9.0.1\webapps\manager]
25-Apr-2020 11:27:45.502 信息 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [F:\apache-tomcat-9.0.1\webapps\manager] has finished in [201] ms

基本意思已經很明顯了,就是再部署的時候出現問題,外部容器沒能找到你部署的東西,這個是怎麼回事,簡單來說就是spring MVC沒有內置容器,需要藉助外部容器才能運行起來,然而剛纔咱們的配置並不能使外部容器也就是tomcat9找到對應的文件,或者類庫,所以要通過部署配置讓外部容器知道你的項目結構和內容,這個配置也就是idea的project structure配置下面我介紹下這個配置的配置方法和作用;

重點來啦:project structure配置

點擊idea右上角的project structure

出現如下界面

上圖的project功能標籤如下:

1主要配置本機的jdk版本,

2主要配置和jdk對應的project language level

3是你的工程編譯輸出目錄          這個和部署調試沒有關係!!!!素所以無所謂,你自己找個目錄就行了

module標籤主要配置和組件相關的編譯路徑,一個工程可以有好多module,可以爲不同的module配置編譯數據路徑

這個地方source使用默認配置就行,

path可以使用和主工程相同的目錄,也可以爲單個module配置輸出路徑

dependencies這個主要用於添加module的依賴項,在工程中一般會添加tomcat的lib目錄,就是這個F:\apache-tomcat-9.0.1\lib目錄,然後就是添加工程的其他依賴類包,這裏我建議使用maven管理類包資源,這樣非常方便,有興趣的朋友可以在網上找找資源看一下,我這裏應爲是演示,所以就不配置了

下一項是libiaries這個也是添加外部依賴包用的

facets這個個可以配置工程的servlet配置文件

下一個就是和調試部署最相關的東西了artifacts

這個界面在最開始的時候可能是空的,點擊+號,可以添加,這裏我們使用Exploded中的From Modules,有的朋友可能沒有From Modules  ,這個是因爲在第二個界面中沒有建立Modules,建完就好了

建立完成之後,我們看界面上,界面分爲3個區

1就是工程部署目錄

2是部署目錄中包含哪些內容,

3是可以在部署目錄中添加的依賴

1區工程部署目錄,這個部署目錄不一定是tomcat的webapps目錄,也可以是自己的目錄,在使用idea調試時這個也是可以的,我使用了工程默認的web目錄

2區部署目錄中包含的內容,這個很關鍵啊!!!!!!!!!一般的時候新建artifacts在WEB-INF下只有classes目錄,這裏我們需要建立一個lib文件夾,像上面那樣,這個必須有,這個目錄下面放的東西就是我們的外部依賴包

3區中部署的工程中可用依賴項,我們在2區選中lib,在這個區中雙擊,就可以將依賴包含到工程部署目錄中。

配置完成圖如下:

下面我們啓動下看看。

好啦,可以訪問和調試了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

輸出信息正常:

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