Sitemap

Java EE for php developer

3 min readMay 31, 2025

--

Let’s walk through a basic CRUD + Login system in Java EE step-by-step, similar to what you might have done with PHP + MySQL.

We’ll use:

  • JSP and Servlets for frontend and controllers
  • JDBC for database access
  • MySQL as the database
  • Tomcat as the server (or another Java EE compatible server)

🔧 Project Structure

JavaEECRUD/
├── src/
│ └── com.example/
│ ├── model/
│ ├── dao/
│ ├── servlet/
├── WebContent/
│ ├── login.jsp
│ ├── dashboard.jsp
│ ├── user_form.jsp
│ └── list_users.jsp
└── web.xml

Step 1: Database

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
password VARCHAR(100)
);

Step 2: User.java (Model)

package com.example.model;

public class User {
private int id;
private String name, email, password;

// Getters and setters
}

Step 3: UserDAO.java (Data Access)

package com.example.dao;

import java.sql.*;
import java.util.*;
import com.example.model.User;

public class UserDAO {
private String jdbcURL = "jdbc:mysql://localhost:3306/yourdb";
private String jdbcUsername = "root";
private String jdbcPassword = "yourpassword";

private Connection getConnection() throws SQLException {
return DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);
}

public User checkLogin(String email, String password) throws SQLException {
String sql = "SELECT * FROM users WHERE email=? AND password=?";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, email);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
return u;
}
}
return null;
}

public void insertUser(User user) throws SQLException {
String sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, user.getName());
stmt.setString(2, user.getEmail());
stmt.setString(3, user.getPassword());
stmt.executeUpdate();
}
}

// Add update, delete, list methods
}

Step 4: LoginServlet.java

package com.example.servlet;

import com.example.dao.UserDAO;
import com.example.model.User;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
private UserDAO userDao;

public void init() {
userDao = new UserDAO();
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String email = request.getParameter("email");
String password = request.getParameter("password");

try {
User user = userDao.checkLogin(email, password);
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
response.sendRedirect("dashboard.jsp");
} else {
response.sendRedirect("login.jsp?error=true");
}
} catch (Exception e) {
throw new ServletException(e);
}
}
}

Step 5: login.jsp

<form action="login" method="post">
Email: <input type="text" name="email" /><br>
Password: <input type="password" name="password" /><br>
<input type="submit" value="Login" />
</form>
<% if (request.getParameter("error") != null) { %>
<p style="color:red;">Login failed</p>
<% } %>

Step 6: web.xml

<web-app>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.example.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>

To run this Java EE login + CRUD app, you’ll need to set up your development environment, configure your server, and deploy the app. Here’s a clear step-by-step guide to get you running from scratch — assuming you’re new to Java EE but familiar with web development from PHP.

✅ 1. Install Required Tools

Tool

Purpose

Download Link

JDK (Java 11+)

Java development kit

Oracle JDK or OpenJDK

Apache Tomcat

Java EE-compatible web server

https://tomcat.apache.org/download-90.cgi

MySQL Server

Database

https://dev.mysql.com/downloads/

Eclipse IDE for Enterprise Java

IDE with support for JSP/Servlets

https://www.eclipse.org/downloads/packages/

(optional) MySQL Workbench

Visual DB admin

https://dev.mysql.com/downloads/workbench/

✅ 2. Set Up Your Database

Get New2026’s stories in your inbox

Join Medium for free to get updates from this writer.

Open MySQL or MySQL Workbench and run this:

sql

CopyEdit

CREATE DATABASE javaee_crud;

USE javaee_crud;

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(100),

email VARCHAR(100) UNIQUE,

password VARCHAR(100)

);

✅ 3. Create a Dynamic Web Project in Eclipse

  1. Open Eclipse.
  2. Go to File > New > Dynamic Web Project.
  3. Name it: JavaEECRUD.
  4. Target runtime: Select Apache Tomcat v9.0+ (configure if needed).
  5. Click Finish.

✅ 4. Add JDBC Driver (MySQL)

  1. Download the MySQL JDBC driver (mysql-connector-java-X.X.X.jar) from:
    https://dev.mysql.com/downloads/connector/j/
  2. Add it to your project:
  • Right-click project > Build Path > Configure Build Path.
  • Add the JAR in Libraries > Classpath.

✅ 5. Create Folders and Files

Inside Eclipse:

  • src/com.example.model/User.java
  • src/com.example.dao/UserDAO.java
  • src/com.example.servlet/LoginServlet.java
  • WebContent/login.jsp
  • WebContent/dashboard.jsp
  • WebContent/WEB-INF/web.xml

Paste the code I provided earlier into these respective files.

✅ 6. Run the Application

  1. Right-click the project > Run As > Run on Server.
  2. Choose Tomcat and click Finish.
  3. Visit:
    http://localhost:8080/JavaEECRUD/login.jsp

Use this to login, and you’ll be redirected to dashboard.jsp if successful.

🔐 Quick Test User Insert (for Login Test)

Insert a user manually to test login:

sql

CopyEdit

INSERT INTO users (name, email, password)

VALUES (‘Test User’, ‘test@example.com’, ‘1234’);

--

--