package com.flash.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.flash.factory.DaoFactory;
import com.flash.vo.Expert;public class ExpertServlet extends HttpServlet { private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
              this.doPost(request, response);
         }   public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {  String path = "error.jsp";
String flag = request.getParameter("flag");
Expert expert = new Expert();
if ("addExpert".equals(flag)) {
String userID = (String) request.getSession()
.getAttribute("userID");
String e_name = request.getParameter("e_name");
String e_work = request.getParameter("e_work");
String e_field = request.getParameter("e_field");
String e_phone = request.getParameter("e_phone");
String e_address = request.getParameter("e_address");
expert.setU_id(Integer.parseInt(userID.trim()));
expert.setE_name(e_name);
expert.setE_work(e_work);
expert.setE_field(e_field);
expert.setE_phone(e_phone);
expert.setE_address(e_address);
if (DaoFactory.getExpertDAOImplInstance().addExpert(expert) != 0) {
request.setAttribute("u_id", userID);
if (request.getSession().getAttribute("admin") != null) {
path = "./admin/news/add_do.jsp";
} else {
path = "./experts/e_do.jsp";
}
}
   }
request.getRequestDispatcher(path).forward(request, response);
 }
}提交表单执行servlet时只显示error.jsp网页,表单数据也提交不到数据库中,这是为什么啊?哪位大神给说一下!

解决方案 »

  1.   

    debug一下
    1."addExpert".equals(flag) //flag的值是否为addExpert
    2.if (DaoFactory.getExpertDAOImplInstance().addExpert(expert) != 0) //是否不等于0
      

  2.   

    <form id="form" name="form" action="/information/ExpertServlet?flag=addExpert" method="post">
    </form>
    把 flag 写成 <input type="hidden" name="flag" value="addExpert"> 
    不用?形式传递。
    servlet中,确认全部request.get...是否正确;
    确保getExpertDAOImplInstance().addExpert(expert) 没有异常。 
      

  3.   

    ="/information/ExpertServlet?flag=addExpert你在addExpert的开始处加个System.out.println("----") ;看看你提交后到你的方法里面去不 ?
      

  4.   

    1楼说的很有道理,你调试下,看下flag的值,和DaoFactory.getExpertDAOImplInstance().addExpert(expert)的值。
    看你的结果,flag肯定不是addExpert,但是看你页面表单的内容,flag应该是addExpert,你还是调试一下
      

  5.   

    感谢各位的帮助,我是第一次写jsp网页。采用的是DAO设计模式!
    package com.flash.vo;public class Expert { private int e_id;
    private int u_id;
    private String e_name;
    private String e_work;
    private String e_field;
    private String e_phone;
    private String e_address;
    private String e_date;

    public int getE_id() {
    return e_id;
    }
    public void setE_id(int eId) {
    e_id = eId;
    }
    public int getU_id() {
    return u_id;
    }
    public void setU_id(int uId) {
    u_id = uId;
    }
    public String getE_name() {
    return e_name;
    }
    public void setE_name(String eName) {
    e_name = eName;
    }
    public String getE_work() {
    return e_work;
    }
    public void setE_work(String eWork) {
    e_work= eWork;
    }
    public String getE_field() {
    return e_field;
    }
    public void setE_field(String eField) {
    e_field = eField;
    }
    public String getE_phone() {
    return e_phone;
    }
    public void setE_phone(String ePhone) {
    e_phone = ePhone;
    }
    public String getE_address() {
    return e_address;
    }
    public void setE_address(String eAddress) {
    e_address = eAddress;
    }
    public String E_date() {
    return e_date;
    }
    public void setE_date(String eDate) {
    e_date = eDate;
    }
    }
      

  6.   

    package com.flash.dao;import java.util.List;
    import com.flash.vo.Expert;public interface ExpertDao {
        public int addExpert(Expert expert);
        public int deleteExpertByid(int id);
    public List getAllExpert(int startNo, int pageSize , int e_id,int u_id,String e_name,String e_work,String e_field,String e_phone,
    String e_address,String e_date);
    public Expert getExpertByid(String flag , int id);

    }
      

  7.   

    package com.flash.dao.impl;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;import com.flash.dao.ExpertDao;
    import com.flash.util.DBconn;
    import com.flash.vo.Expert;public class ExpertDaoImpl implements ExpertDao {
    DBconn db = new DBconn();
    Connection conn = null;
    java.sql.PreparedStatement prem = null;
    ResultSet rs = null; public int addExpert(Expert expert) {
    int i = 0;
    conn = db.getConnection();
    String sql = "insert into tbl_experts(u_id,e_name,e_work,e_field,e_phone,e_address , e_date) values(? , ? , ? , ?  ,? , ?, now())";
    try {
    prem = conn.prepareStatement(sql);
    prem.setInt(1, expert.getU_id());
    prem.setString(2,expert.getE_name());
    prem.setString(3,expert.getE_work());
    prem.setString(4,expert.getE_field());
    prem.setString(5, expert.getE_phone());
    prem.setString(6, expert.getE_address());
    i= prem.executeUpdate();
    } catch (Exception e) {
    // TODO: handle exception
    } finally {
    db.close();
    }
    return i;
    } public int deleteExpertByid(int id) {
    // TODO Auto-generated method stub
    return 0;
    } public List getAllExpert(int startNo, int pageSize, int e_id, int u_id,
    String e_name, String e_work, String e_field, String e_phone,
    String e_address, String e_date) {
    // TODO Auto-generated method stub
    return null;
    } public Expert getExpertByid(String flag, int id) {
    // TODO Auto-generated method stub
    return null;
    }
      

  8.   

    package com.flash.factory;
    import com.flash.dao.impl.ExpertDaoImpl;
    public class DaoFactory { public static  ExpertDaoImpl getExpertDAOImplInstance() {

    return new ExpertDaoImpl();
    }}