您当前的位置: 首页 > 

星夜孤帆

暂无认证

  • 5浏览

    0关注

    626博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Controller控制器实现的三种方式

星夜孤帆 发布时间:2021-06-13 14:29:07 ,浏览量:5

一、搭建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;
    }
}
    
    

2.2 实现HttpRequestHandler接口
public class ControllerDemo2 implements HttpRequestHandler {
    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("方式二: 实现Controller接口" );
    }
}
    
    

2.3 使用@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源码

关注
打赏
1636984416
查看更多评论
立即登录/注册

微信扫码登录

0.0775s