一个用于实现日志查看,修改,删除等操作的Servlet类

来源:互联网 发布:无锡erp软件 编辑:程序博客网 时间:2024/05/22 10:48
package com.softeem.servlet;


import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;


import com.softeem.dao.impl.DailyDAO;
import com.softeem.dto.Daily;
import com.softeem.dto.Student;

//类的映射名
@WebServlet("/daily")
public class DailyServlet extends HttpServlet {


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

//通过其他网站传来的数据flag的值,判断进行何种操作
String flag = req.getParameter("flag");
switch (flag) {
case "submit":
submit(req, resp);
break;
case "modify":
modify(req, resp);
break;
case "queryAll":
queryAll(req, resp);
break;
case "queryById":
queryById(req, resp);
break;
case "delete":
delete(req, resp);
break;
case "export":
exportExcel(req, resp);
break;
case "search":
search(req,resp);
break;
}
}

/查询指定学生的日志内容和编号
private void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");

PrintWriter out = resp.getWriter();
Student stu = getSession(req);
String content = req.getParameter("value");
if (stu != null) {
// 查询当前学生的日志
Daily d = new Daily();
d.setStudent(stu);
d.setContent(content);

DailyDAO dao = new DailyDAO();
List<Daily> list = dao.findByContent(d);
// 将日志集合缓存到request中
req.setAttribute("listSearch", list);
req.getRequestDispatcher("dailySearch.jsp").forward(req, resp);
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//将日志列表输出成excel文件
private void exportExcel(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
String[] titles = { "序号", "ID", "内容", "提交时间", "修改时间" };
List<Daily> list = (List<Daily>) req.getSession().getAttribute("list");
// 从session中取出登录的学生
Student stu = (Student) req.getSession().getAttribute("user");
// 以学生的姓名作为excel文件的名称
if (stu != null) {
String fname = stu.getSname() + ".xls";
try {
fname = URLEncoder.encode(fname, "utf-8");


resp.setHeader("content-disposition", "attachment;filename="
+ fname);
// 获取response的输出流
OutputStream os = resp.getOutputStream();
// 根据输出流创建一个可写的工作簿
WritableWorkbook workbook = Workbook.createWorkbook(os);
// 创建一个表单(sheet)
WritableSheet sheet = workbook.createSheet("sheet1", 0);
// 写入表头
for (int i = 0; i < titles.length; i++) {
// 创建一个单元格
Label cell = new Label(i, 0, titles[i]);
// 将单元格写入到表单中
sheet.addCell(cell);
}
Daily daily = null;
// 写入内容
for (int i = 0; i < list.size(); i++) {
daily = list.get(i);


Label c1 = new Label(0, i + 1, String.valueOf(i + 1));
Label c2 = new Label(1, i + 1,
String.valueOf(daily.getId()));
Label c3 = new Label(2, i + 1, daily.getContent());
Label c4 = new Label(3, i + 1, String.valueOf(daily
.getSubmitTime()));
Label c5 = new Label(4, i + 1, daily.getLastTime() + "");


sheet.addCell(c1);
sheet.addCell(c2);
sheet.addCell(c3);
sheet.addCell(c4);
sheet.addCell(c5);
}
workbook.write();
workbook.close();
System.out.println("导出完成!");


} catch (IOException e) {
e.printStackTrace();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//删除指定的学生日志
private void delete(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {


HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");


Student stu = getSession(req);
PrintWriter out = resp.getWriter();
if (stu != null) {
String id = req.getParameter("id");


Daily daily = new Daily();


daily.setId(Integer.parseInt(id));


DailyDAO dao = new DailyDAO();


if (dao.delete(daily)) {
out.println("<script>alert('删除成功');location.href='daily?flag=queryAll'</script>");
} else {
out.println("<script>alert('删除失败');history.back();</script>");
}
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//根据id查找日志
private void queryById(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 从session中取出当前用户


HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
Student stu = getSession(req);
if (stu != null) {


String id = req.getParameter("id");
String url = req.getParameter("url");


Daily daily = new Daily();
daily.setStudent(stu);
DailyDAO dao = new DailyDAO();


daily = dao.findById(Integer.parseInt(id));
req.setAttribute("daily", daily);
req.getRequestDispatcher(url).forward(req, resp);
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//查找一个学生的所有日志
private void queryAll(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 从session中取出当前用户


HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
Student stu = getSession(req);
if (stu != null) {
// 查询当前学生的日志
Daily d = new Daily();
d.setStudent(stu);
DailyDAO dao = new DailyDAO();
List<Daily> list = dao.findByProperties(d);
// 将日志集合缓存到request中
req.getSession().setAttribute("list", list);
req.getRequestDispatcher("dailyList.jsp").forward(req, resp);
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//修改日志
private void modify(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Student stu = getSession(req);
HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
if (stu != null) {
String id = req.getParameter("id");
String content = req.getParameter("content");


Daily daily = new Daily();


daily.setId(Integer.parseInt(id));
daily.setContent(content);
daily.setLastTime(new Date());


DailyDAO dao = new DailyDAO();


if (dao.update(daily) && dao.updateTime(daily)) {
resp.sendRedirect("daily?flag=queryAll");
} else {
out.println("<script>alert('修改失败');history.back();</script>");
}
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}

//提交日志
private void submit(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {


// 从session中取出学生对象
HttpServletRequest request = (HttpServletRequest) req;
request.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
Student stu = getSession(req);
PrintWriter out = resp.getWriter();
if (stu != null) {
String content = req.getParameter("content");
Daily daily = new Daily();


daily.setContent(content);
daily.setStudent(stu);
daily.setLastTime(new Date());


DailyDAO dao = new DailyDAO();
if (dao.save(daily)) {
// 成功后直接跳转到列表界面,显示日志列表
resp.sendRedirect("daily?flag=queryAll");
} else {
out.println("<script>alert('添加失败');history.back();</script>");
}
} else {
req.setAttribute("error", "你还没有登录,请登录后再提交");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}


// 从session中获取缓存的当前登录学生信息
private Student getSession(HttpServletRequest request) {
Object obj = request.getSession().getAttribute("user");
return obj != null ? (Student) obj : null;
}
}
阅读全文
0 0
原创粉丝点击