文章目录
整个MVC实现文件上传
1.拷贝之前的dao层和service层
2.开发控制层(Controller)
package com.xie;
@SuppressWarnings("serial")
@WebServlet(urlPatterns= {"/emp/*"})
public class EmpServlet extends BaseServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
if ("/add".equals(pathInfo)) {
this.addEmp(req, resp);
}else if ("/remove".equals(pathInfo)) {
this.removeEmp(req, resp);
}
}
/**
* 添加雇员信息
* @param req
* @param resp
* @throws UnsupportedEncodingException
*/
public void addEmp(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {
//取得业务层的实现类方法
IEmpService service = new EmpServiceImpl();
//先执行上传的
super.saveFile(req, resp);
//执行完毕上传的方法之后再取得具体信息
String name = super.smart.getRequest().getParameter("username");
Double sal = Double.parseDouble(super.smart.getRequest().getParameter("sal"));
Double comm = Double.parseDouble(super.smart.getRequest().getParameter("comm"));
String job = super.smart.getRequest().getParameter("job");
String img = super.newFileName;
//将字符串类型的编号转换为整数类型
Integer deptno = Integer.parseInt(super.smart.getRequest().getParameter("deptno"));
//将以上信息保存到数据库
Emp vo = new Emp();
vo.setEname(name);
vo.setSal(sal);
vo.setJob(job);
vo.setDeptno(deptno);
vo.setHiredate(new Date());
vo.setMgr(7788);
vo.setComm(comm);
vo.setImg(img);
if (service.addEmp(vo)) {
System.out.println("插入数据成功");
}else {
System.out.println("数据增加失败!");
}
//上传照片
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
regist.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>Insert title here</title>
</head>
<body>
<form action="emp/add" method="post" enctype="multipart/form-data">
<fieldset>
<legend>请注册</legend>
名字: <input type="text" name="username" placehodler="输入用户名"><br>
<br> 薪资:<input type="text" name="sal"
placehodler="薪资"><br>
<br> 职位:<input type="text" name="job"
placehodler="佣金"><br>
<br> 佣金:<input type="text" name="comm"
placehodler=""><br>
<br> 部门编号:<input type="text" name="deptno"
placehodler=""><br>
<br> 照 片:<input type="file" name="pic"><br>
<br> <input type="submit" value="提交"> <input
type="reset" value="重置">
</fieldset>
</form>
</body>
</html>
实现雇员的删除
删除雇员在数据库中的信息之后同时要删除对应的照片信息
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
if ("/add".equals(pathInfo)) {
this.addEmp(req, resp);
}else if ("/remove".equals(pathInfo)) {
this.removeEmp(req, resp);
}
}
/**
* 删除雇员信息
* @param req
* @param resp
*/
public void removeEmp(HttpServletRequest req, HttpServletResponse resp) {
//取得业务层实现类对象
IEmpService service1 = new EmpServiceImpl();
IEmpService service2 = new EmpServiceImpl();
//取得要删除的雇员的编号
int empno = Integer.parseInt(req.getParameter("empno"));
//查询出要删除的文件的名称
String fileName = service1.findEmpById(empno).getImg();
//根据编号删除数据
if (service2.removeEmpById(empno)) {
System.out.println("删除成功!");
//删除照片
super.removeFile(req, fileName);
}else {
System.out.println("删除失败!");
}
}