簡體   English   中英

java servlet 連接數據庫后不工作

[英]java servlet does not work after connecting to database

我對 Java 很陌生。 我正在嘗試執行 servlet 中的以下代碼,但在將值提交到我在 index.html 中創建的登錄表單后,什么也沒有發生。 僅供參考,我還為會話創建了另一個 servlet。 預期的 output 將重定向到我在驗證數據庫中的用戶名和密碼后創建的另一個 JSP 頁面

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet(urlPatterns = {"/Login"})
public class Login extends HttpServlet {
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    processRequest(request,response);
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            String user_name = request.getParameter("username");
            String password = request.getParameter("password");
            try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://3306/hotel_management_system?useSSL=false","root","");
            //get data from user_login table
            Statement stm = (Statement) con.createStatement();
            ResultSet rs;
                rs = stm.executeQuery("select * from user_login where username='"+user_name+"' and password='"+password+"'");

            if(user_name != null && password != null){
            if(rs.next()){
                HttpSession session = request.getSession(true);
                session.putValue("username",user_name);
                response.sendRedirect(request.getContextPath()+ "/welcome.jsp");
            }else{
                out.println("Invalid user or password");
            }
            
            }else{
                out.println("Empty username or password");
            }
            con.close();
        }   catch (ClassNotFoundException | SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
    } 
    }

    private void processRequest(HttpServletRequest request, HttpServletResponse response) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}

您能否也提供您的 html 頁面,好像您正在提交帶有<form method="post"的頁面並且您的doPost方法被調用。

您可以更改代碼並嘗試以下操作:

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      doGet(request, response);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM