1. 程式人生 > >Eclipse配置Javaweb專案——列印Helloworld

Eclipse配置Javaweb專案——列印Helloworld

這個配置我折騰了兩三天,現將所有的坑都展示出來。

一. 預設大家Eclipse和Tomcat都安裝好了

二. 建立SpringMVC專案

1.開啟Eclipse點選File->New->Dynamic Web Project
在這裡插入圖片描述
2.給專案起個名字
在這裡插入圖片描述
3.Finish後項目結構如下
在這裡插入圖片描述

三.匯入Spring包

上面我們已經建立完成一個動態網站專案,但這些和Spring MVC還沒什麼關係,所以我們現在要把Spring MVC相關的jar包匯入到專案裡。
1.http://projects.spring.io/spring-framework/ 這個網站翻牆開啟會快很多。如果在官網不能很快找到在哪下載就直接訪問這個網址下載http://repo.spring.io/release/org/springframework/spring/4.3.9.RELEASE/spring-framework-4.3.9.RELEASE-dist.zip。
還有一個很關鍵的包:

http://commons.apache.org/proper/commons-logging/download_logging.cgi 這個包一定要下載,不然之後啟動tomcat會報錯
2.解壓下載好的spring-framework-4.3.9.RELEASE-dist.zip,開啟lib資料夾,複製所有的jar包到自己專案的/WebContent/WEB-INF/lib 目錄裡。
在這裡插入圖片描述
在這裡插入圖片描述
3.右擊專案名,Refresh一下專案,因為剛剛複製jar進來,再選中專案名右擊 Build Path - Configure Bulid Path… - Libraries - Add JARs…,在彈出的框裡邊找到專案的/WebContent/WEB-INF/lib,這樣就看到剛剛你複製過來的 jar 包了。
在這裡插入圖片描述

四.配置專案

1.在/WebContent/WEB-INF/下新建web.xml檔案,具體內容如下,裡面有一些最基本的配置,裡面的配置都有註釋:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <description>
      Spring MVC DEOM
    </description>
    <display-name>springMVC</display-name>
    
    <!-- 
        CharacterEncodingFilter類具有encoding和forceEncoding兩個屬性,其中encoding是表示設定request的編碼,forceEncoding表示是否同時設定response的編碼。 
        <filter>下的<filter-name>內的值和<filter-mapping>下的<filter-name>內的值要完全一致
    -->
    <filter>
        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
        <!-- /下的所有請求都為UTF-8編碼 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 
        Spring MVC相關設定
        <servlet>下的<servlet-name>內的值和<servlet-mapping>下的<servlet-name>內的值要完全一致
    -->
    <servlet>
        <servlet-name>SpringMVC-DEOM</servlet-name>
        <!-- DispatcherServlet主要負責流程的控制 -->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- Spring MVC配置檔案路徑 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/springMVC-servlet.xml</param-value>
        </init-param>
        <!-- 表示啟動容器時初始化該Servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>SpringMVC-DEOM</servlet-name>
        <!-- 表示哪些請求交給Spring Web MVC處理, “/” 是用來定義預設servlet對映的。也可以如“*.html”表示攔截所有以html為副檔名的請求。 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
</web-app>

看了註釋好像還是不能完全明白其中的意思,我要說的是,先不要急於完全瞭解每個配置的含義,等到做的專案多了了解Spring MVC整個執行機制自然會慢慢明白,不可因為看不明白而不去學了,要允許暫時存在一些疑問。
2.大家肯定都注意到web.xml檔案裡有個配置為 “/WEB-INF/springMVC-servlet.xml” 這個檔案是Spring MVC的配置檔案,Spring官方文件上推薦的預設的檔名是[servlet-name]-servlet.xml檔案,這裡 servlet-name 叫 springMVC,因此,我新建了一個springMVC-servlet.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util-4.2.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.2.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
  
  <bean id = "helloworld" class="com.game.controller.Helloworld">
  </bean>
</beans>

這個檔案內容不多,裡面真正有意義的內容為

<bean id = "helloworld" class="com.game.controller.Helloworld">
</bean>

這是啥意思呢? 這個東西叫做bean, Spring 中的bean是什麼鬼? 簡單來說在Spring啟動之前bean就是一個普通java類,但不是說所有的java類都是bean ,如果一個普通類想要成為bean必須要在配置檔案裡配置,就是說每一個bean都要對應一個java類檔案,就是上面你看到的。每一個Bean對應通常需要指定兩個屬性。

id:確定該Bean的唯一識別符號,容器對Bean管理、訪問、以及該Bean的依賴關係,都通過該屬性完成。Bean的id屬性在Spring 配置檔案中是唯一的。
class:指定該Bean的具體實現類。注意這裡不能使介面。通常情況下,Spring會直接使用new關鍵字建立該Bean的例項,因此,這裡必須提供Bean實現類的類名。

當Spring 啟動之後會把配置檔案()裡的這些java類,new 一個物件,存在Spring 裡(有的地方稱為 Spring 容器),有可能會有很多物件在Spring 裡面(多個bean),當我們寫程式碼的時候就可以直接去用這些物件,而不用再去建立物件了。注意:只有在配置檔案裡宣告過的類才會被建立物件,其他的類不會被建立為bean。

那麼bean是什麼呢? bean就是存在於Spring 容器中的物件。如果把Spring 比作一輛汽車,bean就是汽車裡的各個模組零件,比如:發動機,變速箱,電路系統等,當汽車啟動時候就已經將他們啟用,就可以直接使用這些模組,而不用再去單獨啟動這些模組。

Helloworld專案

1.首先在Java Resource -> src上 右鍵點選-> new ->package 建立com.game.controller 建立一個包,之後在這個包上右鍵點選new->class ,類名為Helloworld,之後點選Finish.
在這裡插入圖片描述
2.在Helloworld.java中新增以下程式碼:

package com.game.controller;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Helloworld {

    @RequestMapping("/helloworld")  //此處控制瀏覽器裡訪問路徑 具體為:/SpringDemo/helloworld
    public void helloWorld(HttpServletRequest request, HttpServletResponse response) throws IOException {
        
        //輸出字串
        response.getWriter().append("hello world");

    }
}

在這裡插入圖片描述
3.配置伺服器
在這裡插入圖片描述
4.啟動伺服器
在這裡插入圖片描述
最後一個坑在這裡:
在這裡插入圖片描述
明明配置好了伺服器,也成功啟動了,怎麼找不到網頁?
將url改為http://localhost:8888/SpringDemo/helloworld就好了。(前提是你的http埠設定為了8888)
在這裡插入圖片描述
埠可直接通過右擊Tomcat Sever->open開啟視覺化介面編輯。
在這裡插入圖片描述