day--03springmvc

回顾

1,响应

  • 页面跳转

    • controller方法的字符串返回值

      使用Model对象进行数据共享,默认是存储在request域对象中。

    • 使用ModelAndView对象

  • 直接响应数据

    • controller方法返回的是普通字符串
    • controller方法响应的是json数据
      • 方法直接返回对象或者集合即可,底层默认使用的是Jackson工具
    • 注意:
      • @ResponseBody
      • 引入jackson的jar包
      • 注解驱动

2,发送异步请求

如果post请求的数据是json格式的字符串,需要使用@RequestBody

3,拦截器

  • 定义拦截器类

    • 实现HandlerInterceptor接口
      • preHandler的返回值是true,放行,是false,直接结束
  • 配置

    <mvc:interceptors>
            <!--开启具体的拦截器的使用,可以配置多个-->
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <!--指定具体的拦截器类-->
                <bean class="MyInterceptor"/>
            </mvc:interceptor>
    </mvc:interceptors>
    

作用: 登陆状态校验 权限的校验

4,异常处理器

注解开发:

@ControllerAdvice

@ExceptionHandler

@ResponseBody

今日内容

  1. 文件上传
  2. restful
  3. postman
  4. 校验框架
  5. ssm整合

1,文件上传

1.1 页面

<form action="/fileupload" method="post" enctype="multipart/form-data">
    <%--文件上传表单的name属性值一定要与controller处理器中方法的参数对应,否则无法实现文件上传--%>
    上传LOGO:<input type="file" name="file"/><br/>
    <input type="submit" value="上传"/>
</form>

注意:

  1. enctype属性的值必须是multipart/form-data
  2. 提交方式必须是post请求
  3. 必须有文件上传项

1.2 后台

springmvc是对apache提供的文件上传工具(fileupload)进行了封装。

  • 引入jar包

    <!--文件上传下载-->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.4</version>
        </dependency>
    
  • 配置文件上传处理器

    在springmvc的配置文件中

     <!--配置文件上传处理器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="1024000000"/>
        </bean>
    
  • 在controller方法声明形式参数 MultipartFile file

    @RequestMapping(value = "/fileupload")
        //参数中定义MultipartFile参数,用于接收页面提交的type=file类型的表单,要求表单名称与参数名相同
        public String fileupload(MultipartFile file) throws IOException {
    		//将文件存储到硬盘上
            file.transferTo(new File(""));
            //获取文件名称
            String fileName = file.getOriginalFilename();
            return ";page.jsp";
        }
    

2,restful

概述:

是url书写的一种风格。

传统的书写方式:
	http://localhost/user/getData?id=1
restful书写方式:
	http://localhost/user/1

springmvc支持restful风格的url。

在这里插入图片描述

如何确定增删改查的那种操作?

使用提交方式:
	post请求 : 添加
	put请求  : 修改
	get请求  : 查询
	delete请求 : 删除

springmvc如何接受其他的请求方式:

配置一个过滤器:

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <servlet-name>DispatcherServlet</servlet-name>
</filter-mapping>

开发中的写法:

@RestController
@RequestMapping("/user/")
public class UserController {
    
    //http://localhost/user/
    @PostMapping
    public String save(User user) {
        
        return "添加成功"
    }
    
    //http://localhost/user/
    @PutMapping
    public String update(User user) {
        
        return "修改成功"
    }
    
    @GetMapping("{id}")
    public String findById(@PathVariable Integer id) {
        
        return "修改成功"
    }
    
    @GetMapping
    public String findAll() {
        
        return "修改成功"
    }
    
    @DeleteMapping("{id}")
    public String delete(@PathVariable Integer id) {
        
        return "修改成功"
    }
}

3,校验框架(了解)

hibernate-validator

3.1 入门案例

  • 引入jar包

    <!--导入校验的jsr303规范-->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <!--导入校验框架实现技术-->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version>
    </dependency>
    
  • 在controller方法上标记要校验的bean

在这里插入图片描述

  • 定义校验的规则。在实体类的成员变量上定义

在这里插入图片描述

图解:
在这里插入图片描述

4,ssm整合

4.1 spring整合mybatis

配置mybatis的分页插件:

在这里插入图片描述

4.2 spring整合springmvc

问题: spring的核心容器在什么时候创建,由谁创建?

spring的核心容器在整个项目中只需要有一个即可,希望在服务器启动的时候直接创建好。

web中学习的ServletContext对象只有一个,而且是在服务器启动的时候创建。

之前学习了ServletContext的监听器,监听ServletContext对象的创建和销毁。

这个监听器不需要我们创建,在整合包中已经提供好了 ContextLoaderListener

我们需要做的就是配置监听器即可:

<!--指定spring的配置文件,用来创建spring的容器对象-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!--启动服务器时,通过监听器加载spring运行环境-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

注意: spring有自己的核心容器对象,springmvc也有自己的容器对象。

spring容器是父容器,而springmvc是子容器。

json数据转换的转换器:

<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <property name="dateFormat">
                            <bean class="java.text.SimpleDateFormat">
                                <!--new SimpleDateFormat("yyyy-MM-dd")-->
                                <constructor-arg value="yyyy/MM/dd"></constructor-arg>
                            </bean>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值