JavaWeb(03) Servlet实验 编写一个StudentServlet连接mysql数据库查询学生信息(Netbeans工具)

编写一个StudentServlet,完成下列要求:
①该Servlet提供学生学号界面查询如下;
②当学生输入学号,且按下查询按钮后,该Servlet完成数据库查询,将该学生的记录显示输出。

在这里插入图片描述

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sise;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Liugx
 */
public class StudentServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=GBK");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet StudentServlet</title>");            
            out.println("</head>");
            out.println("<body bgcolor=\"#ffffff\">");
            
            if((request.getParameter("sno"))==null || (request.getParameter("sno")).equals("input number")){
                out.println("<form method='post' action='/ServletApplication2/StudentServlet'>");
                out.println("");
                out.println("学生学号:<input type='text' name='sno' value='input number'/>");
                out.println("<input type='submit' value='查询'/><br>");
                out.println("</form> ");    
            }else if(!(request.getParameter("sno").equals("input number"))){
                Vector<?> vc = new Vector<Object>();
                 out.println("<form method='post' action='/ServletApplication2/StudentServlet'>");
                 out.println("");
                 out.println("学生学号:<input type='text' name='sno'/>");
                 out.println("<input type='submit' value='查询'/><br>");
                 out.println("</form>");
                 out.println("<hr>");
                 out.println("<table border='1' ><tr>");
                 out.println("<th>学号</th><th>姓名</th><th>语文</th><th>数学</th>");
                 try {
                   if((vc = accessDB(Integer.parseInt((String) request.getParameter("sno")))) != null){
                      out.println("<tr>");
                      out.println("<td>"+vc.elementAt(0)+"</td>");
                      out.println("<td>"+vc.elementAt(1)+"</td>");
                      out.println("<td>"+vc.elementAt(2)+"</td>");
                      out.println("<td>"+vc.elementAt(3)+"</td>");
                      out.println("</tr>");
                   }else{
                       out.println("<tr>");
                       out.println("<td colspan='4'>没有记录</td>");
                       out.println("</tr>");
                   }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            out.println("</body>");
            out.println("</html>");
            out.flush();
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
    
    public Vector<String> accessDB(int id) throws  SQLException{
        Vector<String> vc = new Vector<String>();
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        String url = "jdbc.mysql://localhost:3306/Student";
        String username = "root";
        String password = "2.7182818";
        
        PreparedStatement myStatement = null;
        ResultSet mySet = null;
        try {
            Connection myConn = DriverManager.getConnection(url,username,password);
            myStatement = myConn.prepareStatement("select * from newstudent where sno=123");
            //myStatement.setInt(1, id);
            mySet = myStatement.executeQuery();
            if (mySet != null) {
                while(mySet.next()){
                    vc.add(Integer.toString(mySet.getInt(0)));
                    vc.add(mySet.getString("sname"));
                    vc.add(Integer.toString(mySet.getInt("chinese")));
                    vc.add(Integer.toString(mySet.getInt("math")));                    
            }
            }
            myStatement.close();
            mySet.close();
            myConn.close();
            return vc;
        } catch (Exception e) {
            e.printStackTrace();
        }

        
        return vc;
    
    }

}
发布了28 篇原创文章 · 获赞 6 · 访问量 2867

猜你喜欢

转载自blog.csdn.net/weixin_45621658/article/details/102528787