SpringMVC 简介 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
@WebServlet中配置”/ “,控制器拦截所有请求,但是不会拦截到.jsp 文件
@WebServlet中配置”/* “,控制器拦截所有请求,包括拦截到.jsp 文件
SpringMVC 中重要组件
DispatcherServlet:前端控制器,接收所有请求(如果配置/不包含jsp)
HandlerMapping:解析请求格式的.判断希望要执行哪个具体的方法.
HandlerAdapter:负责调用具体的方法.
ViewResovler:视图解析器,解析结果,准备跳转到具体的物理视图
SpringMVC运行原理图
1 2 3 4 5 6 7 8 9 10 11 12 13 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html > <head > <title > $Title$</title > </head > <body > <a href ="dispatcher?control=demo1" > 跳转1</a > <a href ="dispatcher?control=demo2" > 跳转2</a > <a href ="dispatcher?control=demo3" > 跳转3</a > <a href ="dispatcher?control=demo4" > 跳转4</a > </body > </html >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 package com.kylin.controller;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/") public class Dispatcher extends HttpServlet { @Override protected void service (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("执行控制器" ); String result = req.getParameter("control" ); System.out.println(result); if ("demo1" .equals(result)){ demo1(); } if ("demo2" .equals(result)){ demo2(); } if ("demo3" .equals(result)){ dem03(); } if ("demo4" .equals(result)){ dem04(); } } public void demo1 () { System.out.println("控制器执行demo1" ); } public void demo2 () { System.out.println("控制器执行demo2" ); } public void dem03 () { System.out.println("控制器执行demo3" ); } public void dem04 () { System.out.println("控制器执行demo4" ); } }
SpringMVC环境搭建-纯配置文件 导入jar
配置web.xml 首先在web.xml文件中配置SpringMVC的前端控制器 ,通过配置初始化参数contextConfigLocation 修改服务器加载SpringMVC的配置文件路径。默认加载路径是在WEB-INF下寻找配置文件加载。
配置springmvc.xml 在SpringMVC的配置文件中,配置HandlerMapping ,HandlerAdapter ,viewResolver
编写controller进行测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?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.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 >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <?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" > <bean id ="demo123" class ="com.kylin.controller.DemoController" > </bean > <bean class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" > <property name ="urlMap" > <map > <entry key ="demo" value-ref ="demo123" > </entry > </map > </property > </bean > <bean class ="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" > </bean > <bean id ="viewResolver" class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > </bean > </beans >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.kylin.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 DemoController implements Controller { @Override public ModelAndView handleRequest (HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { System.out.println("执行了springmvc的控制器" ); ModelAndView mav = new ModelAndView("/main.jsp" ); return mav; } }