栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC【Ajax、拦截器、文件上传和下载】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC【Ajax、拦截器、文件上传和下载】

目录:

一、Ajax使用:二、SpringMVC拦截器三、文件上传和下载


一、Ajax使用:

1. index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    首页
    
    
  
  
    

用户名:

编号 姓名 年龄

2. ajaxController.java

@RestController
public class AjaxController {
    @RequestMapping("/getData")
    public List  getData(String name){
        System.out.println("name : "+name);
        List users = new ArrayList();
        users.add(new User(1,"战胜1",11));
        users.add(new User(2,"战胜2",22));
        users.add(new User(3,"战胜3",33));
        System.out.println(users);
        return users;
    }
}

二、SpringMVC拦截器

① 拦截器是SpringMVC框架自己的,拦截器只会拦截访问控制层方法,如果访问的是jsp/html/css/image/js是不会拦截的;
② 拦截器是Aop思想的具体应用;

自定义拦截器:

① 新建一个moudule,添加web支持;
② 配置web.xml和applicationContext.xml文件;
③ 编写一个拦截器;

1. MyIntercepetor .java

public class MyIntercepetor implements HandlerInterceptor {
   @Override//返回ture时,执行下一个拦截器(放行)
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
       System.out.println("拦截前");
       HttpSession session = request.getSession();
       //1.放行
       if(session.getAttribute("username")!=null){//已登录
           System.out.println("已登录");
           return true;
       }
       if(request.getRequestURI().contains("toLogin")){//将进入登录界面
           System.out.println("进入登录界面");
           return true;
       }
       if(request.getRequestURI().contains("login")){//将进入登录界面
           System.out.println("正在提交登录数据");
           return true;
       }
       //2.不放行
       System.out.println("请先登录");
       request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);//未登录->前往登录界面
       return false;
   }

   @Override
   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
//        System.out.println("拦截后");
   }

   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//        System.out.println("拦截清理");
   }
}

2. CommonController .java

@Controller
@RequestMapping("/user")
public class CommonController {
   @RequestMapping("/main")
   public String main(){
       return "main";
   }

   @RequestMapping("/toLogin")
   public String toLogin(){
       return "login";
   }

   @RequestMapping("/login")
   public String Login(HttpSession session, String username, String password, Model model){
       System.out.println("username: "+username+" password: "+password);
       session.setAttribute("username",username);
       model.addAttribute("username",username);
       return "main";
   }

   @RequestMapping("/goOut")
   public String goOut(HttpSession session,String username, String password){
       session.removeAttribute("username");
       return "login";
   }
}

3. applicationContext.xml

   
   
       
           
           
       
   

4. login.jsp

====登录界面====

用户名: 密码:

5. main.jsp

====欢迎进入主界面====

${username} 退出登录

6. index.jsp

 

前往登录

前往首页


三、文件上传和下载

文件上传:

① 在pom.xml中导入依赖;servlet-api导入高版本的;


   commons-fileupload
   commons-fileupload
   1.3.3



   javax.servlet
   javax.servlet-api
   4.0.1

② applicationContext.xml

   
   
       
       
       
       
   

③ 上传表单

 

④ 控制层FileController.java <两种方式接收>

@RestController
public class FileController {
方式一:
   @RequestMapping("/upload1")
   public String fileUploadWay1(@RequestParam("file")CommonsMultipartFile file, HttpServletRequest request) throws IOException {
       //1.获取文件名
       String uploadFileName = file.getOriginalFilename();
       //2.判断文件名是否为空
       if("".equals(uploadFileName)){
           return "redirect:/index.jsp";
       }
       System.out.println("上传文件名:"+uploadFileName);
       //3.上传保存路径设置
       String path = request.getServletContext().getRealPath("/upload");
       //4.如果路径不存在 则创建一个
       File realPath = new File(path);
       if(!realPath.exists()){
           realPath.mkdirs();
       }
       System.out.println("上传文件保存路径:"+realPath);
       //5.创建输入输出流
       InputStream is = file.getInputStream();
       FileOutputStream os = new FileOutputStream(new File(realPath, uploadFileName));
       //6.读取写出
       int len=0;
       byte[] buffer = new byte[1024];
       while((len=is.read(buffer))!=-1){
           os.write(buffer,0,len);
           os.flush();
       }
       //7.结束
       os.close();
       is.close();
       return "redirect:/index.jsp";
   }
方式二:
   @RequestMapping("/upload2")
   public String fileUploadWay2(@RequestParam("file")CommonsMultipartFile file, >HttpServletRequest request) throws IOException {
       //1.上传路径保存设置
       String path = request.getServletContext().getRealPath("/upload");
       File realPath = new File(path);
       if(!realPath.exists()){
           realPath.mkdirs();
       }
       System.out.println("文件保存地址 :"+realPath);
       //2.上传文件
       file.transferTo(new File(realPath+"/"+file.getOriginalFilename()));
       return "redirect:/index.jsp";
   }
}

文件下载:

① 设置response响应头;
② 读取文件:InputStream;
③ 写出文件:OutputStream;
④ 执行操作;
⑤ 关闭流;

@RequestMapping("/download")
public String downLoad(HttpServletResponse response,HttpServletRequest request) throws Exception{

    //1.要下载文件的图片地址
    String path = request.getServletContext().getRealPath("/upload");
    String fileName = "1.png";//下载名可以改

    //2.设置response响应头
    response.reset();//设置页面不缓存,清空buffer
    response.setCharacterEncoding("UTF-8");
    response.setContentType("multipart/form-data");
    response.setHeader("Content-Disposition",
            "attachment;fileName="+ URLEncoder.encode(fileName,"UTF-8"));
    System.out.println("8888888888888888888888888");
    File file = new File(path,fileName);
    //3.输入输出liu
    FileInputStream input = new FileInputStream(file);
    ServletOutputStream out = response.getOutputStream();
    byte[] buff = new byte[1024];
    int index = 0;
    //4.执行写操作
    while ((index=input.read(buff))!=-1){
        out.write(buff,0,index);
        out.flush();
    }
    out.close();
    input.close();
    System.out.println("OKOKOKOKOK");
    return "OK";
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号