文章目录:
2.3 在web.xml中声明DispatcherServlet对象
2.5 创建一个普通的类,作为控制器使用,代替之前的servlet
1.SpringMVC框架的基本说明
SpringMVC是基于Spring的,是Spring中的一个模块,专门用来做web开发使用的。
SpringMVC 也叫 Spring web mvc。是Spring 框架的一部分,是在Spring3.0后发布的。基于 MVC 架构,功能分工明确、解耦合。
SpringMVC也是一个容器,使用IoC核心技术,管理界面层中的控制器对象。SpringMVC的底层就是servlet,以servlet为核心,接收请求、处理请求,显示处理结果给用户。在此之前这个功能是由Servlet来实现的,现在使用SpringMVC来代替Servlet行驶控制器的角色和功能。
其核心Servlet是:DispatcherServlet
三层架构:用户发起请求--------SpringMVC--------Spring--------MyBatis--------MySQL
2.第一个注解的SpringMVC程序
2.1 IDEA中使用maven创建一个web项目
2.2 在pom.xml中加入相关依赖
<!-- springmvc依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency>
<!-- servlet依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>
<!-- jsp依赖 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency>
2.3 在web.xml中声明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"> <!-- 声明springmvc的核心对象 --> <servlet> <servlet-name>DispatcherServlet</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> <!-- tomcat服务器创建对象的顺序,数值(大于等于0)越小,创建对象的时间就越早 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <!-- 把一些请求交给指定的servlet处理 1.使用扩展名方式,格式:*.xxx, xxx是自定义的扩展名 例如:*.do *.action *.mvc , 不能使用 *.jsp!!! 2.使用斜杠 "/" --> <!-- 意思是将 *.do 的请求交给 DispatcherServlet 处理 --> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
<%@ page contentType="text/html;charset=utf-8" language="java" %> <html> <head> <title>第一个springmvc</title> </head> <body> <a href="some.do">发起some.do的请求</a> </body> </html>
2.5 创建一个普通的类,作为控制器使用,代替之前的servlet
package com.songzihao.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /** * @Controller: 创建控制器对象 * 控制器: 叫作后端控制器,自定义的类处理请求的 * 位置: 在类的上面,表示创建此类的对象,对象放在springmvc容器中 */ @Controller public class MyController { /** * 定义方法,处理请求.相当于之前servlet中的doGet() * springmvc框架,使用控制器类中的方法,处理请求 * 1.方法的形参: 表示请求中的参数 * 2.方法的返回值: 表示本次请求的处理结果 * * @RequestMapping: 请求映射 * 属性: value,请求中的uri地址,唯一值,以"/"开头 * 位置: 1) 在方法的上面(必须) 2) 在类定义的上面(可选) * 作用: 把指定的请求交给指定的方法处理 */ @RequestMapping(value = "/some.do") public ModelAndView doSome() { //使用这个方法处理请求,能处理请求的方法叫作控制器方法 ModelAndView mv=new ModelAndView(); //添加数据 mv.addObject("msg","处理了some.do的请求"); mv.addObject("fun","执行了doSome方法"); //指定视图 mv.setViewName("/WEB-INF/view/show.jsp"); //返回结果 return mv; } /** * 当框架调用完doSome()方法后,得到返回值ModelAndView对象mv,处理mv对象里的数据model和视图view * mv.addObject("msg","处理了some.do的请求"); 相当于 对数据执行 request.setAttribute("msg","处理了some.do的请求"); * mv.setViewName("/show.jsp"); 相当于 对视图执行 request.getRequestDispatcher("/show.jsp").forward(request,response); */ }
<%@ page contentType="text/html;charset=utf-8" language="java" %> <html> <head> <title>show</title> </head> <body> /WEB-INF/view/show.jsp,显示request作用域中的数据<br/> <h3>msg数据:<%=request.getAttribute("msg")%></h3> <h3>fun数据:${fun}</h3> </body> </html>
<?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 https://www.springframework.org/schema/context/spring-context.xsd"> <!-- springmvc的配置文件 --> <!-- 声明组件扫描器 --> <context:component-scan base-package="com.songzihao.controller" /> </beans>
2.8 给web项目配置并启动tomcat,测试!!!
3.项目的整体结构和步骤总结
springmvc接收请求,显示请求的处理结果
servlet的实现方式:jsp发起请求-----servlet接收请求------jsp显示处理结果
步骤:
1. 新建web项目
2. 加入web相关的依赖(spring-webmvc依赖、servlet依赖、jsp依赖)
3. 声明springmvc核心对象DispatcherServlet
1) DispatcherServlet是一个Servlet对象
2) DispatcherServlet叫作前端控制器(front controller)
3) DispatcherServlet的作用:在servlet的init()方法中,创建springmvc容器对象;作为servlet接收请求
4.创建一个jsp(index.jsp),发起请求
5.创建一个普通的类,作为控制器使用,代替之前的servlet
1) 在类的上面加入注解 @Controller
2) 在类中定义方法,方法的上面加入注解 @RequestMapping。表示此方法是处理请求的,相当于servlet中的doGet、doPost
6.创建显示处理结果的jsp(show.jsp)
7.创建springmvc的配置文件
1) 声明组件扫描器(面对注解)
2) 声明视图解析器(可选)
8.使用逻辑视图名称(对应步骤中的7.2)
4.使用SpringMVC框架处理web请求的顺序