SpringMVC入门案例

1首先在Maven中引入相关依赖:

        Spring相关依赖:spring-context .spring-web spring-webmvc servlet-api jsp-api

        引入servlet和jsp依赖时需要添加scope属性 属性值为provided 运行时不生效 运行时采用Tomcat的方式运行

2.在MVC模型中Controller指的是应用程序中处理用户交互的部分 SpringMVC中可以让一个简单的JAVA类成为控制器(在Java类上方添加@Controller注解)

3.在配置文件中配置<mvc:annotation-driven/>开启SpringMVC注解事务支持 在此之前需要先扫描包<context:component-scan base-package="包名"/>  扫描Spring注解

4.@RequestMapping("url") 给定访问路径

5.SpringMVC参数获取:

        获取简单数据类型(基本数据类型和字符串)时:请求行中参数名和方法参数名相同时即可完成自动封装

        在请求行中访问路径应该为:localhost:8888/c/param1?username=itbz&password=12345

@RequestMapping("c/param1")
    public void param(String username,int password){
        System.out.println(username);
        System.out.println(password);
    }

        获取对象类型:请求行中参数和对象的属性名相同时即可完成自动封装

        在请求行中访问路径为:localhost:8888/c/param2?id=1&name=itbz&sex=man 即可完成自动封装

//封装单个对象
@RequestMapping("/c/param2")
    public void objStudent(Student student){
        System.out.println(student);
    }
//实体类
package com.itbaizhan.domain;

import java.util.List;
import java.util.Map;

public class Student {
    private int id;
    private String name;
    private String sex;
//    private Address address;
//    private List<Address> address;
    private Map<String,Address> map;

    public Map<String, Address> getMap() {
        return map;
    }

    public void setMap(Map<String, Address> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", map=" + map +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Student() {
    }

    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
}

        封装为关联对象: 关联对象指的是在实体类中关联着另一个实体类

         请求行localhost:8888/c/param3? id=1&name=itbz&sex=man&address.info=1&address.postcode=01000即可完成自动封装

//封装为关联对象
    @RequestMapping("/c/param3")
    public void objForm(Student student){
        System.out.println(student);
    }

        封装为简单数据类型的集合:注:需要在方法参数前加@RequestParam注解

请求行:localhost:8888/c/param4?list=itbz&list=bjsxt

//封装为简单数据类型的集合
    @RequestMapping("/c/param4")
    public void objList(@RequestParam List<String> list){
        System.out.println(list);
    }

        封装为String类型的数组:方法和封装为简单数据类型的集合相同

       拓展知识点:List下的Arrays.asList(String[]) 方法可以将String类型的数组转换为list类型 list会调用自己的toString方法

 //封装为String类型的数组
    @RequestMapping("/c/param5")
    public void objString(@RequestParam String[] strings){
        List<String> list = new ArrayList();
        list= Arrays.asList(strings);
        System.out.println(list);

    }

        SpringMVC不可以封装对象类型的List,但可以封装有List属性的对象

请求行:localhost:8888/c/param6?id=1&name=itbz&sex=man&address.info=1&address.postcode=01000&address.info=2&address.postcode=011000

//封装有List属性的对象
    @RequestMapping("/c/param6")
    public void objList2(Student student){
        System.out.println(student);
    }

        封装到有map属性的对象中:

请求行:localhost:8888/c/param7?id=1&name=itbz&sex=man&map['one'].info=1&map['one'].postcode=01000

 //封装到有map属性的对象中
    @RequestMapping("/c/param7")
    public void mapConfig(Student student){
        System.out.println(student);
    }

使用Servlet原生对象:SpringMVC封装对象更方便

        封装原生对象了解就好

//使用servlet原生对象
    @RequestMapping("/c/param8")
    public void servletConfig(HttpServletRequest request, HttpServletResponse response, HttpSession session){
        System.out.println(request.getParameter("name"));
        System.out.println(response.getCharacterEncoding());
        System.out.println(session.getId());

    }

自定义参数类型:SpringMVC请求行中封装的参数都为String类型 如果你想封装Date类型的参数那么需要创建一个参数类型转换的类并实现Converter接口并重写converter方法

Converter<String,Date>:由String类型转换为Date类型

在配置类中需要配置转换器工厂:在SpringMVC注解支持的标签中需要添加conversion-service="转换工厂id"

<!--  配置转换器工厂  -->
    <bean id="converterFactory" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.itbaizhan.converter.DateConverter"></bean>
            </set>
        </property>
    </bean>

在web.xml配置文件中配置编码过滤器:在Tomcat8之后针对get请求不会出现乱码的情况 但是post请求会出现乱码情况 这时需要在配置文件中配置编码过滤器 指定要转换的编码以及过滤的路径

<!--  编码过滤器  -->
  <filter>
    <filter-name>encoder</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encoder</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿晓晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值