码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC学习日志三

时间:2019-09-05 00:58:48      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:bsp   exce   over   方法   meta   map   hone   cli   文件中   

一、回顾

1.1 如果接受的参数为日期时间类型,需要在controller中进行处理。

     @InitBinder

     使用实体类封装时间类型 @DateTimeFormat

1.2 如何保存数据让网页获取该数据。

  ModelAndView:

  Model: 默认为request作用域

  Map:

  HttpServletRequest:

  HttpSession:

  @SessionAttributes(name={})

1.3 处理静态资源。

    如果DispatcherServlet处理的请求地址为/,那么它也会处理静态资源。

  在配置文件中使用<mvc:default-servlet-handler> 不处理静态资源。

1.4 如何使用重定向。Redirect

1.5 Springmvc 完成ajax功能。

    Ajax时服务器响应的数据类型。 html, json

    响应的结果是html @ResponseBody 但是它会出现乱码。StringHttpMessageConvert.

    响应的结果是Json类型。需要借助jackson的jar包以及@ResponseBody 

二、文件上传

  1.导入jar包

技术图片

  2.网页。

  表单必须是post提交,编码必须是multipart/form-data  文件上传文本框必须起名。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="addStudent" method="post" enctype="multipart/form-data" >
        姓名:<input type="text" name="name"><br/> 
        年龄:<input type="text" name="age"><br/> 
        请选择上传的文件:<input type="file" name="myfile" /><br /> 
        <input type="submit" value="上传">
    </form>
</body>
</html>

  3.springmvc中配置文件上传解析器。

  <!-- 配置文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置文件上传的大小 -->
        <property name="maxUploadSize" value="20971520"></property>
    </bean>

  4.在控制层处理代码

package com.zhiyou100.klb.controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class UploadController {

    @RequestMapping("upload")
    public String upload(MultipartFile myfile,HttpServletRequest request) {
        //1.获取文件上传的真实保存路径
        String path = request.getServletContext().getRealPath("/upload");
        System.out.println(path);
        //2.创建一个文件对象
        File file = new File(path);
        if(!file.exists()) {
            file.mkdirs();
        }
        
        //3.获取文件名
        String name = myfile.getOriginalFilename();
        System.out.println(name);
        File targetFile = new File(path + "/" + name);
        
        try {
            FileUtils.writeByteArrayToFile(targetFile, myfile.getBytes());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "redirect:index.jsp";
    }
}

三、拦截器(拦截都是控制层的地址。 filter: )

  1.创建一个类实现接口 HandlerInterceptor

  2.重写接口的中方法

package com.zhiyou100.klb.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("请求处理完成后执行的方法");

    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("==========");

    }

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("起始点");
        return true;//如果返回true表示允许通过
    }

}

  3.把创建的类配置到springmvc文件中。

  <!-- 配置拦截器 -->
    <mvc:interceptors>
        <!-- 可配置多个拦截器 -->
        <mvc:interceptor>
            <!-- **表示user下所有的子目录以及请求地址 -->
            <mvc:mapping path="/user/**"/>
            <mvc:exclude-mapping path="/user/list.do"/>
            <bean class="com.zhiyou100.klb.interceptor.MyInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

 四、数据校验

  1.导入jar包

技术图片

  2.在相应的实体类中加入注解

技术图片

   3.在控制层接受参数时。

    @RequestMapping("register")    //requestMapping:表示的就是你的访问地址
    public String register(@Valid Users user,BindingResult br,Model model) {
        if(br.hasErrors()) {
            List<FieldError> fieldErrors = br.getFieldErrors();
            Map<String,Object> errorMsg = new HashMap<>();
            for(FieldError f:fieldErrors) {
                errorMsg.put(f.getField(), f.getDefaultMessage());
            }
            model.addAttribute("errorMsg", errorMsg);
            return "register";
        } else {
            list.add(user);
            return "forward:list";
        }
    }

  4.在.jsp文件中接收错误信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    欢迎注册
    <form action="/SpringMVC-user/user/register" method="post">
        账号:<input type="text" name="name" >${errorMsg.name }<br/>
        密码:<input type="text" name="password">${errorMsg.password }<br/>
        电话:<input type="text" name="phone">${errorMsg.phone }<br/>
        <input type="submit" value="注册">
        <input onclick="location.href=‘javascript:history.go(-1)‘" type="button" value="返回">
    </form>
</body>
</html>

  5.常见注解

技术图片

 

SpringMVC学习日志三

标签:bsp   exce   over   方法   meta   map   hone   cli   文件中   

原文地址:https://www.cnblogs.com/kklb/p/11462419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!