Spring Form, DAO with Spring

Required tag lib for spring form to be used
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
This is how form is used for spring
<form:form action="displayUserInfo" modelAttribute="user">
Name:<form:input path="name" required="true" placeholder="Enter your name"/><p/>
<form:errors path="name" cssStyle="color: red"/>
Gender Male: <form:radiobutton path="gender" value="male"/><p/>
female: <form:radiobutton path="gender" value="female"/><p/>

Country: <form:select path="country">
<form:option value="India"/>
<form:option value="China"/>
<form:option value="Usa"/>
<form:option value="Nepal"/>
</form:select>
<p/>
Introduction:<form:textarea path="introduction"/><p/>
Visited Countries:
Nawal: <form:checkbox path="visitedDistrict" value="Nawalparasi"/>
Chitwan: <form:checkbox path="visitedDistrict" value="Chitwan"/>
Dharan: <form:checkbox path="visitedDistrict" value="Dharan"/>
Pokhara: <form:checkbox path="visitedDistrict" value="Pokhara"/>

<input type="submit" value="Submit">
</form:form>

DAO With Spring
AppConfig.java
package com.mountech.spring.config;

import com.mountech.spring.DAO.AppDAOImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

@Configuration
public class AppConfig {

@Bean
public DataSource getDataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/project?serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("Mountech@123.com");
return dataSource;
}

@Bean(name="DAOBean")
public AppDAOImpl AppDAO(){
return new AppDAOImpl(getDataSource());
}
}
AppDaoImpl.java
package com.mountech.spring.DAO;

import com.mountech.spring.model.User;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AppDAOImpl implements AppDAO{
private DataSource dataSource = null;
public AppDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}


public List<User> getUserList() {
String SQL = "select * from users";
List<User> userList = new ArrayList<User>();
Connection con = null;
try{
con = dataSource.getConnection();
PreparedStatement stmt = con.prepareStatement(SQL);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
User temp = new User(rs.getInt("user_id"),
rs.getString("name"),
rs.getString("email")
);
userList.add(temp);
}
} catch (SQLException throwable) {
throwable.printStackTrace();
}
return userList;
}

public void addUser(User user) {
String SQL = "INSERT INTO users (name, email) VALUES(?, ?)";
try {
Connection con = dataSource.getConnection();
PreparedStatement stmt = con.prepareStatement(SQL);
stmt.setString(1, user.getName());
stmt.setString(2, user.getEmail());
stmt.execute();
stmt.close();
} catch (SQLException throwable) {
throwable.printStackTrace();
}
}

}
HomaController.java
package com.mountech.spring;

import com.mountech.spring.DAO.AppDAOImpl;
import com.mountech.spring.config.AppConfig;
import com.mountech.spring.model.User;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;


@Controller
public class HomeController {
@RequestMapping("/")
public ModelAndView home() {
ModelAndView modelAndView = new ModelAndView("index");
List<User> userList = new ArrayList<User>();
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
AppDAOImpl DAO = context.getBean("DAOBean", AppDAOImpl.class);
userList = DAO.getUserList();
modelAndView.addObject("userList", userList);
return modelAndView;
}

@RequestMapping("/addUser")
public String adduser(Model model, @Valid User user, BindingResult result){
if(result.hasErrors()){
model.addAttribute("user", user);
}else{
if(user.getEmail() != null || user.getName() != null){
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
AppDAOImpl DAO = context.getBean("DAOBean", AppDAOImpl.class);
DAO.addUser(user);
context.close();
return "forward:/";
}
}
return "addUser";
}
}
Redirection of adduser to adduser page
<a href="${pageContext.request.contextPath}/addUser">Add User</a>

Comments

Popular posts from this blog