知识库系统源代码——控制层servlet代码

本文介绍了知识库系统中控制层servlet的处理逻辑,当用户在前台页面提交请求后,这些servlet负责接收并处理请求,实现业务逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台页面提交后交给后台servlet处理,代码如下:

package com.cr.web;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.util.FileCopyUtils;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.alibaba.fastjson.JSON;
import com.cr.dao.NewsDao;
import com.cr.model.News;
import com.cr.model.PageBean;
import com.cr.util.DbUtil;
import com.cr.util.ExceptionUtil;
import com.cr.util.JsonUtil;
import com.cr.util.ResourceUtil;
import com.cr.util.ResponseUtil;
import com.cr.util.StringUtil;

/**
 * @author 汤如义
 * @项目名称:Rbps   
 * @类名称:NewsServlet   
 * @类描述:      
 * @创建时间:2016年7月27日 下午4:47:11      
 */
public class NewsServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	DbUtil dbUtil=new DbUtil();
	NewsDao newsDao=new NewsDao();
    public NewsServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//根据action种类执行相应增删改查操作
		doPost(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String action = request.getParameter("action");
		response.setContentType("utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		//response.setHeader("content-type","text/html;charset=UTF-8");
		HttpSession session = request.getSession();
		if("list".equals(action)){
			try {
				list(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if("saveNew".equals(action)){
			try {
				saveNew(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if ("editNew".equals(action)) {
			
			try {
				showEditNewJSP(request, response);
			} catch (Exception e) {
				e.printStackTrace(); 
			}
		}else if("savaEdit".equals(action)){
			try {
				editNew(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if ("deleteNew".equals(action)) {
			deleteNew(request, response);
		}else if("listUser".equals(action)){
			try {
				listUser(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if("upload".equals(action)){
			upload(request, response, session);
		}else if("showNote".equals(action)){
			try {
				showNote(request, response);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
	
	//获取信息列表
	public void list(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String page=request.getParameter("page");
		String rows=request.getParameter("rows");
		String name = request.getParameter("name");
		if(name!=null){
		name=new String(name.getBytes("ISO-8859-1"),"utf-8");
		}
		News news = new News();
		if(StringUtil.isNotEmpty(name)){
			news.setName(name);
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), Integer.parseInt(rows));
		Connection con=null;
		try {
			con=dbUtil.getCon();
			JSONObject result=new JSONObject();
			JSONArray jsonArray=JsonUtil.formatRsToJsonArray(newsDao.newsList(con, pageBean, news));
			int total=newsDao.newsCount(con,news);
			result.put("rows", jsonArray);
			result.put("total", total);
			ResponseUtil.write(response, result);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	//新增信息
	public void saveNew(HttpServletRequest request,HttpServletResponse response) throws Exception {
		String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
		String text=new String(request.getParameter("text").getBytes("ISO-8859-1"),"utf-8");
		//String name = request.getParameter("name");
		//String text = request.getParameter("text");
		News news=new News();
		if(StringUtil.isNotEmpty(name)){
			news.setName(name);
		}
		if(StringUtil.isNotEmpty(text)){
			news.setText(text);
		}
		Date createDate = new Date();
		//System.out.println(createDate);
		//String createtime = DateUtil.formatDate(createDate, "hh-MM-dd");
		news.setCreatetime(createDate);
		//调用持久层代码
		Connection con=null;
		try {
			JSONObject result=new JSONObject();
			con=dbUtil.getCon();
			int saveNumers = newsDao.newsAdd(con, news);
			if (saveNumers==1) {
				result.put("success", true);
				result.put("msg", "保存成功");
			}else{
					result.put("success", false);
					result.put("errorMsg", "保存失败");
			}
			ResponseUtil.write(response, result);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	//编辑信息
	public void editNew(HttpServletRequest request,HttpServletResponse response) throws Exception {
		String ids = request.getParameter("id");
		String text = request.getParameter("text");
		String name = request.getParameter("name");
		if(ids!=null){
			ids=new String(ids.getBytes("ISO-8859-1"),"utf-8");
		}
		if(text!=null){
			text=new String(text.getBytes("ISO-8859-1"),"utf-8");
		}
		if(name!=null){
			name=new String(name.getBytes("ISO-8859-1"),"utf-8");
		}
		News news=new News();
		
		Connection con=null;
		try {
			JSONObject result=new JSONObject();
			con=dbUtil.getCon();
			News news2 = newsDao.showNew(con, ids);
			Date oldCreatetime = news2.getCreatetime();
			news.setId(Integer.parseInt(ids));
			news.setText(text);
			news.setName(name);
			news.setCreatetime(oldCreatetime);
			int num = newsDao.newsEdit(con, news);
			if (num==1) {
				result.put("success", true);
				result.put("msg", "编辑成功");
			}else{
					result.put("success", false);
					result.put("errorMsg", "编辑失败");
			}
			ResponseUtil.write(response, result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//删除信息
	public void deleteNew(HttpServletRequest request,HttpServletResponse response) {
		String ids = request.getParameter("delIds");
		Connection con=null;
		try {
			JSONObject result=new JSONObject();
			con=dbUtil.getCon();
			int deleteNum = newsDao.newDelete(con, ids);
			if(deleteNum>0){
				result.put("success", true);
				result.put("delNums", deleteNum);
			} else{
				result.put("errorMsg", "删除失败");
			}
		ResponseUtil.write(response, result);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public void upload(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
		//String savePath = session.getServletContext().getRealPath("/") + ResourceUtil.getUploadDirectory() + "/";// 文件保存目录路径
		String savePath=ResourceUtil.getSaveDirectory()+"/"+ ResourceUtil.getUploadDirectory() + "/";
		String savePathMapping=ResourceUtil.getSaveDirectoryMapping();
		String saveUrl = "/" + ResourceUtil.getUploadDirectory() + "/";// 要返回给xhEditor的文件保存目录URL

		SimpleDateFormat yearDf = new SimpleDateFormat("yyyy");
		SimpleDateFormat monthDf = new SimpleDateFormat("MM");
		SimpleDateFormat dateDf = new SimpleDateFormat("dd");
		Date date = new Date();
		String ymd = yearDf.format(date) + "/" + monthDf.format(date) + "/" + dateDf.format(date) + "/";
		savePath += ymd;
		saveUrl += ymd;

		File uploadDir = new File(savePath);// 创建要上传文件到指定的目录
		if (!uploadDir.exists()) {
			uploadDir.mkdirs();
		}

		String contentDisposition = request.getHeader("Content-Disposition");// 如果是HTML5上传文件,那么这里有相应头的
		if (contentDisposition != null) {// HTML5拖拽上传文件
			Long fileSize = Long.valueOf(request.getHeader("Content-Length"));// 上传的文件大小
			String fileName = contentDisposition.substring(contentDisposition.lastIndexOf("filename=\""));// 文件名称
			fileName = fileName.substring(fileName.indexOf("\"") + 1);
			fileName = fileName.substring(0, fileName.indexOf("\""));

			ServletInputStream inputStream;
			try {
				inputStream = request.getInputStream();
			} catch (IOException e) {
				this.uploadError("上传文件出错!", response);
				ExceptionUtil.getExceptionMessage(e);
				return;
			}

			if (inputStream == null) {
				this.uploadError("您没有上传任何文件!", response);
				return;
			}

			if (fileSize > ResourceUtil.getUploadFileMaxSize()) {
				this.uploadError("上传文件超出限制大小!", fileName, response);
				return;
			}

			// 检查文件扩展名
			String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
			if (!Arrays.<String> asList(ResourceUtil.getUploadFileExts().split(",")).contains(fileExt)) {
				this.uploadError("上传文件扩展名是不允许的扩展名。\n只允许" + ResourceUtil.getUploadFileExts() + "格式!", response);
				return;
			}

			String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;// 新的文件名称
			File uploadedFile = new File(savePath, newFileName);

			try {
				FileCopyUtils.copy(inputStream, new FileOutputStream(uploadedFile));
			} catch (FileNotFoundException e) {
				this.uploadError("上传文件出错!", response);
				ExceptionUtil.getExceptionMessage(e);
				return;
			} catch (IOException e) {
				this.uploadError("上传文件出错!", response);
				ExceptionUtil.getExceptionMessage(e);
				return;
			}

			this.uploadSuccess(savePathMapping+ saveUrl+ newFileName, fileName, 0, response);// 文件上传成功
			return;
		} else {// 不是HTML5拖拽上传,普通上传
			if (ServletFileUpload.isMultipartContent(request)) {// 判断表单是否存在enctype="multipart/form-data"
				DiskFileItemFactory dfif = new DiskFileItemFactory();
				dfif.setSizeThreshold(1 * 1024 * 1024);// 设定当上传文件超过1M时,将产生临时文件用于缓冲
				dfif.setRepository(new File(savePath));// 存放临时文件的目录
				ServletFileUpload sfu = new ServletFileUpload(dfif);
				try {
					@SuppressWarnings("unchecked")
					List<FileItem> fis = sfu.parseRequest(request);
					for (FileItem fi : fis) {
						if (fi.isFormField()) {
							// 是表单项,不是上传项
						} else {
							String fileName = fi.getName();// 上传的文件名称,如果是欧鹏浏览器,这个会带路径

							if (fi.getSize() > ResourceUtil.getUploadFileMaxSize()) {
								this.uploadError("上传文件超出限制大小!", fileName, response);
								return;
							}

							try {
								// 检查文件扩展名
								String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
								if (!Arrays.<String> asList(ResourceUtil.getUploadFileExts().split(",")).contains(fileExt)) {
									this.uploadError("上传文件扩展名是不允许的扩展名。\n只允许" + ResourceUtil.getUploadFileExts() + "格式!", response);
									return;
								}
								String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;// 新的文件名称
								fi.write(new File(savePath, newFileName));
								this.uploadSuccess(savePathMapping+ saveUrl+ newFileName, fileName, 0, response);// 文件上传成功
								//this.uploadSuccess(request.getContextPath() + saveUrl + newFileName, fileName, 0, response);// 文件上传成功
								return;
							} catch (Exception e) {
								this.uploadError("上传文件出错!", response);
								ExceptionUtil.getExceptionMessage(e);
								return;
							}
						}
					}
				} catch (FileUploadException e) {
					this.uploadError("上传文件出错!", response);
					ExceptionUtil.getExceptionMessage(e);
					return;
				}
			} else {
				// 不是multipart/form-data表单
				this.uploadError("您没有上传任何文件!", response);
				return;
			}
			return;
		}

	}

	private void uploadError(String err, String msg, HttpServletResponse response) {
		Map<String, Object> m = new HashMap<String, Object>();
		m.put("err", err);
		m.put("msg", msg);
		this.writeJson(m, response);
	}

	private void uploadError(String err, HttpServletResponse response) {
		this.uploadError(err, "", response);
	}

	private void uploadSuccess(String newFileName, String fileName, int id, HttpServletResponse response) {
		Map<String, Object> m = new HashMap<String, Object>();
		m.put("err", "");
		Map<String, Object> nm = new HashMap<String, Object>();
		nm.put("url", newFileName);
		nm.put("localfile", fileName);
		nm.put("id", id);
		m.put("msg", nm);
		this.writeJson(m, response);
	}
	/**
	 * 将对象转换成JSON字符串,并响应回前台
	 * 
	 * @param object
	 * @throws IOException
	 */
	private void writeJson(Object object, HttpServletResponse response) {
		try {
			String json = JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm:ss");
			response.setContentType("text/html;charset=utf-8");
			response.getWriter().write(json);
			response.getWriter().flush();
			response.getWriter().close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void showNote(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String ids = request.getParameter("id");
		Connection con=null;
		try {
			con=dbUtil.getCon();
			News news = newsDao.showNew(con, ids);
			request.setAttribute("news", news);
			request.getRequestDispatcher("/admin/showNew.jsp").forward(request, response);
		}catch (IOException e) {
		e.printStackTrace();
	}finally{
		try {
			dbUtil.closeCon(con);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	}
	
	private void showEditNewJSP(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String ids = request.getParameter("id");
		Connection con=null;
		try {
			con=dbUtil.getCon();
			News news = newsDao.showNew(con, ids);
			request.setAttribute("news", news);
			request.getRequestDispatcher("/admin/newsEdit.jsp").forward(request, response);
		}catch (IOException e) {
		e.printStackTrace();
	}finally{
		try {
			dbUtil.closeCon(con);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	}
	//获取信息列表
		public void listUser(HttpServletRequest request,HttpServletResponse response) throws Exception{
			String name = request.getParameter("name");
			if(name!=null){
			name=new String(name.getBytes("ISO-8859-1"),"utf-8");
			}
			//String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
			String page=request.getParameter("page");
			String rows=request.getParameter("rows");
			News news = new News();
			if(StringUtil.isNotEmpty(name)){
				news.setName(name);
			}
			PageBean pageBean=new PageBean(Integer.parseInt(page), Integer.parseInt(rows));
			Connection con=null;
			try {
				con=dbUtil.getCon();
				JSONObject result=new JSONObject();
				JSONArray jsonArray=JsonUtil.formatRsToJsonArray(newsDao.newsList(con, pageBean, news));
				int total=newsDao.newsCount(con,news);
				result.put("rows", jsonArray);
				result.put("total", total);
				ResponseUtil.write(response, result);
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				try {
					dbUtil.closeCon(con);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值