SpringMvc要点总结

一、介绍

  SpringMvc属于SpringFrameWork的后续产品,应用了MVC设计模式的一个显示层框架。

二、特点

  1.MVC

三、核心功能

  自动装配

request中一般携带如下数据

 1)单一的value  2)普通的key-value  3)多个普通的key-value  4)包装过的key-value(key为属性.属性的形式)  5)数组,集合类型

  1.简单类型(基本数据类型、String)

    接收没有key的参数时。需要这样书写Controller中的映射路径。这样就可以自动将参数装配到str中了

    例如:http://localhost:8080/test/beijing1234

    @RequestMapping("/test/{param}")
    public String test(@PathVariable("param")String str) {
        return "test";
    }

    接收普通的key-value。注意:请求中的key必须与参数列表中的参数名称一致,才能装配成功。

    例如:http://localhost:8080/test?usename=AAA&password=123456

    @RequestMapping("/test")
    public String test(String username,String password) {
        return "test";
    }

  2.包装类型(pojo)

    往往从前台接收的数据需要设置到对象中使用,SpringMvc也支持接收将多个key-value直接装配到对象中

    前提:请求参数的key必须与实体类中的属性名保持一致

    例如:http://localhost:8080/test?usename=AAA&password=123456    User类中就必须有username、password这两个属性。可以还有其他属性,但是会装配成初始值。

public class User {

    private String username;
    private String password;

    //getter && setter
    
}

    这样接收:

    @RequestMapping("/test")
    public String test(User user) {
        return "test";
    }

  3.VO类型(对象中包含对象)

    例如:http://localhost:8080/test?usename=AAA&password=123456&address.addressName=北京

    Userl类中除了有username、password属性外。还必须有address属性。同时Address类中要有addressName属性

public class User {

    private String username;
    private String password;
    //地址对象
    private Address address;

    //getter && setter
    
}
public class Address {

    private int addressId;
    private String addressName;
    
    //getter & setter
    
}

    这样接收:

    @RequestMapping("/test")
    public String test(User user) {
        return "test";
    }

  4.数组、集合类型

    数组一般用于批量删除,从前台接收一个主键数组。一般是json格式,

    如:{ "ids" : [1,2,3,4,5,6,7]}

    集合一般用于批量修改,从前台接收一个对象数组。也是json格式,

    如:{ "userList" : [

            { "id" : "1" , "username" :  "张三" , "password" : "123456"},

            { "id" : "2" , "username" :  "李四" , "password" : "123456"},

            { "id" : "3" , "username" :  "王五" , "password" : "123456"}

           ]

      }

  这种情况,在Controller中这样来接收

    /**
     * 批量修改
     * @param userList 待修改的User对象集合
     * @return
     */
    @RequestMapping(value="modify")
    @ResponseBody
    public R modify(@RequestBody List<User> userList) {
        //接收到数据后的操作省略
        return R.ok();
    }
    /**
     * 批量删除
     * @param ids 待删除的id数组
     * @return
     */
    @RequestMapping(value="del")
    @ResponseBody
    public R del(@RequestBody Integer[] ids){
        //接收到数据后的操作省略
        return R.ok();
    }

 

四、使用步骤

在核心配置文件中添加以下前三条:

  1.添加@Controller注解扫描

  2.添加mvc注解驱动

  3.配置视图解析器

    <!-- @Controller注解扫描 -->
    <context:component-scan base-package="cn.hpe.controller"/>
    
    <!-- 注解驱动 -->
    <mvc:annotation-driven/>

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

  4.在web.xml中添加SpringMvc前端控制器、[编码过滤器]

    <!-- springmvc前端控制器 -->
    <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>
        <!-- 在tomcat启动的时候就加载这个servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 

posted @ 2018-10-04 20:47  LEMODK  阅读(220)  评论(0)    收藏  举报