chapter01-hello-springmvc

chapter01-hello-springmvc,第1张

chapter01-hello-springmvc

目录

实现步骤

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}

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5437588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存