博客
关于我
Spring MVC详解
阅读量:378 次
发布时间:2019-03-05

本文共 5637 字,大约阅读时间需要 18 分钟。

Spring MVC入门

Spring MVC简介

1.    Spring MVC 这个框架应用于web开发的web层,接受请求和响应请求。

2.    它是Spring框架的一部分。

3. 

Spring MVC框架架构

Spring MVC快速搭建

1、导包

Spring所有包+spring-web    spring  -springMVC

2、书写核心配置文件

SpringMVC.xml     or   spring-mvc.xml    or      spring-servlet.xml。

名字无关紧要,位置建议放在src目录下。

内容:建议开启注解模式,使用注解模式来配置controller

<?xml version="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
        <!--开启注解模式-->
        <context:component-scanbase-package="cn.hd.controller"></context:component-scan>
</beans>

3、配置web.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
   
    <servlet>
        <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:SpringMVC.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
        <!--
        /*  能够拦截所有的资源,包括jsphtml js css等(不用)
        *.action or *.do  后缀名(可以用)
        /   目录拦截    会放行静态资源(可以用)
        -->
       <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

配置spring MVC的前端控制器       DispacherServlet

4、书写Controller
      普通的类,使用spring controller注解。配置访问路径的注解。

package cn.hd.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Hello {
    @RequestMapping(value ="/hello.action")
    public void hello(){
        System.out.println("hellospringmvc.");
    }
}

Spring MVC提供了一个视图导航的类,这个类可以帮助我们进行页面的跳转。(ModelAndView)

package cn.hd.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Hello {
    @RequestMapping(value ="/hello.action")
    /*ModelAndView:帮助我们进行页面的跳转*/
    public ModelAndView hello(){
        System.out.println("hellospringmvc.");
        ModelAndView mav = newModelAndView();
       mav.setViewName("/index.jsp");
        return mav;
    }
}

Spring MVC的访问流程

1.    请求进入到web.xml;web.xml配置了spring MVC的前端控制器。进入到前端控制器。(spring框架的核心)

2.    HandlerMapping(处理器映射器)

用户查询所有的Controller(Handler),返回一个Handler对象

3.    老板拿到了handler,指派这个处理器适配器(HandlerAdapter)去执行Handler

4.    Handler返回一个ModelAndView视图导航给处理器,返回给老板。

5.    老板拿到了ModelAndView指派ViewResolver(视图解析器)(.jsp)解析成html,返回给老板,老板将html返回给请求。

Spring由什么构成?

核心控制器

3大组件

Handler(controller)     view(.jsp)

参数绑定

1、         原始的request、reponse、session

@RequestMapping("/oldParam")

public void oldParam(HttpServletRequestrequest, HttpServletResponse response, HttpSession session) throws IOException{

    String id = request.getParameter("id");
    System.out.println(id);
    response.getWriter().write(id);
}

2、         简单数据的绑定(8大基础类型及其包装类,String)

@RequestMapping(value = "baseParam")

public void baseParam(int id){

    System.out.println(id);
}

int 型则必须传递参数,否则报异常,Integer不传也不报错,值为null

3、         pojo类的绑定

@RequestMapping(value = "pojoParam")

public void pojoParam(Useruser){

    System.out.println(user);
}

4、         pojo封装类的绑定

@RequestMapping(value = "queryVoParam")

public void queryVoParam(QueryVoqueryVo){

    System.out.println(queryVo.getUser());
}

需要请求地址必须按照ognl的传递方式传递参数

User.id=123

数组参数

@RequestMapping(value = "arrParam")

public void arrParam(Integer []ids){

    for (Integer id:ids) {
        System.out.println(id);
    }
}

List参数

@RequestMapping(value = "listParam")

public void listParam(QueryVovo){

    System.out.println(vo.getList());
}

传参:list[0].name=zhangsan

访问请求的限制

resultMapping

1、         路径限制,可以在类上面添加地址,这个类下面所有的方法的访问全部要加上这个前缀。

2、         可以采用多个地址访问同一个方法

3、         访问方式的限制,可以限制post请求,或者get请求。

/*两个地址可以访问一个方法,method:设置请求方式*/

@RequestMapping(value = {"access.action","access2.action"},method= RequestMethod.GET)

public void access(){
    System.out.println("进入了Access");
}

Controller的返回值

ModelAndView

能进行页面的跳转,也能进行数据封装。

@RequestMapping(value = "modelAndView")

public ModelAndViewmodelAndView(){

    ModelAndView mav = new ModelAndView();
    User user = new User();
    user.setName("张三");
    mav.addObject("user",user);
    mav.setViewName("/index.jsp");
    return mav;
}

Void

进行json字符串的交互

String

官方文档所推荐

1、可以直接进行页面的跳转

@RequestMapping(value = "strData")

public String strData(Modelmodel){

    User user = new User();
    user.setName("lsi");
    model.addAttribute("user",user);
    return "/index.jsp";
}

2、还可以进行转发到其他的页面

@RequestMapping(value = "strData")

public String strData(Modelmodel){

    User user = new User();
    user.setName("lsi");
    model.addAttribute("user",user);
    return "forward:/index.jsp";
}

3、以及重定向到其他的页面

@RequestMapping(value = "strData")

public String strData(Modelmodel){

    User user = new User();
    user.setName("lsi");
    model.addAttribute("user",user);
    return "redirect:/index.jsp";
}

也可以进行数据的交互,交互的方式是需要一个Model

然后调用model的addAttribute方法。

JSON数据交互

1、         导包

2、         直接在代码中加上注解@ResponseBody,用返回值的方式,直接返回

3、         报转换异常在springMVC.xml中配置

<!--配置数据转换器-->

<mvc:annotation-driven>

        <mvc:message-converters>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        </mvc:message-converters>
</mvc:annotation-driven>

你可能感兴趣的文章
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>