建立Spring MVC 項目

建立工程

打開IntelliJ IDEA 新建一個project,選擇spring MVC,而後點擊nexthtml

給project隨便起一個名字,點擊finishjava

建立完成的project目錄以下git

首先打開web/WEB-INF目錄下的web.xml文件,以下,把url-pattern的值改成/,用於攔截請求(url-pattern爲 / ,說明攔截全部請求,網上有說配置爲/*的,我這樣配置會出錯),並交由Spring MVC的後臺控制器來處理。這一項配置是必須的。github

<?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_3_1.xsd"
         version="3.1">
    <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>
</web-app>

 

 

 

編寫Controller與jsp頁面

MVC框架有model、view、controller三部分組成。model通常爲一些基本的Java Bean,view用於進行相應的頁面顯示,controller用於處理網站的請求。web

在項目的src目錄建立一個包用於存放controllerspring

在新建的包中,建立一個HelloController類
添加如下代碼apache

@Controller
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public class HelloController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello(ModelMap model) {
        model.addAttribute("msg", "Spring MVC Hello World");
        model.addAttribute("name", "yuntao");
        return "hello";
    }
}

 

 

解釋下上邊代碼的意思windows

1.@Controller註解:採用註解的方式定義該類爲處理請求的Controller類;
2.@RequestMapping解:用於定義一個請求映射,value爲請求的url,method用以指定該請求類型,通常爲get和post,代碼中要調用printHello方法,便可訪問 hello/hello
3.return 「hello」:處理完該請求後返回的頁面,此請求返回 hello.jsp頁面。瀏覽器

接下來刪除web目錄下的index.jsp,在web/WEB-INF中建立一個views目錄,而後建立一個hello.jsp文件spring-mvc

把下邊代碼貼入hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>${msg}</title>
</head>
<body>
<h1>${msg}</h1>
<span>${name}</span>
</body>
</html>

 

 

配置xxx-servlet.xml

完成上邊的步驟以後,在web.xml同級目錄下有個dispatcher-servlet.xml的配置文件,他的前綴dispatcher對應上邊web.xml中配置的servlet(名稱可修改),節選web.xml以下

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>

 

 

打開dispatcher-servlet.xml是空的,咱們須要添加一些配置
首先要指定下controller所在的包,這樣spring mvc會掃描其中的註解

<context:component-scan base-package="com.yuntao.hello"/>

 

 

<!--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"/>
</bean>

 

還須要配置下邊兩項,靜態資源訪問,開啓註解。

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

<!-- 開啓註解 -->
<mvc:annotation-driven/>

 

最後配置完成以下

<?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="com.yuntao.hello"/>

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

    <!-- 開啓註解 -->
    <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"/>
    </bean>
</beans>

 

配置Tomcat

上述代碼寫好了以後,還須要一個web服務,這裏使用tomcat8.去http://tomcat.apache.org/下載一個適合本身系統的tomcat,解壓。終端執行./startup.sh,windows執行startup.bat

而後打開IDEA,選擇run->edit configurations,如圖

配置tomcat所在目錄,以下

而後點擊run,運行

打開瀏覽器訪問http://localhost:8080/hello/hello

問題

NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

使用spring mvc進行開發,使用tomcat容器,經過url映射尋找view的時候,會報錯NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,若是隨便去找個jstl包過來放入web-inf/lib會報錯,正確的下載地 址在這裏,下載jakarta-taglibs-standard-1.1.2.zip這個包,解壓縮後將standard和jstl兩個包放入lib下便可

No mapping found for HTTP request with URI [/] in DispatcherServlet with name

<servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>

 

網上有人說url-pattern寫的是/*,一開始寫成這樣報這個錯誤

其次沒有開啓靜態資源訪問,也會報錯,添加

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

 

代碼下載地址 https://github.com/pengyuntao/HelloSpring

相關文章
相關標籤/搜索