Maven + Spring mvc 配置webApp

最近玩了一下Spring MVC豪诲,試這寫個(gè)接口啥的顶捷,當(dāng)然是小白水平。然而令人意外的是遇到了很多坑屎篱,坑的不能再坑服赎,其實(shí)主要是不太懂哈[smile]。

項(xiàng)目是 Maven + Spring
當(dāng)然你可以直接用Spring MVC ,只不過用Maven更好管理jar包罷了交播,至于配置參考 使用IntelliJ IDEA開發(fā)Spring MVC HelloWorld - 云濤的博客博客頻道 - CSDN.NET
安裝tomcat服務(wù)器
下載intellij idea(說明一下重虑,要下載專業(yè)版IDEA)

話入正題:

在此之前先看一下工程目錄:(如圖)
![工程目錄.png](http://upload-images.jianshu.io/upload_images/1183210-0900919236a3044f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

1,新建項(xiàng)目

![新建項(xiàng)目.png](http://upload-images.jianshu.io/upload_images/1183210-de7b475fcb906c8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

工程名字.png

你現(xiàn)在看到的可能目錄結(jié)構(gòu)上面的預(yù)覽不一樣秦士,別著急缺厉,等你加入Spring就好了

2,添加Spring和一些依賴的jar
pom.xml里面配置,

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

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.7.0</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.7.0</version>
    </dependency>

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>



    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-jexl</artifactId>
      <version>2.0</version>
    </dependency>
</dependencies>

好了,所有的jar包加入完了,除了Spring還有其他的包,后面將會(huì)講到.

3,配置Spring

你會(huì)在webapp/WEB-INF找到web.xml,里面的配置幾乎是固定的

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>


  <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>

  <servlet>
    <servlet-name>dispatcher</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>/</url-pattern>
  </servlet-mapping>

  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>false</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.html</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>


</web-app>

然后在當(dāng)前目錄下創(chuàng)建dispatcher-servlet.xml,(創(chuàng)建方法為New - XMLConfiguration File - Spring Config),配置dispatcher-servlet.xml當(dāng)然也是至關(guān)重要的.

<?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="main.controller"/>

    <!--<mvc:annotation-driven/>-->

    <mvc:default-servlet-handler/>

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!--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/jsp/"/>
        <property name="suffix" value=".jsp"/>
        
        <!--如果支持html,html和jsp不可同時(shí)支持-->
        <!--<property name="suffix" value=".html"/>-->
    </bean>

</beans>

**4,配置完這些之后,你就可以寫個(gè)Controller了,比如我寫的是Home

@Controller
public class Home {

    @RequestMapping(value = "list",method = RequestMethod.GET)
    public  @ResponseBody
    ArrayList<String> list(){
        ArrayList<String> array = new ArrayList<String>();
        array.add("test");
        array.add("test2");
        return  array;
    }

    @RequestMapping(value = "/user",method = RequestMethod.GET)
    public  @ResponseBody People user(){
        People p = new People();
        p.setAge("16");
        p.setName("lily");
        return p;
    }

}

打開Safari,輸入localhost:8080/list;你就會(huì)看到你要返回的數(shù)據(jù)了.


其實(shí)到這一步已經(jīng)差不多完了,如果你只是想寫個(gè)返回?cái)?shù)據(jù)的Demo,

如果你想更進(jìn)一步,想直接利用ModelAndView,生成一個(gè)頁面的話,并且能夠接受ModelAndView傳過去的值.

Controller里面代碼如下:

 @RequestMapping(value="/userself")
    public ModelAndView index(){
        ModelAndView modelAndView = new ModelAndView("/myName");
        modelAndView.addObject("name", "Silicn的測(cè)試頁面");
        modelAndView.addObject("nihao","傳值:");
        return modelAndView;
    }

** 坑來了**

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html>
<head>

    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no,">
    <title>${name}</title>


</head>
<body>


<h1 style="text-align: center; font-size: 25px; display: block" >

    ${nihao}隨便寫個(gè)標(biāo)題吧
</h1>

<div>
    <p style="text-indent: 2em">
        一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,
        一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,一個(gè)段落,
    </p>
</div>
<div>
    <a href="myName.jsp">一個(gè)按鈕</a>
</div>
</body>
</html>

你會(huì)寫這樣的一個(gè)jsp文件,等你打開uri之后.你發(fā)現(xiàn),咦,這個(gè)EL語法${name}怎么直接顯示了呢?

顯示結(jié)果.png

這就涉及EL語法問題, 可能你的Safari默認(rèn)EL是關(guān)閉的!!

開啟如下:

<%@ page isELIgnored="false" %>

然后就沒有然后了.

寫了這么多,希望大家配置的時(shí)候能夠避免這寫問題.至于怎么配置tomcat,配置WebApp,我就不多說了,網(wǎng)上很多!

最后,如果你遇到路徑找不到,無法解析JSON等問題,你就看看你的jar包,是否完整, 或者直接復(fù)制我的jar包就可以了!!

有問題,歡迎留言!!一起探討!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末提针,一起剝皮案震驚了整個(gè)濱河市命爬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辐脖,老刑警劉巖饲宛,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嗜价,居然都是意外死亡艇抠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門久锥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來练链,“玉大人,你說我怎么就攤上這事奴拦∶焦模” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵错妖,是天一觀的道長(zhǎng)绿鸣。 經(jīng)常有香客問我,道長(zhǎng)暂氯,這世上最難降的妖魔是什么潮模? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮痴施,結(jié)果婚禮上擎厢,老公的妹妹穿的比我還像新娘。我一直安慰自己辣吃,他們只是感情好动遭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著神得,像睡著了一般厘惦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哩簿,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天宵蕉,我揣著相機(jī)與錄音,去河邊找鬼节榜。 笑死羡玛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宗苍。 我是一名探鬼主播稼稿,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亿遂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了渺杉?” 一聲冷哼從身側(cè)響起蛇数,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎是越,沒想到半個(gè)月后耳舅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倚评,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年浦徊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片天梧。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盔性,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呢岗,到底是詐尸還是另有隱情冕香,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布后豫,位于F島的核電站悉尾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挫酿。R本人自食惡果不足惜构眯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望早龟。 院中可真熱鬧惫霸,春花似錦、人聲如沸葱弟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翘悉。三九已至茫打,卻和暖如春居触,著一層夾襖步出監(jiān)牢的瞬間妖混,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工轮洋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留制市,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓弊予,卻偏偏與公主長(zhǎng)得像祥楣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容