需求:
用户在页面发起一个请求, 请求交给springmvc的控制器对象,并显示请求的处理结果(在结果页面显示一个欢迎语句)。
实现步骤:
-
新建web maven工程
-
加入依赖
spring-webmvc依赖,间接把spring的依赖都加入到项目
jsp,servlet依赖 -
重点: 在web.xml中注册springmvc框架的核心对象DispatcherServlet
1)DispatcherServlet叫做中央调度器, 是一个servlet, 它的父类是继承HttpServlet
2)DispatcherServlet页叫做前端控制器(front controller)
3)DispatcherServlet负责接收用户提交的请求, 调用其它的控制器对象,并把请求的处理结果显示给用户 -
创建一个发起请求的页面 index.jsp
-
创建控制器(处理器)类
1)在类的上面加入@Controller注解,创建对象,并放入到springmvc容器中
2)在类中的方法上面加入@RequestMapping注解。 -
创建一个作为结果的jsp,显示请求的处理结果。
-
创建springmvc的配置文件(spring的配置文件一样)
1)声明组件扫描器, 指定@Controller注解所在的包名
2)声明视图解析器。帮助处理视图的。
**
* @Controller:创建处理器对象,对象放在springmvc容器中
* 位置:在类的上面
* 类似spring中的@service @Component一样,都是创建对象的
* 能处理请求的都是控制器(处理器):MyController能处理请求,叫做back controller
*/
@Controller
public class MyController {
/*
处理用户提交的请求,springmvc中是使用方法来处理的
方式是自定义的,可以有多种返回值,多种参数,方法名称自定义
*/
/**
* 准备使用doSome方法处理some.do请求
* @RequestMapping:请求映射,作用是把一个请求地址和一个方法绑定在一起。
* 一个请求指定一个方法处理
* 属性: 1. value是一个String,表示请求的uri地址的.
* value的值必须是唯一的,不能是重复的。
* 在使用时,推荐地址以"/"
* 位置: 1. 在方法的上面,常用的
* 2. 在类的上面
* 说明:使用RequestMapping修饰的方法叫做处理器方法或者控制器方法
* 使用@RequestMapping修饰的方法可以处理请求的,类似Servlet中的doGet,doPost
*
* 返回值:ModelAndView 表示本次请求的处理结果
* Model:数据,请求处理完成后,要显示给用户的数据
* View: 视图,比如jsp等等
*/
@RequestMapping(value = {"/some.do","/first.do"})
public ModelAndView doSome(){
//处理some.do请求,想当于Service调用处理完成了。
ModelAndView mv= new ModelAndView();
//添加数据
mv.addObject("msg","欢迎使用springmvc做开发");
mv.addObject("fun","执行的是doSome方法");
//指定视图,指定视图的完整路径
//框架对视图执行的forword操作,request.getRequestDispatcher("/show.jsp).forward(...)
//mv.setViewName("/WEB-INF/view/show.jsp");
//当配置了视图解析器,可以使用逻辑名称(文件名),指定视图
//框架会使用视图解析器的前缀+逻辑名称+后缀 组成完成路径,这里就是字符连接操作
///WEB-INF/view/+show+.jsp
mv.setViewName("show");
//返回mv
return mv;
}
}