SpringMVC 入门案例

SpringMVC的组件

前端控制器(DispatcherServlet)

本质上是一个Servlet,相当于一个中转站,所有的访问都会走到这个Servlet中,再根据配置进行中转到相应的Handler(Controller)中进行处理,获取到数据和视图后,在使用相应视图做出响应。

处理器映射器(HandlerMapping)

本质上就是一段映射关系,将访问路径和对应的Handler(Controller)存储为映射关系,在需要时供前端控制器查阅。

处理器适配器(HandlerAdapter)

本质上是一个适配器,可以根据要求找到对应的Handler(Controller)来运行。前端控制器通过处理器映射器找到对应的Handler信息之后,将请求响应和对应的Handler信息交由处理器适配器处理,处理器适配器找到真正handler执行后,将结果即model和view返回给前端控制器

视图解析器(ViewResolver)

本质上也是一种映射关系,可以将视图名称映射到真正的视图地址。前端控制器调用处理器适配完成后得到model和view,将view信息传给视图解析器得到真正的view。

图解

SpringMVC入门案例

创建web项目,并导入SpringMVC相关开发包

 

配置前段控制器

本质上是一个servlet,在当前web项目中配置该servlet

  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>

生成SpringMVC的核心配置文件

SpringMVC会自动去寻找 [前端控制前ServletName]-servlet.xml 作为当前SpringMVC的核心配置文件。

创建这个文件,这个文件本身其实就是Spring的配置文件,所以导入Spring相关的约束信息,包括 beans、context、mvc

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    
            
</beans>

创建控制器,编写代码

想要开发一个控制器,写一个类实现Controller接口,在其中的handlerRequest中编写代码处理请求,并将处理好的数据和目标视图封装到ModelAndView中返回

package cn.tedu.springmvc.controller;

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

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

public class Hello implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        // 1.创建 modelandview 对象
        ModelAndView mav = new ModelAndView();
        // 2.封装数据
        mav.addObject("msg1","hello,world");
        mav.addObject("msg2", "hello,springmvc");
        // 3.封装视图
        mav.setViewName("hello");
        //4.返回ModelAndVeiw
        return mav;
    }
}

配置处理器映射器中的路径和处理器的映射关系

<!-- 配置处理器映射器的路径和控制器的映射关系  -->
<bean name="/hello.action" class="cn.tedu.springmvc.controller.Hello"></bean>

配置视图解析器

 通过在视图名称中加入前缀(prefix)和后缀(suffix),得到真正的视图地址。

    <!-- 配置视图解析器中 视图名称 和 真正视图页面的映射关系 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

开发视图

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
    </head>
    <body>
        welcome!
        <hr>
        <p>${msg1}</p>
        <p>${msg2}</p>
        <%=new Date() %>
    </body>
</html>

发布应用,通过浏览器访问

 

源码

 

源码

package cn.tedu.springmvc.controller;

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

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

public class Hello implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        // 1.创建 modelandview 对象
        ModelAndView mav = new ModelAndView();
        // 2.封装数据
        mav.addObject("msg1","hello,world");
        mav.addObject("msg2", "hello,springmvc");
        // 3.封装视图
        mav.setViewName("hello");
        //4.返回ModelAndVeiw
        return mav;
    }
}
Hello.java
<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    
    <!-- 配置处理器映射器的路径和控制器的映射关系  -->
    <bean name="/hello.action" class="cn.tedu.springmvc.controller.Hello"></bean>
    
    <!-- 配置视图解析器中 视图名称 和 真正视图页面的映射关系 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>    
</beans>
springmvc-servlet.xml
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
    </head>
    <body>
        welcome!
        <hr>
        <p>${msg1}</p>
        <p>${msg2}</p>
        <%=new Date() %>
    </body>
</html>
hello.jsp
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  <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>
  </servlet>
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
</web-app>
web.xml

猜你喜欢

转载自www.cnblogs.com/chuijingjing/p/9824393.html