一、搭建Web环境
搭建Servlet环境、搭建Spring MVC环境
具体搭建过程,参加上述过程,先Servlet后MVC
1.1 pom
studyParent
org.example
1.0-SNAPSHOT
4.0.0
Spring-MVC-SourceCode
junit
junit
4.12
org.springframework
spring-webmvc
5.1.9.RELEASE
javax.servlet
javax.servlet-api
3.1.0
javax.servlet.jsp
jsp-api
2.2
javax.servlet
jstl
1.2
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false
1.2 web.xml
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
1
SpringMVC
/
1.3 springmvc-servlet.xml
在resources目录下,添加springmvc-servlet.xml配置文件,配置的形式与Spring容器配置基本类似,
为了支持基于注解的IOC,设置了自动扫描包的功能,具体配置信息如下:
1.4 hello.jsp
Title
Controller控制器实现的三种方式: ${msg}
二、实现Controller控制器的三种方式
2.1 实现Controller的接口
public class ControllerDemo1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("方式一: 实现Controller接口" );
// 使用ModelAndView去响应
// 模型数据和视图对象
ModelAndView modelAndView = new ModelAndView();
// 添加模型数据
modelAndView.addObject("msg", "方式一: 实现Controller接口");
// 设置视图路径,转发
modelAndView.setViewName("/hello");
return modelAndView;
}
}
public class ControllerDemo2 implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("方式二: 实现Controller接口" );
}
}
@Controller
public class ControllerDemo3 {
/**
* Spring MVC 找Controller流程:
* 1.扫描整个项目,Spring已经做了,定义一个Map集合
* 2.拿到所有加了@Controller注解的类
* 3.遍历类里面所有的方法对象
* 4.判断方法是否加了@RequestMapping注解
* 5.把@RequestMapping注解的value,作为Map集合的key给put进去,把方法对象作为value放入Map集合
* 6.根据用户发送的请求,拿到请求中的URI url:http://localhost:8080/demo3 uri:/demo3
* 7.使用请求的uri作为Map的key 去map里面get 看看是否有返回值
*/
//真实访问地址: 项目名/demo3
@RequestMapping("/demo3")
public String sayHello(Model model) {
//向模型中添加属性msg与值,可以在jsp页面中取出并渲染
model.addAttribute("msg", "方式三: @Controller注解");
//jsp名字,/WEB-INF/jsp/hello.jsp
return "hello";
}
}
参考博客、Gitee源码