Como utilizar botón file selected en java y con IDE netbeans

Yo estoy haciendo una aplicación en java web con ayuda de unos tutoriales en youtube y resulta que estoy en la parte donde debo agregar de la paleta de netbeans el botón "file selected" le coloco sus características coloco también el img con la ruta relativa de la imagen cuando le doy play al proyecto intento agregar una imagen pero no la muestra y en la base de datos aparece toda la ruta completa.

Yo tengo el código de la siguiente manera. Es un formulario de usuarios la idea es que cuando no tenga foto se cargue automáticamente una de un usuario genérico(eso lo hace sin ningún problema) y si uno ya quiere colocar una foto la selecciona con el file selected y la debería mostrar pero no lo hace.

En la base de datos yo tenia la foto como varchar de 50 pero como me guarda toda la ruta completa y no solo el nombre de la imagen que era lo que quería me salia error de que era muy largo para lo permitido entonces ya lo coloque con varchar de 500 y ahi no me sale el error pero no muestra la imagen. El código que yo tengo es el siguiente

<td>Foto:</td>
<td>
<input type=file name="foto" id="foto" value="<%=foto%>" />
<br>
<%
if(foto == null){
foto = "";
}
if(foto.equals("")) {
%>
<img src = "imagenes/usuario.jpg" width="150" height="150"
alt="Seleccione una foto"/>
<%
} else {
%>
<br>
<img src = "<%="imagenes/" + foto%>" width="150" height="150"
alt="Seleccione una foto"/>
<%
}
%>
</td>

Lo que yo quiero decir ahi es que si no hay imagen muestre una foto por defecto que se llama usuario.jpg y que esta en la carpeta imagenes del proyecto y si ya ha muestre la foto seleccionada de la misma carpeta. El me selecciona el archivo normal pero cuando le doy modificar para añadirle una foto a un usuario ya registrado o nuevo para hacer el nuevo registro no saca error porque igual la imagen no es obligatoria por lo que dice que lo modifica o agrega correctamente pero no muestra la foto y ya vuelve a salir que seleccione el archivo y en la base de datos se guarda la foto con la ruta completa desde el c:.

Los códigos que tengo para botón nuevo y modificar son

if (nuevo) {
if (idUsuario == "") {
mensaje = "Debe ingresar un ID de usuario";
} else if (nombres == "") {
mensaje = "Debe ingresar nombre(s) de usuario";
} else if (apellidos == "") {
mensaje = "Debe ingresar apellido(s) de usuario";
} else if (clave == "") {
mensaje = "Debe ingresar una clave de usuario";
} else if (confirmacion == "") {
mensaje = "Debe ingresar una confirmación de la clave";
} else if (!clave.equals(confirmacion)) {
mensaje = "La clave y la confirmación deber ser iguales";
} else if (perfil.equals("0")) {
mensaje = "Debe seleccionar un perfil de usuario";
} else {
Datos misDatos = new Datos();
Usuario miUsuario = misDatos.getUsuario(idUsuario);

if (miUsuario != null) {
mensaje = "Usuario ya existe";
} else {
miUsuario = new Usuario(
idUsuario,
nombres,
apellidos,
clave,
new Integer(perfil),
foto);
misDatos.newUsuario(miUsuario);
mensaje = "Usuario creado correctamente";
}
misDatos.cerrarConeccion();
}
}

if (modificar) {
if (idUsuario == "") {
mensaje = "Debe ingresar un ID de usuario";
} else if (nombres == "") {
mensaje = "Debe ingresar nombre(s) de usuario";
} else if (apellidos == "") {
mensaje = "Debe ingresar apellido(s) de usuario";
} else if (clave == "") {
mensaje = "Debe ingresar una clave de usuario";
} else if (confirmacion == "") {
mensaje = "Debe ingresar una confirmación de la clave";
} else if (!clave.equals(confirmacion)) {
mensaje = "La clave y la confirmación deber ser iguales";
} else if (perfil.equals("0")) {
mensaje = "Debe seleccionar un perfil de usuario";
} else {
Datos misDatos = new Datos();
Usuario miUsuario = misDatos.getUsuario(idUsuario);

if (miUsuario == null) {
mensaje = "Usuario no existe";
} else {
miUsuario = new Usuario(
idUsuario,
nombres,
apellidos,
clave,
new Integer(perfil),
foto);
misDatos.updateUsuario(miUsuario);
mensaje = "Usuario modifcicado";
}

El problema solo radica en la parte de la foto todo lo demás lo hace bien me podrían ayudar para solucionar el problema y yo creo que con los códigos que di y la información es suficiente.

Añade tu respuesta

Haz clic para o