合并servlet后的问题

@WebServlet("/stu")
public class StudentServlet  extends HttpServlet{

	private static final long serialVersionUID = 1L;
	//使用单例模式
    private StudentDAO dao;
    public void init() {
    	dao=new StudentDAOImpl();
    }
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	    req.setCharacterEncoding("utf-8");
	    String cmd=req.getParameter("cmd");
	    if(cmd.equals("save")) {
	    	this.save(req, resp);
	    }else if(cmd.equals("delete")) {
	    	this.delete(req, resp);
	    }else if(cmd.equals("edit")) {
	    	this.edit(req, resp);
	    }else {
	    	this.list(req, resp);
	    }
	}
	protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		List<Student> list=dao.listAll();
		req.setAttribute("stulist", list);
		req.getRequestDispatcher("/WEB-INF/view/student/list.jsp").forward(req, resp);
	}
	protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Long id=Long.valueOf(req.getParameter("id"));
		dao.delete(id);
		resp.sendRedirect("stu?cmd=list");
	}
	protected void save(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		 req.setCharacterEncoding("utf-8");
		 String name=req.getParameter("name");
		 String age=req.getParameter("age");
		 Student newstu=new Student(name,Integer.valueOf(age));
		 String id=req.getParameter("id");
		 if(hasLength(id)) {
			 newstu.setId(Long.valueOf(id));
			 dao.update(Long.valueOf(id), newstu);
		 }else {
		 dao.save(newstu);
		 }
		 resp.sendRedirect("stu?cmd=list");           这里如果使用请求转发,由于地址栏的请求不变,就会陷入表单重复提交的死循环
	}
	protected void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String id=req.getParameter("id");
		if(hasLength(id)) {
		Student stu=dao.get(Long.valueOf(id));
		req.setAttribute("student", stu);
		}
		req.getRequestDispatcher("/WEB-INF/view/student/edit.jsp").forward(req, resp);
	}
	private boolean hasLength(String str) {
		return str!=null&&!"".equals(str.trim());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值