zoukankan      html  css  js  c++  java
  • Spting使用memcached

    applicationContext.xml配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
          
          
          
              <!-- 读取项目的资源配置 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:jdbc.properties</value>
                    <!-- <value>classpath:mail.properties</value> -->
                    <!-- <value>classpath:memcached.properties</value> -->
                </list>
            </property>
        </bean>
    
        <!-- JDBC数据源 -->
        <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver" />
          <property name="url" value="jdbc:mysql://localhost:3306/springtest" />
          <property name="username" value="xuan" />
          <property name="password" value="123456" />
          <property name="testWhileIdle" value="true" />
          <property name="testOnBorrow" value="true" />
          <property name="testOnReturn" value="false" />
          <property name="validationQuery" value="SELECT 1" />
          <property name="validationInterval" value="30000" />
          <property name="timeBetweenEvictionRunsMillis" value="30000" />
          <property name="maxActive" value="100" />
          <property name="minIdle" value="2" />
          <property name="maxWait" value="10000" />
          <property name="initialSize" value="4" />
          <property name="removeAbandonedTimeout" value="60" />
          <property name="removeAbandoned" value="true" />
          <property name="logAbandoned" value="true" />
          <property name="minEvictableIdleTimeMillis" value="30000" />
          <property name="jmxEnabled" value="true" />
        </bean>
    
        <!-- 事务管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!-- 事务模板 -->
        <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
            <property name="transactionManager" ref="transactionManager" />
            <property name="timeout" value="10"></property>
            <property name="isolationLevelName" value="ISOLATION_READ_COMMITTED"></property>
        </bean>
    
        <!-- 配置支持注解方式声明事务 -->
        <tx:annotation-driven transaction-manager="transactionManager" />
        
        <!-- MemcachedClient配置 -->
    	<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean">
    		<property name="servers" value="127.0.0.1:11211" />
    		<property name="protocol" value="BINARY" />
    		<property name="transcoder">
    			<bean class="net.spy.memcached.transcoders.SerializingTranscoder">
    				<property name="compressionThreshold" value="1024" />
    			</bean>
    		</property>
    		<property name="opTimeout" value="3000" />
    		<property name="timeoutExceptionThreshold" value="1998" />
    		<property name="locatorType" value="CONSISTENT" />
    		<property name="failureMode" value="Redistribute" />
    		<property name="useNagleAlgorithm" value="false" />
    	</bean>
         
         
    </beans>
    

    在Java类文件使用:

    package com.grab.video.controller;
    
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.nio.charset.Charset;
    import java.sql.SQLException;
    import java.sql.Timestamp;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.spy.memcached.MemcachedClient;
    
    import org.apache.commons.io.FilenameUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.MediaType;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.ServletRequestUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.view.RedirectView;
    
    import com.fasterxml.jackson.core.JsonGenerationException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    @Controller
    public class GrabVideoController {
    
    	private static final Logger LOG = LoggerFactory.getLogger(GrabVideoController.class);
    
    	private static String filePath="D:\logs\video";
    	//private static String filePath = "/home/grabVideo/";
    
    	@Autowired
        private MemcachedClient memcachedClient;
    	
    	@Autowired
    	ServletContext context;
    
    	/**
    	 * 输入userid能够使用
    	 * 
    	 * @param request
    	 * @param response
    	 * @return
    	 */
    	@RequestMapping(value = "/grab/login", method = { RequestMethod.GET })
    	public ModelAndView login(HttpServletRequest request, HttpServletResponse response) {
    		String userId = ServletRequestUtils.getStringParameter(request, "userId", "");
    		String ts = ServletRequestUtils.getStringParameter(request, "ts", "");
    		String sign = ServletRequestUtils.getStringParameter(request, "sign", "");
    
    		
    		ModelAndView mav = new ModelAndView();
    		// 身份验证
    		if (StringUtils.isNotBlank(userId)) {
    			String encryptedSign = EncryptionUtils.md5Hex(ts + userId + "grab");
    			if (sign.equals(encryptedSign)) {
    				memcachedClient.set("userId", 5*24*60*60, userId);//缓存为有效时间为5日
    				//HttpSession session = request.getSession();
    				//session.setMaxInactiveInterval(5*24*60*60);//秒为单位,设置session周期为5天
    				//session.setAttribute("userId", userId);// 把userId存放到session
    				String url = "/grab/import";
    				mav.setView(new RedirectView(url));
    				return mav;
    			}
    		}
    
    		mav.setViewName("video/error");
    		return mav;
    	}
    
    	/**
    	 * 导入文件
    	 * 
    	 * @return
    	 */
    	@RequestMapping(value = "/grab/import", method = { RequestMethod.GET })
    	public ModelAndView importFile(HttpServletRequest request, HttpServletResponse response) {
    		// String userId = ServletRequestUtils.getStringParameter(request,
    		// "userId", null);
    		ModelAndView mav = new ModelAndView();
    		//HttpSession session = request.getSession();
    
    		String userId = null;
    		if (memcachedClient.get("userId") != null) {
    			userId = (String) memcachedClient.get("userId");
    			SqlFileList sqlFileList = new SqlFileList();
    			List<FileListModel> list = new ArrayList<FileListModel>();
    			try {
    				list = sqlFileList.selectDate(userId);
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    			// 从POLYV的API获取文件夹
    
    			mav.addObject("list", list);
    			mav.addObject("userId", userId);
    			mav.setViewName("video/import");
    			return mav;
    		}
    
    		mav.setViewName("video/login");
    		return mav;
    
    	}
    
    	/**
    	 * 删除文件
    	 * 
    	 * @param request
    	 * @param response
    	 * @return
    	 */
    	@RequestMapping(value = "/grab/delete/file", method = { RequestMethod.GET })
    	public ResponseEntity<AjaxPostResponse> deleteFile(HttpServletRequest request,
    			HttpServletResponse response) {
    		String fileId = ServletRequestUtils.getStringParameter(request, "fileId", null);
    
    		MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
    		HttpHeaders headers = new HttpHeaders();
    		headers.setContentType(mediaType);
    
    		SqlFileList sqlFileList = new SqlFileList();
    		try {
    			sqlFileList.deleteDate(fileId);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		AjaxPostResponse resp = new AjaxPostResponse("yes");
    		return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK);
    	}
    
    	/**
    	 * 解析文件
    	 * 
    	 * @return
    	 */
    	@RequestMapping(value = "/grab/analysis", method = { RequestMethod.GET })
    	public ResponseEntity<AjaxPostResponse> analysisFile(HttpServletRequest request,
    			HttpServletResponse response) {
    		Integer fileId = ServletRequestUtils.getIntParameter(request, "fileId", 0);
    		String fileUrl = ServletRequestUtils.getStringParameter(request, "fileUrl", "");
    		String classifyId = ServletRequestUtils.getStringParameter(request, "classifyId",
    				"classifyId");
    		String classifyName = ServletRequestUtils.getStringParameter(request, "classifyName", "");
    		String userId = ServletRequestUtils.getStringParameter(request, "userId", null);
    
    		MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
    		HttpHeaders headers = new HttpHeaders();
    		headers.setContentType(mediaType);
    
    		List<String> urlList = new ArrayList<String>();
    		List<String> titleList = new ArrayList<String>();
    		try {
    			URL url = new URL(fileUrl);
    			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    			BufferedReader reader = new BufferedReader(new InputStreamReader(
    					connection.getInputStream(), "GBK"));
    
    			String line = null;
    			while ((line = reader.readLine()) != null) {
    				String str = line;
    				//
    				String urlstr = str.substring(0, str.indexOf(","));
    				String title = str.substring(str.lastIndexOf(",") + 1, str.length());
    				//
    				urlList.add(urlstr);
    				titleList.add(title);
    			}
    
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			LOG.info("文件解析失败:" + e);
    			e.printStackTrace();
    			AjaxPostResponse resp = new AjaxPostResponse("no");
    			return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK);
    		}
    
    		// 更新状态
    		SqlFileList sqlFileList = new SqlFileList();
    		FileListModel file = new FileListModel();
    		file.setFileId(fileId);
    		file.setStatus("Y");
    		try {
    			sqlFileList.updateDate(file);
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			LOG.info("文件状态改动成功:" + e1);
    			e1.printStackTrace();
    		}
    
    		// LOG.info("00000"+classifyName);
    		classifyName = classifyName.replace("-", "");
    		// LOG.info(classifyName);
    
    		// 加入数据
    		SqlVideoList sqlvideo = new SqlVideoList();
    		Date date = new Date();
    		Timestamp timeStamp = new Timestamp(date.getTime());
    		GetRandomString randomStr = new GetRandomString();
    		for (int i = 0; i < urlList.size(); i++) {
    			VideoListModel video = new VideoListModel();
    			video.setUserId(userId);
    			video.setUrl(urlList.get(i));// 视频源地址
    			video.setTitle(titleList.get(i));// 视频标题
    
    			String urlstr = urlList.get(i);
    			// String path=urlstr.substring(0, urlstr.indexOf("?"));
    			// String format=path.substring(path.lastIndexOf("."),
    			// path.length());//视频格式
    			// String baseName = FilenameUtils.getBaseName(urlstr);
    			String extendname = FilenameUtils.getExtension(urlstr);
    			if(extendname.contains("?

    ")){ extendname=extendname.substring(0,extendname.indexOf("?

    ")); } if (StringUtils.isBlank(extendname)) { extendname = "mp4"; } String trueName = randomStr.generateRandomString(15); String filename = trueName + "." + extendname; video.setTrueName(filename);// 用于下载使用的视频名称 video.setClassifyId(classifyId); video.setClassifyName(classifyName.trim()); video.setStatus(VideoStatus.NO.getValue());// 等待、 video.setVid(""); video.setCreateTime(timeStamp); try { sqlvideo.insertDate(video);// 加入数据库 } catch (SQLException e) { // TODO Auto-generated catch block LOG.info("加入数据库:" + e); e.printStackTrace(); AjaxPostResponse resp = new AjaxPostResponse("no"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } } AjaxPostResponse resp = new AjaxPostResponse("yes"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } /** * 获取下载进度 * * @return */ @RequestMapping(value = "/grab/download/progress", method = { RequestMethod.POST, RequestMethod.GET }) public ResponseEntity<AjaxPostResponse> getProgress(HttpServletRequest request, HttpServletResponse response) { Integer id = ServletRequestUtils.getIntParameter(request, "videoId", 0); String userId = ServletRequestUtils.getStringParameter(request, "userId", "test"); String urlstr = ServletRequestUtils.getStringParameter(request, "url", ""); String trueName = ServletRequestUtils.getStringParameter(request, "trueName", ""); MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(mediaType); // LOG.info("--id---"+id+"---u---"+userId); int content = 1; int length = 1; int progress = 1; // LOG.info("-------ccccc4------------"+session.getAttribute("fileSize"+id)); if (memcachedClient.get("fileSize" + String.valueOf(id)) == null) { // 文件大小还没存进session中 List<TaskQueue> list = new ArrayList<TaskQueue>(); SqlTaskQueue stq = new SqlTaskQueue(); try { list = stq.selectDateOne(String.valueOf(id)); } catch (SQLException e2) { // TODO Auto-generated catch block LOG.info("查询文件大小" + e2); e2.printStackTrace(); } if (list.size() > 0) { TaskQueue tQueue = list.get(0); content = tQueue.getFileSize(); memcachedClient.set("fileSize" + String.valueOf(id),24*60*60, content);// 存进session } else { URL url = null; try { url = new URL(urlstr); HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 进行连接握手 connection.setRequestMethod("GET");// 请求方式 content = (int) connection.getContentLength(); memcachedClient.set("fileSize" + String.valueOf(id),24*60*60,content);//memcached // LOG.info("-------content------"+content); } catch (Exception e1) { // TODO Auto-generated catch block LOG.info("链接失败" + e1); e1.printStackTrace(); } } } else { // 文件大少在session中 String contentString = String.valueOf(memcachedClient.get("fileSize" + String.valueOf(id))); // LOG.info("-------ccccc------------"+contentString); content = Integer.parseInt(contentString.trim()); } // 文件存储位置、文件命名处理 try { // String path=urlstr.substring(0, urlstr.indexOf("?")); // String name=path.substring(path.lastIndexOf("/")+1, // path.length()); // String filename=name.trim(); String filename = trueName; File file = new File(filePath, filename); if (!file.exists()) { progress = (Integer) memcachedClient.get(userId + id);// 将当前下载进度存放到session中。 } else { length = (int) file.length(); progress = length * 100 / content; // 将当前下载进度存放到session中。 memcachedClient.set(userId + id,24*60*60,progress); LOG.info(id + "-------progress------" + progress); } } catch (Exception e) { LOG.info("不能解析的路径:" + e); AjaxPostResponse resp = new AjaxPostResponse(progress); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } AjaxPostResponse resp = new AjaxPostResponse(progress); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } /** * 批量抓取视频(下载视频模块--依据视频源地址去抓取视频)管理 * * @return * @throws MalformedURLException */ @RequestMapping(value = "/grab/download/manage", method = { RequestMethod.POST }) public ModelAndView grabDownloadVideo(HttpServletRequest request, HttpServletResponse response) { int[] id = ServletRequestUtils.getIntParameters(request, "videoId"); String userId = ServletRequestUtils.getStringParameter(request, "userId", "test"); String[] urlstr = ServletRequestUtils.getStringParameters(request, "url"); String[] trueName = ServletRequestUtils.getStringParameters(request, "trueName"); int len = id.length; List<TaskQueue> taskQueues = new ArrayList<TaskQueue>(); for (int i = 0; i < len; i++) { TaskQueue tq = new TaskQueue(); tq.setTaskId(String.valueOf(id[i])); tq.setVideoId(id[i]); tq.setUserId(userId); tq.setVideoUrl(urlstr[i]); tq.setTrueName(trueName[i]); taskQueues.add(tq); } SqlTaskQueue stq = new SqlTaskQueue(); SqlVideoList svl = new SqlVideoList(); // 把任务队列加入进数据库 if (taskQueues.size() > 0) { // 存在有任务 for (int i = 0; i < taskQueues.size(); i++) { TaskQueue task = taskQueues.get(i); List<TaskQueue> taskList = new ArrayList<TaskQueue>();// 查询任务是否已存在 try { taskList = stq.selectDateOne(task.getTaskId()); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (taskList.size() > 0) { // 该任务已存在 } else { task.setFileSize(0); task.setProgress(0); task.setStatus("N"); Date date = new Date(); Timestamp timeStamp = new Timestamp(date.getTime()); task.setCreateTime(timeStamp); try { stq.insertDate(task); } catch (SQLException e) { // TODO Auto-generated catch block LOG.info("下载任务加入失败!" + e); e.printStackTrace(); } } } } // 获取全部的任务队列 List<TaskQueue> workQueues = new ArrayList<TaskQueue>(); try { workQueues = stq.selectDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block LOG.info("获取下载任务失败" + e); e.printStackTrace(); } // ExecutorService pool = Executors.newFixedThreadPool(3); if (workQueues.size() > 0) { for (int i = 0; i < workQueues.size(); i++) { String taskId = workQueues.get(i).getTaskId(); String urltxt = workQueues.get(i).getVideoUrl(); String filename = workQueues.get(i).getTrueName(); File saveFile = new File(filePath, filename);// 文件保存的位置 File fileDir = new File(filePath); if (!fileDir.exists()) { fileDir.mkdirs();// 文件夹不存在创建文件夹 } URL url = null; try { url = new URL(workQueues.get(i).getVideoUrl()); } catch (MalformedURLException e) { // TODO Auto-generated catch block LOG.info("握手失败" + e); e.printStackTrace(); } if (url != null) { // 将下载任务线程,放入线程池中运行 ExecutorService executor = (ExecutorService) context .getAttribute("DOWNLOAD_EXECUTOR"); executor.submit(new DownloadVideo(url, saveFile, taskId)); // pool.execute(new // DownloadVideo(url,saveFile,taskId));//////////////////////////////////// VideoListModel vlm = new VideoListModel(); vlm.setId(workQueues.get(i).getVideoId()); vlm.setUserId(userId); vlm.setStatus(VideoStatus.WAIT.getValue());// 将状态改为等待 try { svl.updateDate(vlm); } catch (SQLException e) { // TODO Auto-generated catch block LOG.info("更改下载状态失败" + e); e.printStackTrace(); } } } } // 关闭线程池 // pool.shutdown(); // 又一次查询视频列表 List<VideoListModel> list = new ArrayList<VideoListModel>(); try { list = svl.selectDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } ModelAndView mav = new ModelAndView(); mav.addObject("videolist", list); mav.addObject("userId", userId); mav.setViewName("video/download"); return mav; } /** * 获取视频的下载进度() * @param request */ @RequestMapping(value="/grab/download/status",method = {RequestMethod.GET,RequestMethod.POST}) public @ResponseBody ResponseEntity<String> downloadStatus(HttpServletRequest request, HttpServletResponse response) throws JsonGenerationException, JsonMappingException, IOException { String userId = null; if (memcachedClient.get("userId") != null) { userId = (String) memcachedClient.get("userId"); SqlVideoList sqlVideoList = new SqlVideoList(); List<VideoListModel> list = new ArrayList<VideoListModel>(); try { list = sqlVideoList.selectDate(userId); for (int i = 0; i < list.size(); i++) { VideoListModel model = list.get(i); String filename = model.getTrueName(); File file = new File(filePath, filename); if (file.exists()) { int downloaded = (int) file.length(); if (model.getFileSize() != 0) { System.out.println(model.getId()+"===n==="+model.getTrueName()+"===d==="+downloaded+"===s==="+model.getFileSize()+"===="+(long)downloaded * 100 /(long) model.getFileSize()); model.setPercent((int) ((long)downloaded * 100 /(long) model.getFileSize())); } } } ObjectMapper objectMapper = new ObjectMapper(); String result = objectMapper.writeValueAsString(list); MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(mediaType); return new ResponseEntity<String>(result, headers, HttpStatus.OK); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } @RequestMapping(value = "/grab/download/manage", method = { RequestMethod.GET }) public ModelAndView grabVideo(HttpServletRequest request, HttpServletResponse response) { // String userId = ServletRequestUtils.getStringParameter(request, // "userId", ""); String userId = null; ModelAndView mav = new ModelAndView(); if (memcachedClient.get("userId") != null) { userId = (String) memcachedClient.get("userId"); SqlVideoList sqlVideoList = new SqlVideoList(); List<VideoListModel> list = new ArrayList<VideoListModel>(); try { list = sqlVideoList.selectDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } mav.addObject("videolist", list); mav.addObject("userId", userId); mav.setViewName("video/download"); return mav; } mav.setViewName("video/login"); return mav; } /** * 导出下载成功的视频 * * @return */ @RequestMapping(value = "/grab/export", method = { RequestMethod.GET }) public ModelAndView exportVideo(HttpServletRequest request, HttpServletResponse response) { // String userId = ServletRequestUtils.getStringParameter(request, // "userId", ""); String userId = null; ModelAndView mav = new ModelAndView(); if (memcachedClient.get("userId") != null) { userId = (String) memcachedClient.get("userId"); SqlVideoList sqlVideoList = new SqlVideoList(); List<VideoListModel> list = new ArrayList<VideoListModel>(); try { list = sqlVideoList.selectSuccessDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } mav.addObject("videolist", list); mav.addObject("userId", userId); mav.setViewName("video/export"); return mav; } mav.setViewName("video/login"); return mav; } /** * export导出文件 */ @RequestMapping(value = "/grab/export/csv", method = { RequestMethod.GET }) public void exportCsv(HttpServletRequest request, HttpServletResponse response) { String userId = ServletRequestUtils.getStringParameter(request, "userId", ""); if (StringUtils.isNotBlank(userId)) { SqlVideoList sqlVideoList = new SqlVideoList(); List<VideoListModel> list = new ArrayList<VideoListModel>(); try { list = sqlVideoList.selectSuccessDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 导出txt文件 response.setContentType("text/plain"); String fileName = "videolist"; try { fileName = URLEncoder.encode("videolist", "UTF-8"); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv"); BufferedOutputStream buff = null; StringBuffer write = new StringBuffer(); String enter = " "; ServletOutputStream outSTr = null; try { outSTr = response.getOutputStream(); // 建立 buff = new BufferedOutputStream(outSTr); // 把内容写入文件 if (list.size() > 0) { for (int i = 0; i < list.size(); i++) { write.append(list.get(i).getUrl()); write.append(","); write.append(list.get(i).getTitle()); write.append(","); write.append(list.get(i).getVid()); write.append(enter); } } buff.write(write.toString().getBytes("UTF-8")); buff.flush(); buff.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { buff.close(); outSTr.close(); } catch (Exception e) { e.printStackTrace(); } } } } /** * 清空导出视频列表 * /grab/export/clean */ @RequestMapping(value = "/grab/export/clean", method = { RequestMethod.GET }) public ResponseEntity<AjaxPostResponse> cleanVideo(HttpServletRequest request, HttpServletResponse response) { MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(mediaType); if (memcachedClient.get("userId") != null) { String userId=(String) memcachedClient.get("userId"); SqlVideoList sqlVideoList=new SqlVideoList(); try { sqlVideoList.cleanDate(userId); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //删除成功 System.out.println("删除成功!"); AjaxPostResponse resp = new AjaxPostResponse("yes"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); }else{ //删除失败 System.out.println("删除失败!"); AjaxPostResponse resp = new AjaxPostResponse("no"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } } /** * 删除视频 * /grab/export/clean */ @RequestMapping(value = "/grab/delete/videoId", method = { RequestMethod.GET }) public ResponseEntity<AjaxPostResponse> deleteVideo(HttpServletRequest request, HttpServletResponse response) { String videoId = ServletRequestUtils.getStringParameter(request, "videoId", null); MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(mediaType); if (StringUtils.isNotBlank(videoId)) { SqlTaskQueue stq=new SqlTaskQueue(); SqlVideoList sqlVideoList=new SqlVideoList(); try { List<TaskQueue> list=stq.selectDateOne(videoId); if(list.size()>0){ stq.deleteDate(videoId);//删除任务 } sqlVideoList.deleteDate(videoId);//删除视频 } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("删除失败"+e); e.printStackTrace(); } //删除成功 AjaxPostResponse resp = new AjaxPostResponse("yes"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); }else{ //删除失败 AjaxPostResponse resp = new AjaxPostResponse("no"); return new ResponseEntity<AjaxPostResponse>(resp, headers, HttpStatus.OK); } } }




  • 相关阅读:
    代码希望HTML5初探CSS3新特性小示例
    myeclipse及eclipse的优化
    window7如何提高到最高权限
    大麦茶
    poj3292
    poj3278
    poj3100
    poj3117
    poj3299
    Presto性能调优的五大技巧
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5225731.html
Copyright © 2011-2022 走看看