目录
实现步骤
1.添加maven依赖
2.在web.xml 中配置中央调度器(DispatcherServlet)
3.springmvc.xml文件
4.模拟用户发起一个请求
5.创建MyController
6.结果页面
实现步骤
ch01-hello-springmvc:第一个springmvc项目。
需求:用户在页面发起一个请求,请求交给springmvc的控制器对象,并显示请求的数据结果(在结果页面显示一个欢迎语句)
实现步骤:
1. 新建web maven 工程
2. 加入依赖
spring-webmvc依赖,间接把spring的依赖都加入到项目
jsp,servlet依赖
3. 重点:在web.xml文件中,注册springmvc框架的核心对象DispatcherServlet
1)DispatcherServlet叫做中央调度器,是一个servlet,它的父类是继承HttpServlet
2)DispatcherServlet页面叫做前段控制器(front controller)
3)DispatcherServlet负责接受用户的请求,调用其他的控制器对象,
并把请求的处理结果显示给用户
4. 创建一个发起请求的页面 index.jsp
5. 创建控制器(处理器)对象
1)在类的上面加入@Controller注解,创建对象,并放入到springmvc容器中
2)在类中的方法上面加入@RequestMapper注解。
6. 创建一个作为结果页面的jsp,显示请求的处理结果
7. 创建一个springmvc的配置文件(spring的配置文件一样)
1)声明组件扫描器,指定@Controller注解所在的额包名
2)声明视图解析器。帮助我们处理视图的。
1.添加maven依赖
4.0.0
edu.tjdz
ch01-hello-springmvc
1.0-SNAPSHOT
war
UTF-8
1.8
1.8
junit
junit
4.11
test
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-webmvc
5.2.5.RELEASE
2.在web.xml 中配置中央调度器(DispatcherServlet)
web.xml中包含了中央调度器中包含有springmvc.xml的配置文件,通过springmvc.xml中的包扫描机制创建@Controller注解的类,通过@Controller注解和@RequestMapping(value = "/类路径开始表示请求的URL"),然后通过index.jsp发起请求,根据请求的action然后执行对应的public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
mv.addObject(key,value);
mv.setViewName("/show");
return mv;
}
myweb
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
myweb
*.do
3.springmvc.xml文件
为了防止用户按照规定访问,我们会将信息放入/WEB-INF目录之下来防止资源的正常显示,WEB-INF目录之下的资源是对用户不公开的,所以我们在使用的使用都要执行相同的指定文件位置的所在地,所以springmvc框架中的视图解析器InternalResourceViewResolver,可以用构造注入对此类中的文件路径的前缀(prefix)和后缀(suffix)进行指定目录的结构,代码如下,组件扫描器扫描包后则会根据注解执行相应的操作。
4.模拟用户发起一个请求
用户请求后----->通过中央调度器的处理,(截取请求的路径some.do-->然后分配给相应的servlet--->在这个过程中,因为在web.xml文件中还指定了springmvc.xml文件的位置,--->所以在这个过程中还会解析springmvc.xml,然后再springmvc.xml中有个包扫描机制,会对扫描包中的类根据注解执行相应的对象创建----->通过注解@RequestMapping(value = "/路径")找到对应的请求路径,执行指定的方法,)----------->最后返回模块的结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
第一个springmvc的项目
发起some.do请求
发起some.do请求
5.创建MyController
package edu.tjdz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
@RequestMapping(value = {"/some.do","first.do"})
public ModelAndView doSome(){ // doGet()------>service请求处理
//处理some.do的请求了。相当于service调用处理完成了
ModelAndView mv = new ModelAndView();
//添加数据,框架在请求的最后把数据放入到了request作用域
//request.setAttribute("msg","欢迎使用springmvc做web开发");
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doSome()方法");
//指定视图,指定视图的完整路径
//框架对视图执行forward操作,request.getRequestDispatcher("/show.jsp").forward(..);
//mv.setViewName("/show.jsp");
//mv.setViewName("/WEB-INF/view/show.jsp");
//mv.setViewName("/WEB-INF/view/other.jsp");
//当配置了视图解析器后,可以使用逻辑名称(文件名),指定视图
//框架会使用视图解析器的前缀 + 逻辑名称 + 后缀 组成完整路径,这就是字符连接操作
// /WEB-INF/view + show +.jsp
mv.setViewName("show");
//返回mv
return mv;
}
@RequestMapping(value = {"/other.do","second.do"})
public ModelAndView doOther(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doOther()方法");
mv.setViewName("other");
//返回mv
return mv;
}
}
6.结果页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Other
/WEB-INF/view/other.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
/WEB-INF/view/show.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
web.xml中包含了中央调度器中包含有springmvc.xml的配置文件,通过springmvc.xml中的包扫描机制创建@Controller注解的类,通过@Controller注解和@RequestMapping(value = "/类路径开始表示请求的URL"),然后通过index.jsp发起请求,根据请求的action然后执行对应的public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
mv.addObject(key,value);
mv.setViewName("/show");
return mv;
}
myweb org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml 1 myweb *.do
3.springmvc.xml文件
为了防止用户按照规定访问,我们会将信息放入/WEB-INF目录之下来防止资源的正常显示,WEB-INF目录之下的资源是对用户不公开的,所以我们在使用的使用都要执行相同的指定文件位置的所在地,所以springmvc框架中的视图解析器InternalResourceViewResolver,可以用构造注入对此类中的文件路径的前缀(prefix)和后缀(suffix)进行指定目录的结构,代码如下,组件扫描器扫描包后则会根据注解执行相应的操作。
4.模拟用户发起一个请求
用户请求后----->通过中央调度器的处理,(截取请求的路径some.do-->然后分配给相应的servlet--->在这个过程中,因为在web.xml文件中还指定了springmvc.xml文件的位置,--->所以在这个过程中还会解析springmvc.xml,然后再springmvc.xml中有个包扫描机制,会对扫描包中的类根据注解执行相应的对象创建----->通过注解@RequestMapping(value = "/路径")找到对应的请求路径,执行指定的方法,)----------->最后返回模块的结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
第一个springmvc的项目
发起some.do请求
发起some.do请求
5.创建MyController
package edu.tjdz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
@RequestMapping(value = {"/some.do","first.do"})
public ModelAndView doSome(){ // doGet()------>service请求处理
//处理some.do的请求了。相当于service调用处理完成了
ModelAndView mv = new ModelAndView();
//添加数据,框架在请求的最后把数据放入到了request作用域
//request.setAttribute("msg","欢迎使用springmvc做web开发");
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doSome()方法");
//指定视图,指定视图的完整路径
//框架对视图执行forward操作,request.getRequestDispatcher("/show.jsp").forward(..);
//mv.setViewName("/show.jsp");
//mv.setViewName("/WEB-INF/view/show.jsp");
//mv.setViewName("/WEB-INF/view/other.jsp");
//当配置了视图解析器后,可以使用逻辑名称(文件名),指定视图
//框架会使用视图解析器的前缀 + 逻辑名称 + 后缀 组成完整路径,这就是字符连接操作
// /WEB-INF/view + show +.jsp
mv.setViewName("show");
//返回mv
return mv;
}
@RequestMapping(value = {"/other.do","second.do"})
public ModelAndView doOther(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doOther()方法");
mv.setViewName("other");
//返回mv
return mv;
}
}
6.结果页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Other
/WEB-INF/view/other.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
/WEB-INF/view/show.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
为了防止用户按照规定访问,我们会将信息放入/WEB-INF目录之下来防止资源的正常显示,WEB-INF目录之下的资源是对用户不公开的,所以我们在使用的使用都要执行相同的指定文件位置的所在地,所以springmvc框架中的视图解析器InternalResourceViewResolver,可以用构造注入对此类中的文件路径的前缀(prefix)和后缀(suffix)进行指定目录的结构,代码如下,组件扫描器扫描包后则会根据注解执行相应的操作。
用户请求后----->通过中央调度器的处理,(截取请求的路径some.do-->然后分配给相应的servlet--->在这个过程中,因为在web.xml文件中还指定了springmvc.xml文件的位置,--->所以在这个过程中还会解析springmvc.xml,然后再springmvc.xml中有个包扫描机制,会对扫描包中的类根据注解执行相应的对象创建----->通过注解@RequestMapping(value = "/路径")找到对应的请求路径,执行指定的方法,)----------->最后返回模块的结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
第一个springmvc的项目
发起some.do请求
发起some.do请求
5.创建MyController
package edu.tjdz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
@RequestMapping(value = {"/some.do","first.do"})
public ModelAndView doSome(){ // doGet()------>service请求处理
//处理some.do的请求了。相当于service调用处理完成了
ModelAndView mv = new ModelAndView();
//添加数据,框架在请求的最后把数据放入到了request作用域
//request.setAttribute("msg","欢迎使用springmvc做web开发");
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doSome()方法");
//指定视图,指定视图的完整路径
//框架对视图执行forward操作,request.getRequestDispatcher("/show.jsp").forward(..);
//mv.setViewName("/show.jsp");
//mv.setViewName("/WEB-INF/view/show.jsp");
//mv.setViewName("/WEB-INF/view/other.jsp");
//当配置了视图解析器后,可以使用逻辑名称(文件名),指定视图
//框架会使用视图解析器的前缀 + 逻辑名称 + 后缀 组成完整路径,这就是字符连接操作
// /WEB-INF/view + show +.jsp
mv.setViewName("show");
//返回mv
return mv;
}
@RequestMapping(value = {"/other.do","second.do"})
public ModelAndView doOther(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","欢迎使用springmvc做web开发");
mv.addObject("fun","执行的是doOther()方法");
mv.setViewName("other");
//返回mv
return mv;
}
}
6.结果页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Other
/WEB-INF/view/other.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
/WEB-INF/view/show.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Other
/WEB-INF/view/other.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
/WEB-INF/view/show.jsp 从request作用域获取数据
msg数据:${msg}
fun数据:${fun}



