SSM框架整合——文件上传、json转换、拦截器

SSM框架整合——文件上传、json转换、拦截器

文件上传

1、导入jar包
在这里插入图片描述
2、配置上传解析器

<!--配置上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <!--最大上传大小,单位:字节-->
     <property name="maxUploadSize" value="10000000"></property>
     <property name="defaultEncoding" value="UTF-8"></property>
</bean>

3、jsp页面

<!--
    enctype="multipart/form-data":表示当前表单包含文件上传控件
-->
<form action="/user/registerUser.action" method="post" enctype="multipart/form-data">
    用户名:<input type="text" name="username"/> <br/><br/>
    密 码:<input type="text" name="password"/> <br/><br/>
    选择文件:<input type="file" name="headFile"/> <br/><br/>
     <!--文件进入后台由MultipartFile类接收,-->
    <input type="submit" value="注册"/>
</form>

4、Controller层

MultipartFile对象负责接收文件,注意属性名,并且上传。

将文件上传到指定路径中,并且重命名文件,将文件名存入对象

 //用户注册(上传图片)
    @RequestMapping("/registerUser.action")
    public String registerUser(User user, MultipartFile headFile) throws IOException {
        //UUID生成不重读的字段,用于重命名文件
        String uuid = UUID.randomUUID().toString();

        //获取文件名
        String filename = headFile.getOriginalFilename();

        //截取文件扩展名
        String suffix = filename.substring(filename.lastIndexOf("."));

        //上传文件并重命名
        headFile.transferTo(new File("C://Users/Sherlock/IdeaProjects/Spring/uploading/img/img-"+uuid+suffix));

        //将文件名存在对象中
        user.setHeadPic(uuid+suffix);

		//将用户添加到数据库中
        us.registerUser(user);

        return "succ";
    }

在这里插入图片描述

json转换

导入jar包
在这里插入图片描述

@RequestBody:将前端的json串转成对象

@ResponseBody:将数据库的对象转成json串
在这里插入图片描述
结果:
在这里插入图片描述

拦截器

创建拦截器MyIntercepter类,实现HandlerInterceptor接口,实现preHandle(),postHandle(),afterCompletion()方法

方法执行时间
preHandle()请求到达Controller之前执行,决定是否通过
postHandle()请求Controller中处理完成后,还未响应View之前
afterCompletionController处理完成,View响应完成后执行

postHandle()在所有的拦截器返回true才执行

afterCompletion() 当前拦截器preHandle返回true就执行

false为拦截

//拦截器
//创建拦截器,实现HandlerInterceptor接口
public class MyIntercepter implements HandlerInterceptor {

    //请求到达Controller之前执行,是否通过
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("preHandle方法: 未到Controller");
        //返回值决定是否拦截
        return true;
    }

    //请求Controller中处理完成后,还未响应视图之前
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle方法:已到Controller,还未响应View");
    }

    //Controller处理完成和视图响应给客户端后执行
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("afterCompletion方法:Controller处理完成,View响应完成");
    }
}

配置拦截器:

 <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--所有请求都拦截-->
            <mvc:mapping path="/**"/>
            <bean class="com.intercepter.MyIntercepter"></bean>
        </mvc:interceptor>

        <mvc:interceptor>
            <!--拦截/item下的请求-->
            <mvc:mapping path="/item/**"/>
            <bean class="com.intercepter.UserIntercepter"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值