本人菜鸟求指导,我写了个DBBean的类放的是连接数据库和增删改的代码,用jsp页面调用没问题,但是现在不想写在jsp页面上,增加已经用servlet实现了,就是想请教下如何把删除和修改也放在一个servlet里面实现,然后jsp页面如何调用。。我目前还没有学到框架,不要说框架哦。麻烦高手帮我写两句代码吧~~~~

解决方案 »

  1.   

    这是主页面代码,增加功能已经用servlet实现。不需要jsp页面了
    <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="test.DBBean"%>
    <jsp:useBean id = "myDBbean" class = "test.DBBean">
    </jsp:useBean>
    <html>
      <head>
        <title>欢迎进入新闻查询系统</title>
        <script type="text/javascript"">
        function validate()
        {
        var num=document.forms['biaoge'].num.value;
        if(num<=0){
         alert("编号不能为空,请输入编号!");
         return false;
        }
        else{
         return true;
        }
         //document.getElementById("form").submit();
        }
        </script>
      </head>
    <body><h2>新闻查询系统</h2>
    <%      ResultSet rs=myDBbean.query("select * from news");
         out.println("<table border=1 width=400>");
         out.println("<tr>");
         out.println("<td align=center>编号</td>");
         out.println("<td align=center>主题</td>");
         out.println("<td align=center>作者</td>");
         out.println("<td align=center>日期</td>");
         out.println("<td align=center colspan=2>操作</td>");
         out.println("</tr>");
         while (rs.next()){
         out.println("<tr>");
         out.println("<td align=center>"+rs.getString("num").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("theme").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("author").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("date").trim()+"</td>");
         out.println("<td align=center><a href='update.jsp?num="+ rs.getString("num").trim()+"'>修改</a>"+"</td>");
         out.println("<td align=center><a href='delete.jsp?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>");
         }
         out.println("</table>");
            myDBbean.close();
         %>
          
    <br><br><br><h3>增加</h3><hr><form onSubmit="return validate()"  method="post" name="biaoge" action="servlet/MyServlet" ><br><br>
    编号:<input type="text" name="num" ><br>
    <br>
    主题:<input type="text" name="theme" ><br>
    <br>
    作者:<input type="text" name="author" ><br>
    <br>
    日期:<input type="text" name="date"  ><br>
    <br>
    <input type="submit" value=提交></form>
    <form action=mainpage.jsp method=post>
    查询新闻编号:<input type="text" name="num">
    <input type=submit value=提交><br><br>
    </form>
    </body>
    </html>
      

  2.   

    你说你写了一个DBBean的类,那么就可以把它用单独的类文件来放啊,然后在servlet里面进行调用。其实servlet跟JSP实际上是一个东西,JSP会在后台编译成servlet。了解这个就没问题了。
      

  3.   

    这是SERVLETpackage servlet;import java.io.*;import javax.servlet.*;
    import javax.servlet.http.*;import test.DBBean;public class MyServlet extends HttpServlet {
    public void init(ServletConfig config) throws ServletException {
    super.init(config);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException { try {
    PrintWriter out = response.getWriter();
    response.setContentType("text/html;charset=gb2312");
    DBBean dbbean = new DBBean();
    request.setCharacterEncoding("utf-8");
    String insert = "insert into news(num,theme,author,date) values('"
    + request.getParameter("num") + "','"
    + request.getParameter("theme") + "','"
    + request.getParameter("author") + "','"
    + request.getParameter("date") + "')";
    dbbean.update(insert);
    dbbean.close();
    response.sendRedirect("/task/mainpage.jsp"); } catch (Exception ex) {
    ex.printStackTrace();
    } } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request, response);
    }
    }
      

  4.   

    你直接在servlet里面直接DBBean myDbBean = new DBBean();
    ResultSet rs=myDbbean.query("select * from news");看到这样应该理解了吧,接下来就还是一样的遍历rs啦。
      

  5.   

    package com.web;import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import com.entity.User;
    import com.util.Util;public class UserServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // String s=request.getHeader("referer");
    // System.out.println(s);
    String url=request.getRequestURI();
    String path=url.substring(url.lastIndexOf("/"),url.lastIndexOf("."));
    Util.setEncoding(request, response);
    if("/query".equals(path)){
    Connection conn=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    String sql="select * from T_USER";
    List<Object> lists=new ArrayList<Object>();
    try{
    conn=Util.getConnection();
    stmt=conn.prepareStatement(sql);
    rs=stmt.executeQuery();
    while(rs.next()){
    User user=new User();
    user.setId(rs.getInt(1));
    user.setName(rs.getString(2));
    user.setPassword(rs.getString(3));
    lists.add(user);
    }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    Util.close(conn);
    }
    PrintWriter out=response.getWriter();
    out.print(Util.toJson(lists.toArray()));
    out.close();
    }else if("/add".equals(path)){
    int id=Integer.parseInt(request.getParameter("id"));
    String name=request.getParameter("name");
    String password=request.getParameter("password");
    Connection conn=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    String sql1="select * from t_user where id=?";
    String sql="insert into t_user values(?,?,?)";
    String sql2="update t_user set name=?,password=? where id=?";
    try{
    conn=Util.getConnection();
    stmt=conn.prepareStatement(sql1);
    stmt.setInt(1, id);
    rs=stmt.executeQuery();
    if(!rs.next()){
    stmt=conn.prepareStatement(sql);
    stmt.setInt(1, id);
    stmt.setString(2, name);
    stmt.setString(3, password);
    stmt.executeUpdate();
    }else{
    stmt=conn.prepareStatement(sql2);
    stmt.setString(1, name);
    stmt.setString(2, password);
    stmt.setInt(3, id);
    stmt.executeUpdate();
    }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    Util.close(conn);
    }
    }else if("/delete".equals(path)){
    int id=Integer.parseInt(request.getParameter("id"));
    Connection conn=null;
    PreparedStatement stmt=null;
    String sql="delete t_user where id=?";
    try{
    conn=Util.getConnection();
    stmt=conn.prepareStatement(sql);
    stmt.setInt(1,id);
    stmt.executeUpdate();
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    Util.close(conn);
    }
    }else if("/modify".equals(path)){
    int id=Integer.parseInt(request.getParameter("id"));
    String name=request.getParameter("name");
    String password=request.getParameter("password");
    Connection conn=null;
    PreparedStatement stmt=null;
    String sql="update t_user set id=?,name=?,password? where id=?";
    User user=null;
    try{
    conn=Util.getConnection();
    stmt=conn.prepareStatement(sql);
    stmt.setInt(1, id);
    stmt.setString(2, name);
    stmt.setString(3, password);
    stmt.setInt(4, id);
    stmt.executeUpdate();
    }catch(Exception e){
    e.printStackTrace();
    }
    }else if("/queryOne".equals(path)){
    int id=Integer.parseInt(request.getParameter("id"));
    Connection conn=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    User user=null;
    String sql="select * from t_user where id=?";
    try{
    conn=Util.getConnection();
    stmt=conn.prepareStatement(sql);
    stmt.setInt(1, id);
    rs=stmt.executeQuery();
    if(rs.next()){
    user=new User();
    user.setId(rs.getInt(1));
    user.setName(rs.getString(2));
    user.setPassword(rs.getString(3));
    }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    Util.close(conn);
    }
    PrintWriter out=response.getWriter();
    out.println(Util.toJson(user));
    out.close();
    }
    }
    }
      

  6.   

    这是我写的一个跟extjs结合的增删改查 希望对你有帮助
      

  7.   

    我没有在jsp中写代码的经历,怎么给你注释啊,而且我这写的只是纯粹为了简单也没给代码分层,你还是慢慢看吧
      

  8.   

     //信息删除方法
        public void delete(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
         Connection conn=null;
         Statement stat=null;
         conn=connect();
      stat=conn.createStatement();
      String id2=request.getParameter("id");
    stat.execute("delete from student where id="+id2+"");
    request.getRequestDispatcher("delete.jsp").forward(request, response);
        } 
        //信息修改方法
        public void update1(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
         String id4=request.getParameter("id");
        request.setAttribute("result", select(id4,""));
            request.getRequestDispatcher("update1.jsp").forward(request, response);
        }   
        public void update(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException{
         Connection conn=null;
         Statement stat=null;
            String id3=request.getParameter("id");
            String name3=request.getParameter("name");
            String age3=request.getParameter("age");
            String gender3=request.getParameter("gender");
            String major3=request.getParameter("major");
         conn=connect();
      stat=conn.createStatement();
    stat.execute("update student set id="+id3+",name='"+name3+"',age="+age3+",gender='"+gender3+"',major='"+major3+"' where id="+id3+"");
    request.setAttribute("result", select(id3,""));    
        request.getRequestDispatcher("update.jsp").forward(request, response); 
        } 
       
    }
      

  9.   

    高手们都不在吗?帮帮忙我在servlet又写了个删除,请问mainpage中怎么把num传过来。貌似原来的语句不行。public void delete(HttpServletRequest request, HttpServletResponse response)
    throws ClassNotFoundException, SQLException, ServletException,
    IOException {
    try {
    DBBean dbbean_delete = new DBBean();
    String ch = request.getParameter("num");
    String sql = "delete from news where num='"+ch+"'";
    dbbean_delete.update(sql);
    dbbean_delete.close();
    response.sendRedirect("/task/mainpage.jsp");
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    mainpage里的语句,看是不是链接那里的语句有问题。
         out.println("<tr>");
         out.println("<td align=center>"+rs.getString("num").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("theme").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("author").trim()+"</td>");
         out.println("<td align=center>"+rs.getString("date").trim()+"</td>");
         out.println("<td align=center><a href='servlet/MyServlet?num="+ rs.getString("num").trim()+"'>修改</a>"+"</td>");
         out.println("<td align=center><a href='servlet/MyServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>");
         }
         out.println("</table>");
            myDBbean.close();
      

  10.   

    仔细看看你的代码,你用的是sendRedirect,这上客户端跳转,如果你在这种情况下还需要传参数,只能用session或者cookie。
    而一般情况下,我们就没必要用sendRedirect了,除非是那种未登录时跳转到登录页面的,那些一般是用这个。你可以直接。request.setAttribute("num","num");
    request.getRequestDispatcher("跳转到的页面").forward(request,response);这里只会进行结果的转发,也就是服务器端的跳转,请求还在的。而上面的sendRedirect是二次请求,上次请求已经不在了。
    而在JSP页面中,可以根据你自己喜欢,用EL表达式,可以像下面的
    num:${num}这种情况默认在request中取参数,{}里面的是参数名称,如果不清楚可以看看EL教程。
    如果这个不懂,可以用
    num:<%=request.getAttribute("num")%>这样就可以取出了。
      

  11.   

    JSP直接传参数过去。点击不同按钮时候传递一个不同的参数,servlet直接在request中获取你要执行的动作。是要增加还是删除。
    然后就是IF ELSE的事情了。
      

  12.   


    +1.
    初学servlet时,就这么用。
      

  13.   

    谢谢各位了,我现在把增加删除修改分别写了3个servlet,还不会写到一个里面。
    就是想知道,如何传递参数,增加比较好说,我加一个<input type="hidden" name="methodName" value="3"/> 这个3传递过去让函数判断,执行3的增加方法但是我的删除和修改是用的out print输出的表格,现在是加了个链接out.println("<td align=center><a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"'>删除</a>"+"</td>"); 这个语句里面怎么加一个参数让servlet判断呢?不知道我说的高手们能理解不,嘿嘿。初学好辛苦。
      

  14.   

    <a href='servlet/deleteServlet?num="+ rs.getString("num").trim()+"&type=?'>
    这里type  可以自己设置
    你可以设定type=1  为增加,2为修改 3为删除  ......
    然后在servlet里面判断type的值就可以了 
      

  15.   


    感谢回复,我去试试!还能帮我再看个问题吗?SERVLET里面的JAVASCRIPT语句提示框不能显示中文,是问号。代码如下
    else{
    PrintWriter out = response.getWriter();
    response.setContentType("text/html;charset=utf-8");
    response.setCharacterEncoding("utf-8");
    out.println("<script language = javascript>alert('编号为空,请重新输入!')");
    out.println("window.history.go(-1)</script>"); 
    }
      

  16.   


    不是吧。我所有编码都设置的utf-8呀。