index.jsp 에서 입력 받은 값을 폼으로 SignupServlet.java 로 넘기려고하는데 값들이 자꾸 null 로 바뀌어서 넘어가집니다. 도와주세요


// index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Weekly Project-20230825</title>

</head>

<body>

<h1>회원 가입 페이지</h1>

<form action="index" method="post" enctype="multipart/form-data">

<label for="username">아이디:</label>

<input type="text" id="username" name="username" required><br>

<br> <label for="password">비밀번호:</label>

<input type="password" id="password" name="password" required><br>

<br> <label for="email">이메일:</label>

<input type="text" id="email" name="email" required><br>

<br> <label for="photopath">사진 업로드:</label>

<input type="file" id="photopath" name="photopath"><br>

<br> <img id="previewImage" src="#" alt="미리보기" style="max-width: 200px; max-height: 200px; display: none;"><br>

<br> <input type="submit" value="가입" >

</form>

<script>

const photoInput = document.getElementById('photopath');

const previewImage = document.getElementById('previewImage');


photoInput.addEventListener('change', function() {

const file = this.files[0];

if (file) {

const reader = new FileReader();

reader.onload = function(event) {

previewImage.src = event.target.result;

previewImage.style.display = 'block';

};

reader.readAsDataURL(file);

} else {

previewImage.src = '#';

previewImage.style.display = 'none';

}

});

</script>

</body>

</html>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

//SignupServlet.java

package org.comstudy.weeklyapp;

import java.io.IOException;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet("/index")

public class SignupServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {


String username = request.getParameter("username");

String password = request.getParameter("password");

String email = request.getParameter("email");

String photopath = request.getParameter("photopath");


System.out.println("index 에서 값을 가져옴: " + username + "," +password+ "," +email+ "," +photopath);

try {

DBManager dbManager = new DBManager();

dbManager.insertMember(username, password, email, photopath);

// 데이터베이스 연결 완료 메시지 출력

response.setContentType("text/html; charset=UTF-8");

response.getWriter().println("<h1>데이터베이스 연결이 완료되었습니다.</h1>");

// 가입 후 페이지 이동

response.sendRedirect("index.jsp");

} catch (SQLException e) {

e.printStackTrace();

// 데이터베이스 연결 오류 메시지 출력

response.setContentType("text/html; charset=UTF-8");

response.getWriter().println("<h1>데이터베이스 연결 오류가 발생했습니다.</h1>");

}

}

}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

오류 메세지:

index 에서 값을 가져옴: null,null,null,null

org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "USERNAME"; SQL statement:

INSERT INTO MEMBERS (username, password, email, photopath) VALUES (?, ?, ?, ?) [23502-222]

at org.h2.message.DbException.getJdbcSQLException(DbException.java:520)

at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)

at org.h2.message.DbException.get(DbException.java:223)

at org.h2.message.DbException.get(DbException.java:199)

at org.h2.table.Column.validateConvertUpdateSequence(Column.java:365)

at org.h2.table.Table.convertInsertRow(Table.java:936)

at org.h2.command.dml.Insert.insertRows(Insert.java:167)

at org.h2.command.dml.Insert.update(Insert.java:135)

at org.h2.command.dml.DataChangeStatement.update(DataChangeStatement.java:74)

at org.h2.command.CommandContainer.update(CommandContainer.java:169)

at org.h2.command.Command.executeUpdate(Command.java:256)

at org.h2.server.TcpServerThread.process(TcpServerThread.java:413)

at org.h2.server.TcpServerThread.run(TcpServerThread.java:191)

at java.base/java.lang.Thread.run(Thread.java:834)

at org.h2.message.DbException.getJdbcSQLException(DbException.java:520)

at org.h2.engine.SessionRemote.readException(SessionRemote.java:650)

at org.h2.engine.SessionRemote.done(SessionRemote.java:619)

at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:237)

at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:216)

at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:174)

at org.comstudy.weeklyapp.DBManager.insertMember(DBManager.java:38)

at org.comstudy.weeklyapp.SignupServlet.doPost(SignupServlet.java:26)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.base/java.lang.Thread.run(Thread.java:834)