利用后缀匹配,用一个Servlet实现对雇员表的增删改查:
web.xml的配置:
 <servlet>
    <servlet-name>ManagerEmpServlet</servlet-name>
    <servlet-class>emp.ManagerEmpServlet</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>ManagerEmpServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>ManagerEmpServlet的源代码如下:
public class ManagerEmpServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String uri=request.getRequestURI();
System.out.println(uri);//看看得到的uri是个什么东西
String path=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
Connection conn=null;
PrintWriter pw=response.getWriter();

if(path.equals("/list")){
try {
conn=DBUtil.getConnection();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select id,name,salary from emp");
pw.println("<table border='1'>");
pw.println("<tr><td>id</td><td>name</td><td>salary</td>" +
"<td>operation</td></tr>");
while(rs.next()){
pw.println("<tr><td>"+rs.getLong("id")+"</td>"+
"<td>"+rs.getString("name")+"</td>"
+"<td>"+rs.getDouble("salary")+"</td>"+
"<td><a href='delete.do?id="+rs.getLong("id")+"'>delete</a>"+
"&nbsp;<a href='load.do?id="+rs.getLong("id")+"'>modify</a>" +
"</td></tr>");
}
pw.println("</table>");
pw.println("<a href='addEmp.jsp'>add employee</a>");
} catch (SQLException e) {
e.printStackTrace();
}

}else if(path.equals("/add")){
String name=request.getParameter("name");
double salary=Double.parseDouble(request.getParameter("salary"));
try {
conn=DBUtil.getConnection();
PreparedStatement pstmt=conn.prepareStatement
("insert into emp(name,salary) values(?,?)");
pstmt.setString(1,name);
pstmt.setDouble(2,salary);
pstmt.executeUpdate();
response.sendRedirect("list.do");
} catch (SQLException e) {
e.printStackTrace();
}
}else if(path.equals("/delete")){
try {
Long id=Long.parseLong(request.getParameter("id"));
conn=DBUtil.getConnection();
PreparedStatement pstmt=conn.prepareStatement("delete from emp where id=?");
pstmt.setLong(1,id);
pstmt.executeUpdate();
response.sendRedirect("list.do");
} catch (SQLException e) {
e.printStackTrace();
}
}else if(path.equals("/update")){
String id=request.getParameter("id");
String name=request.getParameter("name");
String salary=request.getParameter("salary");
conn=DBUtil.getConnection();
try {
PreparedStatement pstmt=conn.prepareStatement(
"update emp set name=?,salary=? where id=?");
pstmt.setString(1,name);
pstmt.setDouble(2,Double.parseDouble(salary));
pstmt.setLong(3,Long.parseLong(id));
pstmt.executeUpdate();
response.sendRedirect("list.do");
} catch (SQLException e) {
e.printStackTrace();
}

}else if(path.equals("/load")){
String id=request.getParameter("id");
conn=DBUtil.getConnection();
try {
PreparedStatement pstmt=conn.prepareStatement(
"select * from emp where id=?");
pstmt.setLong(1,Long.parseLong(id));
ResultSet rs=pstmt.executeQuery();
pw.println("<form action='update.do?id="+id+"' method='post'>");
pw.println("name:<input type='text' name='name' " +
"value='"+rs.getString("name")+"'/><br>");
pw.println("salary:<input type='text' name='salary' " +
"value='"+rs.getDouble("salary")+"'/><br>");
pw.println("input type='submit' name='confirm'");
pw.println("</form>");
} catch (SQLException e) {
e.printStackTrace();
}

} }}addEmp.jsp的源代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'addEmp.jsp' starting page</title>
  </head>
  
  <body>
   <h3>add employee</h3>
   <form action="add.do" method="post">
   name:<input type="text" name="name"><br>
   salary:<input type="text" name="salary"><br>
   <input type="submit" value="confirm">
   </form>
  </body>
</html>DBUtil是个工具类,有个静态的getConnection()方法,代码就不贴出来了。
exercise为数据库,emp为表名。三列id(int),name(varchar),salary(double).
往数据表增加数据没问题,删除也没问题,就是修改数据报错。每次点击modify链接,都暴sql异常,但是仔细检查又找不到毛病。求指导。Servlet jdbc