搭建IntelliJ IDEA+maven+jetty+SpringMVC 開發(fā)環(huán)境

一、新建項目
1、打開idea工具,選擇新建項目file-> new -> project。選擇maven,選擇項目jdk的版本,我這里使用的是1.8(截圖是1.7),在右邊的選擇框勾選create from archetype,并選擇相應的選項,如下圖,選擇好后next:


2、這里需要填寫GroupId和ArtifactId還有Version,這三個屬性目的是標識你的項目的唯一性,比如Jetty的GroupId是org.eclipse.jetty,即它是eclipse組織的項目,ArtifactId是jetty-server,項目名為jetty-server,而我當前使用的Version是9.4.0.v20161208。這些只在發(fā)布時有用,在此可以隨便填寫,填好后點Next:


3、 打開Maven home directory,可以發(fā)現(xiàn)IntelliJ IDEA已經(jīng)集成了Maven 2和Maven 3兩個版本,也會顯示本地的maven版本,這里我們選擇自己安裝的maven版本,點擊Next。



4、填寫項目名稱以及項目保存路徑,點finish完成項目創(chuàng)建。



5、finish后,maven會在后臺生成web項目,這需要等待一定的時間,視網(wǎng)絡環(huán)境而定,經(jīng)驗發(fā)現(xiàn)用較新版本的maven項目生成更快,使用IDEA集成的maven可能會等待很長一段實踐。
下圖就是一個項目的初始架構(gòu)(正在初始化中),紅框1是項目的文件架構(gòu),因為正在初始化所以文件架構(gòu)還不完整;紅框2是控制臺,根據(jù)顯示的信息可以知道此時正在創(chuàng)建maven項目;紅框3是一個maven編譯選項,選擇Enable-Auto-Import的話之后每次修改maven的配置文件pop.xml項目都會自動導入jar包(不會再次詢問),有些同學可能選了這項之后以后可能會出現(xiàn)項目比較卡頓的情況,所以現(xiàn)在暫時先建議選擇第一個,導入更改項,這個就是每次修改完pop.xml文件項目會詢問是否導入jar包。只要修改了pop.xml文件就會出現(xiàn)這個提示,所以這里可以隨便選一個。

maven項目生成完畢后,整個的項目架構(gòu)如下圖。稍微了解一點web項目的同學就會知道每個文件夾的作用啦,在這我就不做講解。



此時可能有同學會有疑問了,怎么和以前的項目不一樣呀,沒有Java這個文件夾了。是的,現(xiàn)在是沒有存放Java源代碼的文件夾,所以我們需要手動創(chuàng)建一個:
按ctrl+alt+shift+s,或者File->Project Structure查看一下項目結(jié)構(gòu),檢查是否設(shè)置正確。

確認沒問題后選擇modules,在main文件夾上右鍵選擇新建文件夾,命名為Java(這個命名隨意)

現(xiàn)在創(chuàng)建的Java文件還只是一個普通的文件夾,需要把他設(shè)置成源文件夾,選中Java文件夾,再選擇上方的source即可,設(shè)置完畢后右邊的項目架構(gòu)也會隨著改變

至此,一個web應用的初始化工作以及完成!

二、Maven自動導入jar包
基于maven管理的項目現(xiàn)在我們已經(jīng)創(chuàng)建完畢,現(xiàn)在需要通過maven導入項目所需的jar包。Maven的好處在于我們不需要再去網(wǎng)絡上一個一個找jar包,只需要把需要用的jar包名稱以及版本號在配置中標注,Maven就會自動從他的jar包倉庫中下載,相關(guān)的配置在里面也有demo,只要把對應jar包的demo復制到項目的pop.xml中就可以了。


項目配置代碼如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.yuanxin</groupId>
  <artifactId>InfoSpringMVC</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>InfoSpringMVC Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <!--設(shè)定jar包版本-->
  <properties>
    <spring.version>4.3.2.RELEASE</spring.version>
    <mybatis.version>3.3.0</mybatis.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!--springMVC需要的jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--mybatis所需jar包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>


    <!--數(shù)據(jù)庫jar包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>InfoSpringMVC</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>

      <!--jetty插件-->
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <configuration>
          <stopPort>9988</stopPort>
          <stopKey>foo</stopKey>
          <scanIntervalSeconds>5</scanIntervalSeconds>
          <connectors>
            <!--<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">-->
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
              <port>8088</port>
              <maxIdleTime>60000</maxIdleTime>
            </connector>
          </connectors>
          <webAppConfig>
            <contextPath>/</contextPath>
            <defaultsDescriptor></defaultsDescriptor>
          </webAppConfig>
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>

配置完成后,左下角會彈出一個信息,是否導入pop.xml更改項;如果沒有彈出,也可以點擊右邊的maven更新,這樣maven就會導入jar包:



jar包導入完成后,在左邊的文件架構(gòu)中可以查看:



至此,項目所需的jar包也就全部導入進來了。此時可以檢查一下右邊的項目架構(gòu)中,插件(Plugins)中是否有jetty插件,如果有則可以使用jetty。
三、配置SpringMVC框架環(huán)境

1、配置spring-xxxx.xml(名字任取) 在項目resources文件夾下新建一個xml文件,命名為spring-springmvcConfig.xml,這個文件名稱可以任取。新建xml文件如下:

<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
</beans>

spring mvc框架從名稱上就可以知道,他和其他的MVC框架結(jié)構(gòu)類似。由三部分組成:model、views、controller,model一般就是一些基本的Javabean,views部分就是頁面部分,controller用于處理一些請求。在xml配置中,我們可以配置指定controller所處的包,讓系統(tǒng)自動掃描該包下的所有controller,

<!--指明 controller 所在包,并掃描其中的注解--> 
<context:component-scan base-package="com.promonkey.controller"/>

如果我們使用注解實現(xiàn)的話還需要開啟注解配置:

<!--開啟注解--> 
<mvc:annotation-driven/>

配置完controller后開始配置views層,下面配置視圖解析器:

<!--關(guān)于controller如何找到視圖文件,這里需要詳細的說明。在 controller 的一個方法中,返回的字符串定義了所需訪問的jsp的名字(如上面的index)。在jspViewResolver中,有兩個屬性,一個是prefix,定義了所需訪問的文件路徑前綴,另一是suffix,表示要訪問的文件的后綴,這里為 .jsp。那么,如果返回字符串是 xxx ,SpringMVC就會找到 /WEB-INF/pages/xxx.jsp 文件。--> 
<!--ViewResolver 視圖解析器--> 
<!--用于支持Servlet、JSP視圖解析--> 
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
  <property name="prefix" value="/WEB-INF/pages/"/> 
  <property name="suffix" value=".jsp"/> 
</bean>

在web項目中我們需要經(jīng)常訪問一些靜態(tài)文件,例如js、img、css等,

<!-- 靜態(tài)資源(js、image等)的訪問 --> 
<mvc:default-servlet-handler/>

完整配置如下:

<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <context:component-scan base-package="org.jason.controller"/>

    <mvc:annotation-driven/>

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".html"/>
    </bean>

    <mvc:default-servlet-handler/>
</beans>

2、配置web.xml 做過web項目的童鞋都知道,web項目有一個祖宗,必須要進行配置,那就是web.xml。打開項目中src\webapp\WEB/INF\web.xml,web.xml的版本可自行更新:

<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">
</web-app>

在web.xml文件中先導入我們之前寫好的配置文件,不然系統(tǒng)會找不到springmvc的框架配置文件:

<!--Loads Spring Security config file--> 
<context-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath*:spring-springmvcConfig.xml</param-value> 
</context-param>

配置一個監(jiān)聽器:

<listener> 
  <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> 
</listener>

配置servlet并指定配置文件,用于攔截請求,這里用的/,意思是攔截所有請求,將攔截下來的請求交給controller處理(這一步在上面配置spring-springmvc.xml時已經(jīng)配置了,請求攔截下來后如何處理):

<!-- Spring MVC --> 
<servlet> 
  <servlet-name>springmvc</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  <init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:spring-springmvcConfig.xml</param-value> 
  </init-param> 
  <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
  <servlet-name>springmvc</servlet-name> 
  <url-pattern>/</url-pattern> 
</servlet-mapping>

很多同學會遇到一個情況,那就是中文亂碼。所以這里再配置一個編碼過濾器,避免處理一些請求時出現(xiàn)中文亂碼:

<!--配置字符編碼過濾器--> 
<filter> 
  <filter-name>encodingFilter</filter-name> 
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
  <init-param> 
    <param-name>encoding</param-name> 
    <param-value>UTF-8</param-value> </init-param> 
  <init-param> 
  <param-name>forceEncoding</param-name> 
  <param-value>true</param-value> 
  </init-param> 
</filter> 
<filter-mapping> 
  <filter-name>encodingFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping>

現(xiàn)在我們所有的配置都已經(jīng)完成了,接下來就是實現(xiàn)一些業(yè)務邏輯代碼
四、Controller-控制器
在src/main/Java目錄下建立包目錄com.promonkey.controller(這里的路徑要和spring-xxxx.xml文件中掃描controller指定的路徑一致)。創(chuàng)建完包目錄就新建一個Java文件,命名為MainController。

package com.promonkey.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/** 
* Created by Promonkeyon 2017/1/16. 
* * @Controller注解:采用注解的方式,可以明確地定義該類為處理請求的Controller類; 
*/
@Controller
public class MainController { 
/** 
* @return 處理完該請求后返回的頁面,此請求返回 index.jsp頁面 
* @RequestMapping()注解:用于定義一個請求映射,value為請求的url,值為 / 
  說明,該請求首頁請求,method用以指定該請求類型,一般為get和post; 
*/ 
  @RequestMapping(value = "/", method = RequestMethod.GET) 
  public String index() { 
    return "index"; 
  }
}

關(guān)于一些注解的說明:
(1)@Controller注解:采用注解的方式,可以明確地定義該類為處理請求的Controller類;
(2)@RequestMapping()注解:用于定義一個請求映射,value為請求的url,值為 / 說明,該請求首頁請求,method用以指定該請求類型,一般為get和post;
(3)return "index":處理完該請求后返回的頁面,此請求返回 index.jsp頁面。這里返回index,結(jié)合上面配置spring-xxxx.xml中的視圖解析器,即可跳轉(zhuǎn)到index.jsp頁面五、運行jetty服務器點開右側(cè)的項目,選擇jetty run 雙擊或者點擊上面的啟動按鈕即可啟動jetty服務器。

出現(xiàn)如下提示則表示啟動成功:
接下來就可以打開 http://localhost:8088 進入網(wǎng)站了(端口設(shè)置在上篇配置pop.xml文件時有配置)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容