一、介绍
SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的。 理解是servlet的一个升级。
SpringMVC就是一个Spring。 Spring是容器,ioc能够管理对象,使用, @Component, @Repository, @Service, @Controller
SpringMVC能够创建对象, 放入到容器中(SpringMVC容器), springmvc容器中放的是控制器对象,
web开发底层是servlet, springmvc中有一个对象是Servlet :DispatherServlet(中央调度器)DispatherServlet: 负责接收用户的所有请求, 用户把请求给了DispatherServlet, 之后DispatherServlet把请求转发给我们的Controller对象, 最后是Controller对象处理请求。
springmvc的第一个项目
需求:用户在页面发起请求,请求交给springmvc的控制器对象,并显示请求的处理结果
步骤:
1.新建web maven工程
2.加入依赖
3.重点;在web.xml中注册springmvc框架的核心对象DispatcherServlet
1)DispatcherServlet叫做中央调度器,是一个servlet,他的父类式httpservlet
2)DispatcherServlet也叫做前端控制器,
3)负责接受用户提交的请求,调用其他的控制器对象,并把请求的处理结果显示给用户
<!---->
<!--声明,注解springmvc的核心对象DispatcherServlet
需要在tomcat服务器启动后,创建DispatcherServlet对象的实例
为什么要创建DispatcherServlet实例
因为DispatcherServlet在他的创建过程中,会同时创建spingmvc容器对象
读取springmvc的配置文件,把这个配置文件都创建好,当用户发起请求时就可以
直接使用对象了
servlet的初始化会执行init()方法,DispatcherServlet在init()中
{
//创建容器读取配置文件
webapplicationcontext ctx=new classwebapplicationcontext("spingmvc.vml");
把容器放入到servletcontext中
getservletcontext().setAttribute(key,ctx);
}
-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--自定义springmvc读取的配置文件的位置-->
<init-param>
<!--springmvc的配置文件的位置的属性-->
<param-name>contextConfigLocation</param-name>
<!--自定义文件的位置-->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--在tomcat启动后,创建servlet
load-on-startup:表示tomcat在启动后创建对象的顺序,他的值是一个整数
数值越小,tomcat创建对象时间越早。大于等于0
启动 tomcat报错,读取文件 /WEB-INF/springmvc-servlet.xml
springmvc创建容器对象时,读取的读取的配置文件默认的是/WEB-INF/springmvc-servlet.xml
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
使用会框架时,url-pattern可以使用两种值
1)只有扩展名:语法,*.xxx,xxx是自定义的扩展名,常用方式*.do
2)使用斜杠"/"
-->
<url-pattern>*.do</url-pattern>
<url-pattern>/</url-pattern>
</servlet-mapping>
4.创建一个发起请求的页面:index.jsp
5.创建控制器类
1)在类的上面加入@Controller注解,创建对象,并入到springmvc容器中
2)在类中的方法上面加入@RequestMapper注解
/**
* 处理用户提交的请求,springmvc是使用方法来处理的
* 方法是自定义的,它可以有多种反回值,多种参数,方法名自定义
*/
/***
* 用dosome方法处理some.do请求
* @RequestMapping请求映射:作用是把一个请求和一个方法绑定在一起
* 一个请求指定一个方法处理
* 属性:1.value:是一个string,表示请求的url地址,是唯一的
* 位置:1.在方法上面 2.在类的上面
* 使用RequestMapping修饰的方法叫做处理器方法或控制器方法
* 使用RequestMapping修饰的方法可以处理请求
*
* 返回值;ModelAndView 表示本次请求的处理结果
* Model:数据,请求处理完成后,要显示给用户的数据
* AndView:试图,不如jsp
*/
@RequestMapping(value = "/some.do")
public ModelAndView doSome(){//doget()---service求处理
//处理some.do请求.相当于处理完成了
ModelAndView mv = new ModelAndView();
//添加数据,框架在请求的最后把数据放入request作用域
//request.setAttribute("msg","欢迎使用")
mv.addObject("msg","欢迎使用");
//指定视图。指定视图的完整路径
mv.setViewName("/show");
return mv;
}
6.创建一个作为结果的jsp,显示请求的处理结果
7.创建springmvc的配置文件(spring的配置文件一样)
1)声明组件扫描器,指定@Controller注解所在的包名
2)声明试图解析器,帮助处理试图
<!--声明组件扫描器-->
<context:component-scan base-package="com.bjpowernode.controller"/>
<!--声明 springmvc框架中的视图解析器, 帮助开发人员设置视图文件的路径-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀:视图文件的路径-->
<property name="prefix" value="/WEB-INF/view/"></property>
<!--后缀:视图文件的扩展名-->
<property name="suffix" value=".jsp"></property>
</bean>