一文完全講透Controller註解與RequestMapping註解,還不會的必定得看看。

頁面

在WEB-INF下新建文件夾page,而後新建一個頁面first.jsp。html

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

Spring核心配置文件

這裏配置一個頁面的公共先後綴便可,在控制類中只須要給定視圖名稱便可。前端

<?xml version="1.0" encoding="UTF8"?>
<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:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx  https://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/page/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

另外我的整理了一些資料,有須要的朋友能夠直接點擊領取。java

Java基礎知識大全web

22本Java架構師核心書籍面試

從0到1Java學習路線和資料spring

1000+道2021年最新面試題spring-mvc

Web.xml配置文件

這一段是固定的,不須要單獨註冊每個Servlet,只須要註冊一個前端控制器DispatcherServlet便可。架構

<?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_4_0.xsd"
         version="4.0">

    <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:SpringMVC-Servlet.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>
</web-app>

Controller

SpringMVC提供了不少種方式將一個類標記爲控制類;能夠經過實現Controller接口、也能夠經過Controller註解完成。mvc

Controller接口

編寫一個控制類而後實現Controller接口,重寫handleRequest方法實現會請求的接受處理、最後返回一個ModelAndView類。app

package com.controller;


import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InterfaceController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mv = new ModelAndView();
        /*
            1. 調用業務層
            2. 封裝數據、以及給出須要響應的視圖名
            3. 返回ModelAndView對象交給適配器
         */
        mv.addObject("message","實現Controller接口");        //數據
        mv.setViewName("first");            //響應的視圖名
        return mv;
    }
}

將控制類進行註冊,而且給定一個訪問路徑。最後訪問localhost:8080/項目名/inter/first;就能進行訪問了。

<bean id="/inter/first" class="com.controller.InterfaceController"/>

Controller註解

最開始瞭解這個註解是在Spring的時候,當時只是粗略的瞭解他能用來註冊bean,並不知道它能將一個類標記爲控制類的功能。Controller註解可以註冊bean是由於它被Component註解修飾了,Component註解具備註冊的bean能力。

package com.controller;

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

@Controller
public class AnnotationController {

    @RequestMapping("/Annota/first")            //註冊映射路徑
    private String firstServlet(Model model){
        model.addAttribute("message", "Controller註解");            //封裝數據
        return "first";            //給出視圖名
    }
}

使用Controller註解就能將類標記爲一個控制類、而且其中的每個方法均可以認爲是一個Servlet。相比實現Controller接口,註解版的功能更強大。當有多個Servlet時只須要寫多個方法!

SpringMVC核心配置文件中只須要擴展一點註解驅動、以及MVC註解支持便可。

<!-- 掃描包註解 -->
<context:component-scan base-package="com.controller"/>
<!-- mvc註解驅動 -->
<mvc:annotation-driven/>
<!-- 默認處理器、過濾器 -->
<mvc:default-servlet-handler/>

RequestMapping註解

RequestMapping註解至關於去註冊Servlet - 路徑的一個映射,表示訪問/xxx路徑會交給哪一個方法處理僅此而已;使用這個註解就能夠擺脫核心配置文件,每次配置文件中放入固定的模板代碼。控制類中使用Controller註解 + RequestMapping註解。

RequestMapping註解修飾類

當修飾類的時候表示旗下的每一個方法都須要加一個前綴路徑;

@Controller
@RequestMapping("/father")
public class RequestMappingController {

    @RequestMapping("/test1")
    private String test1(){
    
        return "test1";
    }
    
    @RequestMapping("/test2")
    private String test2(){
    
        return "test2";
    }
}

test1真實路徑: localhost:8080/項目名/father/test1
test2真實路徑: localhost:8080/項目名/father/test2

修飾方法

當修飾方法時是隻具體的路徑。

@Controller
public class RequestMappingController {

    @RequestMapping("/test1")
    private String test1(){
    
        return "test1";
    }
    
    @RequestMapping("/father/test2")
    private String test2(){
    
        return "test2";
    }
}

最後

感謝你能看到這裏,以爲文章對你有幫助的話記得點個贊,感謝你的支持!

相關文章
相關標籤/搜索