第一個(gè)SpringMVC測(cè)試項(xiàng)目

簡(jiǎn)要思路:
在web.xml中配置好SpringMVC入口,讓SpringMVC中的DispatcherServlet攔截所有請(qǐng)求。
接著在index.jsp頁(yè)面中點(diǎn)開(kāi)超鏈接,發(fā)起一個(gè)welcome請(qǐng)求(程序員開(kāi)發(fā))。
DispatcherServlet攔截到這個(gè)welcome請(qǐng)求,通過(guò)匹配@RequestMapping發(fā)給相應(yīng)的處理器SpringMVCHandler(程序員開(kāi)發(fā))。SpringMVCHandler返回結(jié)果給DispatcherServlet。
DispatcherServlet讓視圖處理器(在spring.xml配置)處理后跳轉(zhuǎn)到success.jsp頁(yè)面。

【目錄】
一、前期準(zhǔn)備
二、配置SpringMVC

一、前期準(zhǔn)備

1.新建Web工程:HelloSpringMVC。

2.準(zhǔn)備好index.jsp和success.jsp。
在WebContent文件夾下面新建index.jsp,代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- 
       項(xiàng)目中可以同時(shí)兼容 SpringMVC和Servlet
       如果SpringMVC攔截welcome請(qǐng)求,SpringMVC就會(huì)找包含welcome的@RequestMapping映射進(jìn)行處理
       如果沒(méi)被SpringMVC攔截,就會(huì)交給普通Servlet處理,普通Servlet就會(huì)交給url-parttern或者/@WebServlet處理
    -->
    <a href="welcome">hello  SpringMVC</a>  
</body>
</html>

在WebContent文件夾下面新建文件夾views。在文件夾views內(nèi)success.jsp,代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
        success!
</body>
</html>

二、配置SpringMVC

1.導(dǎo)入常用jar包。

2.在src目錄下面新建配置文件springmvc.xml。
導(dǎo)入常用約束(參看Eclipse安裝STS插件使用更便捷的導(dǎo)入方式。)。

3.配置SpringMVC的入口,讓SpringMVC介入程序。
使用普通的Servlet運(yùn)行流程是這樣的:請(qǐng)求-<url-pattern>-交給對(duì)應(yīng)的Servlet去處理。而現(xiàn)在想用SpringMVC代替普通的Servlet,就需要在web.xml中配置一個(gè)SpringMVC自帶的Servlet(前端控制器DispatcherServlet),以通知程序。

通過(guò)以下配置,攔截所有請(qǐng)求,交給SpringMVC處理:

    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定springmvc配置文件的路徑。
            如果要省略,必須放到 默認(rèn)路徑:/WEB-INF/xx-servlet.xml(xx是Servlet的名字)
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- tomcat啟動(dòng)項(xiàng)目時(shí)第一位加載 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 指定哪些請(qǐng)求要進(jìn)入這個(gè)servlet -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <!-- /:攔截一切請(qǐng)求,注意不是 /*
            /user:攔截以
            /user開(kāi)頭的請(qǐng)求
            /user/abc.do :只攔截該請(qǐng)求 
            .action:只攔截 .action結(jié)尾的請(qǐng)求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

如果安裝了STS插件可以按“alt+/”快速生成DispatcherServlet的相關(guān)配置。

另外,在配置攔截器的時(shí)候,需要對(duì)<url-pattern>標(biāo)簽加深理解。例如:

 <url-pattern>/</url-pattern>

攔截的時(shí)候會(huì)匹配到/login這樣的路徑型的url,不會(huì)匹配到模式為*.jsp這樣的后綴型url
推薦博文:springmvc dispatcherServlet url-pattern的設(shè)置
springmvc.xml 中 設(shè)置/和/*區(qū)別

4.在src文件夾下面新建com.test.handler包,包內(nèi)新建SpringMVCHandler.java。

SpringMVCHandler.java代碼如下:

package com.test.handler;

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


//這里采用注解方式配置
@Controller
//@RequestMapping(value="handler")在類(lèi)上面可以添加映射,這樣攔截的地址就是handler/welcome
public class SpringMVCHandler {
        //通過(guò)@RequestMapping來(lái)指定控制器可以處理哪些請(qǐng)求
        @RequestMapping("welcome") //映射名welcome
        public String  welcome() {
            return "success" ;// 會(huì)通過(guò)springmvc配置文件視圖解析器加入前綴后綴 - views/success.jsp

        }
        
}

關(guān)于@RequestMapping更多的用法可以看這里超詳細(xì) Spring @RequestMapping 注解使用技巧。

5.在springmvc.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:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        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-4.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

    <!-- 掃描 有注解的包 -->
    <context:component-scan base-package="com.test.handler"></context:component-scan>
    
    <!--配置視圖解析器(InternalResourceViewResolver)  -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/"></property>
        <property name="suffix" value=".jsp"></property>
    
    </bean>

</beans>

PS:常見(jiàn)的視圖和解析器有:InternalResourceView、InternalResourceViewResolver。springMVC解析JSP時(shí)會(huì)默認(rèn)使用InternalResourceView, 如果發(fā)現(xiàn)JSP中包含了JSTL語(yǔ)言相關(guān)的內(nèi)容,則自動(dòng)轉(zhuǎn)為JSTL View(JSTL可以實(shí)現(xiàn)國(guó)際化操作,有興趣的同學(xué)看JSTL 對(duì)國(guó)際化支持總結(jié))。

進(jìn)行測(cè)試。

點(diǎn)開(kāi)超鏈接
頁(yè)面顯示成功跳轉(zhuǎn)

至此,完成第一個(gè)SpringMVC測(cè)試項(xiàng)目。

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

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

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