Member 13681858 Ответов: 1

Пустая страница приходит в качестве вывода


Цитата:
я пытаюсь вставить сведения о сотруднике в базу данных sql но когда я запускаю программу она показывает страницу регистрации после ввода сведений вывод не отображается как пустая страница


Что я уже пробовал:

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>CreateServlet</servlet-name>
        <servlet-class>com.sai.CreateServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CreateServlet</servlet-name>
        <url-pattern>/CreateServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>


public class CreateServlet extends HttpServlet 
{

    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter(); 
        Connection con=null;
        Statement st=null;
       try
       {
        Class.forName("com.mysql.jdbc.Driver");
        DriverManager.getConnection("jdbc:mysql://localhost:3306/dbemployee","root","");
        con.createStatement();
        String id=request.getParameter("UserName");
        String pwd=request.getParameter("Password");
        String eAdd=request.getParameter("EmpAddress");
        String gender=request.getParameter("MaleorFemale");
        String email=request.getParameter("Email");
        String lang=request.getParameter("languages");
        String nation=request.getParameter("Nationality");
        String date=request.getParameter("RegDate");
        
        String sql="insert into Employee Values ('"+id+"' '"+pwd+"' '"+eAdd+"' '"+gender+"'  '"+email+"'  '"+lang+"'  '"+nation+"' '"+date+"')";
        st.executeUpdate(sql);
        if(id !=null | pwd != null | eAdd!=null | gender !=null |email !=null | lang !=null | nation!=null | date !=null)
        {
            RequestDispatcher rd = request.getRequestDispatcher("/success.html");
            rd.forward(request, response);
        }
        else
        {
            out.println("<font color=red>Please fill all the fields</font>");
            RequestDispatcher rd = request.getRequestDispatcher("/index.html");
            rd.forward(request, response);

        }
        
       }catch(ClassNotFoundException | SQLException  | NullPointerException e)
       {
           e.printStackTrace();
       }
       finally
		{
			try
			{
				if(st!=null) st.close();
				if(con!=null)con.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
    }

    // <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>

}

1 Ответов

Рейтинг:
1

Patrice T

Никогда не вставляйте данные, прежде чем проверить, все ли поля в порядке.

String sql="insert into Employee Values ('"+id+"' '"+pwd+"' '"+eAdd+"' '"+gender+"'  '"+email+"'  '"+lang+"'  '"+nation+"' '"+date+"')";
st.executeUpdate(sql); // this line
if(id !=null | pwd != null | eAdd!=null | gender !=null |email !=null | lang !=null | nation!=null | date !=null)
{
    // should go here
    RequestDispatcher rd = request.getRequestDispatcher("/success.html");
    rd.forward(request, response);
}
else
{
    out.println("<font color=red>Please fill all the fields</font>");
    RequestDispatcher rd = request.getRequestDispatcher("/index.html");
    rd.forward(request, response);

}


String sql="insert into Employee Values ('"+id+"' '"+pwd+"' '"+eAdd+"' '"+gender+"'  '"+email+"'  '"+lang+"'  '"+nation+"' '"+date+"')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Member 13681858

@ppolymorphe я удалил одинарные кавычки и в соответствии с u изменил оператор insert n попробовал.
Но все та же пустая страница приближается

Patrice T

Одинарные кавычки-это не проблема, читайте ссылки из решения.

Member 13681858

есть ли какой-нибудь способ получить результат

Patrice T

Я не знаю.
Мое решение говорит, что ваша команда SQL опасна и что она выполняется в неправильном месте.

Member 13681858

хорошо спасибо