天天看點

SpringMVC學習筆記之---深入使用

SpringMVC深入使用

(一)基于XML配置的使用

(1)配置

1.SpringMVC基礎配置

2.XML配置Controller,HandlerMapping元件映射

3.XML配置ViewResolver元件映射

(2)步驟

1.在pom.xml中導入jar包

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.3.RELEASE</version>
</dependency>
  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
  </dependency>      

2.在web.xml中配置前置控制器

<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.xml</param-value>

  </init-param>

</servlet>

<servlet-mapping>

  <servlet-name>SpringMVC</servlet-name>

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

</servlet-mapping>      

3.建立一個MyHandler類,并繼承Controller

package handle;



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 MyHandle implements Controller {

    @Override

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        //裝載模型資料和邏輯視圖

        ModelAndView modelAndView=new ModelAndView();

        //添加模型資料

        modelAndView.addObject("name","lili");

        //添加邏輯視圖

        modelAndView.setViewName("index");

        return modelAndView;

    }

}      

4.建立springmvc.xml,并在springmvc中配置HandlerMapping,Handler和視圖解析器

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--配置HandlerMapping,将url請求映射到Handler-->

    <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <!--配置Mapping-->

        <property name="mappings">

            <props>

                <!--配置test請求對應的Handler-->

                <prop key="/test">testHandler</prop>

            </props>

        </property>

    </bean>



    <!--配置Handler-->

    <bean id="testHandler" class="handle.MyHandle"></bean>



    <!--配置視圖解析器--><!--将邏輯視圖解析成實體視圖-->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <!--配置字首-->

        <property name="prefix" value="/"></property>

        <!--配置字尾-->

        <property name="suffix" value=".jsp"></property>

    </bean>

</beans>      

5.在index.jsp頁面上顯示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@page isELIgnored="false" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

${name}

</body>

</html>      
(二)基于注解方式的使用

(1)配置

1.SpringMVC基礎配置

2. Controller,HandlerMapping通過注解進行映射

3.XML配置ViewResolver元件映射

(2)步驟

1.在pom.xml中導入jar包

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.3.RELEASE</version>
</dependency>
  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
  </dependency>      

2.在web.xml中配置前置控制器

<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.xml</param-value>

  </init-param>

</servlet>

<servlet-mapping>

  <servlet-name>SpringMVC</servlet-name>

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

</servlet-mapping>      

3.建立一個AnnotationHandler類

package handle;



import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

import org.springframework.web.servlet.ModelAndView;



import java.util.Map;



//讓容器知道這個類是以控制器存在的

@Controller

public class AnnotationHandler {

    /**

     * 業務方法1:ModelAndView完成資料的傳遞,視圖的解析

     */

    @RequestMapping("/ModelAndViewTest")

    public ModelAndView ModelAndViewTest(){

        //建立ModelAndView對象

        ModelAndView modelAndView=new ModelAndView();

        //填充模型資料

        modelAndView.addObject("name","Tom");

        //設定邏輯視圖

        modelAndView.setViewName("index");

        return modelAndView;

    }

    /**

     * 業務方法2:Model傳值,String進行視圖解析

     */

    @RequestMapping("/ModelTest")

    public String ModelTest(Model model){

        //填充模型資料

        model.addAttribute("name","Lulu");

        //設定邏輯視圖

        return "index";

    }

    /**

     * 業務方法3:Map傳值,String進行視圖解析

     */

    @RequestMapping("/MapTest")

    public String MapTest(Map<String,String> map){

        //填充模型資料

        map.put("name","Lisa");

        //設定邏輯視圖

        return "index";

    }

}      

4.建立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"

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

<!--将AnnotationHandler自動掃描到IOC容器中-->

    <context:component-scan base-package="handle"></context:component-scan>

    <!--配置視圖解析器--><!--将邏輯視圖解析成實體視圖-->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <!--配置字首-->

        <property name="prefix" value="/"></property>

        <!--配置字尾-->

        <property name="suffix" value=".jsp"></property>

    </bean>

</beans>      

5.在index.jsp頁面上顯示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@page isELIgnored="false" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

${name}

</body>

</html>      

繼續閱讀