zoukankan      html  css  js  c++  java
  • 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)

               我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中

               这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAttribute("bookId1") %获取对应的值当然仅仅有servlet和jsp页面是不够的还须要的是将你的servlet配置到你的wed.xml中。这样你的servlet才干够使用。

              下面为个人浅浅的想法:事实上我个人认为动态的载入网页更加的简单比如:你想要在你的站点每天公布一张站点动态图片那么你须要做的就是最简单的方式将你的图片命名成之前的名称用以替换然后单独的一个文件存放文本文件 再将文本文件载入进来另一种更加安全的方法就是你须要将你的文件放进数据库中然后在每次訪问页面时候通过servlet载入进来(个人认为这样的方式尽管安全可是载入的比較慢一般人都不愿去等待)另一种就是我记得老师和我说过有一种专用的站点后台管理的假设创建自己的站点能够考录是用那个。

    中间使用的book是定义的一个book类存储的是book的基本信息为其设置setter和getter訪问器这种话符合封装原则


    package bookConnUtil;



    import java.io.IOException;
    import java.sql.SQLException;


    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;


    public class selectBook extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub

    String bookId=req.getParameter("bookId");

    try {

    //本句话调用的是等会数据库进行增删改查里的一个static方法可參考我写的:http://blog.csdn.net/bluezhangfun/article/details/46617455

    boolean flag=bookDAO.bookSelete(bookId);

    //进行调试的语句

    //System.out.println("bookSelect方法正常!!

    !。。!!

    。!!

    。!

    ");

    if(flag==true){

    //book.getBookID();在以下类中

    String bookId1=bookDAO.book.getBookID();
    String bookName=bookDAO.book.getBookName();
    String pianduanName=bookDAO.book.getPianduanName();

    //System.out.println(bookId1+"+++++++++++++++++++++++++++");

    //将从数据库中查询到的语句放入到response中

    req.setAttribute("bookId1", bookId1);
    req.setAttribute("bookName", bookName);

    req.setAttribute("pianduanName",pianduanName);

    //进行页面跳转

    req.getRequestDispatcher("selectBook.jsp").forward(req, resp);

    }else{
    req.getRequestDispatcher("error.html").forward(req, resp);

    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    /***************************************************************************************************************************

    package bookConnUtil;


    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;


    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    //使用rs结果集的时候由于查询的是一条语句  假设是使用rs.next就是没有后继所以就不能运行while循环将会出现错误 
    //假设是查询的多条语句结果是多条的话那么就能用while循环这样就能实现反复的输出
    //使用prepareStatement时候必须先要对当中的?号进行赋值不然会出现错误的
    public class bookDAO{
    static books book = new books();
     public static books getBook(){
     return book;
     }
    public static boolean bookSelete(String bookId) throws SQLException{
    String updateWithUid ="select bookId,bookName,pianduanName from books where bookId=?"; 
    //String updateWithUname ="update users set UID=?

    ,password=?

    ,email=?,utype=?where Uname=?";
     

    boolean flag =true;

    Connection conn=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    try{
    conn=DBUtil.getConnection(DBUtil.CONNECTION_SQL);

    stmt=conn.prepareStatement(updateWithUid);
    stmt.setString(1,bookId);
    System.out.println("bookId是"+bookId+"!!!!!!!!!!!!");

    rs=stmt.executeQuery();

    if(rs.next()==false){flag=false; return flag; }


    System.out.println("没有进入到循环中+++++++++++++++++++++");
    String bookId1 = rs.getString(1);
    System.out.println(bookId+"++++++++++++++++++");
    book.setBookID(bookId1);
    String bookName = rs.getString(2);
    book.setBookName(bookName);
    System.out.println(bookName+"++++++++++++++++++");
    String pianduanName = rs.getString(3);
    book.setPianduanName(pianduanName);



    return flag;

    }catch(Exception e){
    e.printStackTrace();
    }finally{
    conn.close();
    stmt.close();

    }
    return false ;
    }





    }/

    /**********************************************************************************************************************************************/

    以下的代码是对response中的数据提取并显示在页面中我仅仅做了简单的处理

    假设嫌自己的页面过于简单或者是运行的功能过于单一那么在jsp或者是你的servlet中进行控制

    <div class="form_row">
                <label class="contact"><strong>书籍ID:</strong></label>
                <input type="text" class="contact_input" name="bookId" value='<%=request.getAttribute("bookId1") %>'/>
              </div>
              <div class="form_row">
                <label class="contact"><strong>书籍名称:</strong></label>
                <input type="text" class="contact_input" name="bookName" value='<%=request.getAttribute("bookName") %>'/>
              </div>
              <div class="form_row">
                <label class="contact"><strong>片段信息:</strong></label>
                <input type="text" class="contact_input" name="pianduanName" value='<%=request.getAttribute("pianduanName") %>' />
              </div>

  • 相关阅读:
    Django auth组件
    Django 中间件实现用户认证与IP频率限制
    Django 中间件
    Django forms组件
    Django Cookie于Session
    Django分页器
    flask之route中的参数
    Flask之endpoint错误View function mapping is overwriting an existing endpoint function: ***
    Centos6.5 安装python2.7.14
    发布django项目
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5256073.html
Copyright © 2011-2022 走看看