Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
6 views8 pages

Knowledge Prerequisites

Uploaded by

sanchibagde369
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views8 pages

Knowledge Prerequisites

Uploaded by

sanchibagde369
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Knowledge Prerequisites

Understanding of:
 Core Java
o Classes, Objects, Inheritance, Interfaces, Collections

 Servlets & JSP


o Request/response lifecycle, web.xml,filter, RequestDispatcher, form
handling
 Spring Framework Basics
o Inversion of Control (IoC), Dependency Injection (DI), MVC pattern

 JDBC (Java Database Connectivity)


o Establishing DB connections, executing SQL queries

 HTML, CSS, and Bootstrap


o For structuring and styling the UI

 JavaScript & jQuery


o DOM manipulation, event handling, and AJAX basics

 SQL
o Writing CREATE, INSERT, SELECT, UPDATE, and DELETE statements

📁 Project Structure

src/main/java
├── controller
├── service
├── dao
├── model
├── config

src/main/webapp
├── WEB-INF
│ ├── jsp
│ ├── web.xml
│ ├── spring-config.xml
└── static
├── css
├── js

💾 Database Table

CREATE TABLE users (


id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
country VARCHAR(100)
);

⚙️Spring Configuration
web.xml
<web-app>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</
servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

spring-config.xml

<context:component-scan base-package="com.example" />

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

<tx:annotation-driven />

🧩 Model Class

public class User {


private int id;
private String name;
private String email;
private String country;

// Getters and Setters


}

DAO Layer
Interface
public interface UserDao {
List<User> getAllUsers();
void saveUser(User user);
User getUserById(int id);
void updateUser(User user);
void deleteUser(int id);
}

Implementation

@Repository
public class UserDaoImpl implements UserDao {

@Autowired
private JdbcTemplate jdbcTemplate;

public List<User> getAllUsers() {


return jdbcTemplate.query("SELECT * FROM users", new
BeanPropertyRowMapper<>(User.class));
}

public void saveUser(User user) {


String sql = "INSERT INTO users (name, email, country) VALUES (?, ?, ?)";
jdbcTemplate.update(sql, user.getName(), user.getEmail(),
user.getCountry());
}

public User getUserById(int id) {


return jdbcTemplate.queryForObject("SELECT * FROM users WHERE id=?",
new Object[]{id},
new BeanPropertyRowMapper<>(User.class));
}

public void updateUser(User user) {


String sql = "UPDATE users SET name=?, email=?, country=? WHERE id=?";
jdbcTemplate.update(sql, user.getName(), user.getEmail(),
user.getCountry(), user.getId());
}
public void deleteUser(int id) {
jdbcTemplate.update("DELETE FROM users WHERE id=?", id);
}
}

🧠 Service Layer
public interface UserService {
List<User> getAllUsers();
void saveUser(User user);
User getUserById(int id);
void updateUser(User user);
void deleteUser(int id);
}

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;

public List<User> getAllUsers() { return userDao.getAllUsers(); }

public void saveUser(User user) { userDao.saveUser(user); }

public User getUserById(int id) { return userDao.getUserById(id); }

public void updateUser(User user) { userDao.updateUser(user); }

public void deleteUser(int id) { userDao.deleteUser(id); }


}

🧭 Controller Layer
@Controller
@RequestMapping("/users")
public class UserController {

@Autowired
private UserService userService;

@GetMapping("/")
public String listUsers(Model model) {
model.addAttribute("users", userService.getAllUsers());
return "list";
}

@GetMapping("/new")
public String showNewForm(Model model) {
model.addAttribute("user", new User());
return "form";
}

@PostMapping("/save")
public String saveUser(@ModelAttribute("user") User user) {
userService.saveUser(user);
return "redirect:/users/";
}

@GetMapping("/edit/{id}")
public String editForm(@PathVariable int id, Model model) {
model.addAttribute("user", userService.getUserById(id));
return "form";
}

@GetMapping("/delete/{id}")
public String deleteUser(@PathVariable int id) {
userService.deleteUser(id);
return "redirect:/users/";
}
}

JSP Views

<table class="table table-bordered">


<tr><th>ID</th><th>Name</th><th>Email</th><th>Actions</th></tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
<td>
<a href="/users/edit/${user.id}" class="btn btn-warning">Edit</a>
<a href="/users/delete/${user.id}" class="btn
btn-danger">Delete</a>
</td>
</tr>
</c:forEach>
</table>

form.jsp

<form action="/users/save" method="post">


<input type="hidden" name="id" value="${user.id}" />
<input type="text" name="name" value="${user.name}"
placeholder="Name" />
<input type="email" name="email" value="${user.email}"
placeholder="Email" />
<input type="text" name="country" value="${user.country}"
placeholder="Country" />
<button type="submit" class="btn btn-success">Save</button>
</form>

🧩 jQuery Interactivity
<script>
$(".btn-danger").click(function(e){
if(!confirm("Are you sure?")) e.preventDefault();
});
</script>

You might also like