Spring mvc入门

一.spring-mvc

ssm(spring mvc) 作用就是你的controller(控制层,替换以前的servlet)
spring mvc是spring框架分解出来的一部分

spring mvc的执行过程:(1)首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;

(2)DispatcherServlet——>HandlerMapping,映射处理器将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;

(3)DispatcherServlet——>HandlerAdapter,处理器适配器将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;

(4)HandlerAdapter——>调用处理器相应功能处理方法,并返回一个ModelAndView对象(包含模型数据、逻辑视图名);

(5)ModelAndView对象(Model部分是业务对象返回的模型数据,View部分为逻辑视图名)——> ViewResolver, 视图解析器将把逻辑视图名解析为具体的View;

(6)View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构;
(7)返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

在这里插入图片描述
在这里插入图片描述
核心对象:第一个对象:DispatcherServlet(相当于一个中继站,不做处理在,只转发委托)
第二个:HandelerAdapter(处理器)
第三个:视图渲染器(viewResolver)

开发一个spring mvc
第一步:导入核心jar包
saopalliance-1.0.jar
aspectjweaver-1.6.9.jar
commons-logging-1.1.1.jar
spring-aop-3.2.13.RELEASE.jar
spring-beans-3.2.13.RELEASE.jar
spring-context-3.2.13.RELEASE.jar
spring-core-3.2.13.RELEASE.jar
spring-expression-3.2.13.RELEASE.jar
spring-web-3.2.13.RELEASE.jar
spring-webmvc-3.2.13.RELEASE.jar
核心xml文件 springmvc.xml配置:请求地址配置统一的前缀(目录的文件)和后缀(.jsp .html)

第二步:加载web.xml

        <!--扫描controller下所有的包-->
    <context:component-scan base-package="com.offcn.controller"/>
    <!--开启注解驱动-->
    <mvc:annotation-rdiven/>
       <!-- &lt;!&ndash;当你的请求地址是index.html的时候,就会到UserController这个类&ndash;&gt;
        <bean name="/index.html" class="com.offcn.UserController"></bean>-->
    <!--完成视图的对应-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 <!--开始配置前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--开始配置后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

核心xml文件在哪里加载 web.xml最先加载,所以核心配置文件要配置到web.xml

第三步:加载springmvc-servlet.xml


      <!--注解版:扫描controller下所有的包-->
    <context:component-scan base-package="com.offcn.controller"/>
    <!--开启注解驱动-->
    <mvc:annotation-rdiven/>
       <!-- &lt;!&ndash;非注解版:当你的请求地址是index.html的时候,就会到UserController这个类&ndash;&gt;
        <bean name="/index.html" class="com.offcn.UserController"></bean>-->
    <!--完成视图的对应-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 <!--开始配置前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--开始配置后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

第四步:

将jsp中的参数传到controller中

@RequestMapping("/UserController")*/
public class UserController implements Controller {
    /*这个方法,当你的客户端发送请求的url地址,跟这个类对应上 就会走这个方法(HanderMapping)*/
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
       //return就是你要跳转的页面,参数就是处理后要跳转的界面
        return new ModelAndView ("doIndex");
    }

//注解方式1:注解里的userName代表你参数的键,后面的userName是它的值  
  @RequestMapping("index")
    public  String index(@RequestParam("userName")String userName){
        System.out.println (userName);
        return "doIndex";
    }
//注解方式2:)value代表你网页拼接的键,required这个代表是否必须拼接这个参数,false代表可以拼接也可不拼接
@RequestMapping("index")
public  String index(@RequestParam(value = "userName",required = false)String userName){
    System.out.println (userName);
    return "doIndex";
}

//注解方式3:这种方式必须传参   method设置请求方式   报405错误是因为你的请求方式和你接受方式不统一
@RequestMapping(value = "index",params = {"userName"},method = RequestMethod.GET)
public  String index(String userName){
    System.out.println (userName);
    return "doIndex";
}
//注解方式4:@PathVariable这个注解就是匹配你url上的任何参数,注解上的pid跟你的参数一定要一样,这样才能拿到你具体的数据,这种方式只能传一个参数
 @RequestMapping(value = "/index/{userName}")
    public  String index(@PathVariable String userName){
        System.out.println (userName);
        return "doIndex";
    }

把controller的数据传到jsp页面中

 @RequestMapping("/toDoIndex")
    public ModelAndView toDoIndex(@RequestParam(value = "userName",required = false)String userName){
        //获取userName
        //构建ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //把值放到ModelAndView(以键值对的形式来传递)
        modelAndView.addObject("userName",userName);
        //把你跳转的界面放到modelAndView里
        modelAndView.setViewName("doIndex");
        return modelAndView;
    }


    //返回就是我们要跳转的地址,view  model,这个model不用实例化出来,直接传进去(用的最多)
    @RequestMapping("/toDoIndex")
    public  String toDoIndex(String userName,Model model){
        //model里面来添加数据,同样是以键值对来传递参数的
        model.addAttribute("userName",userName);
        return "doIndex";
    }


    //通过map把数据传过去
    @RequestMapping("/toDoIndex2")
    public String toDoIndex2(String userName, Map<String,Object> map){
        map.put("userName",userName);
        return "doIndex";
    }

    /*最终版*/
    @RequestMapping("/toUpdate")
    public String toUpdate(@RequestParam(value = "userName",required = false)String userName,
                           @RequestParam(value = "pwd",required = true)String pwd){
        return "doIndex";
    }

当web项目发布
web.xml(加载前段控制器,引入核心配置文件) 用户发送一个请求----->
(当请求有匹配的controller)—>到你的实体bean(controller)---->
返回一个modelAndView----->springmvc-servlet.xml---->视图渲染器----->网页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值