5. Spring MVC user registration and login example using JdbcTemplate + MySQL

Spring MVC user registration and login example using JdbcTemplate + MySQL
https://www.websparrow.org/spring/spring-mvc-user-registration-and-login-example-using-jdbctemplate-mysql


============================================================================================================
POM.XML
============================================================================================================

------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------


<dependencies>
<!-- spring mvc dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- spring jdbc dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!-- mysql databse connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>



============================================================================================================
MODEL
============================================================================================================

------------------------------------------------------------------------------------------------------------
User 
------------------------------------------------------------------------------------------------------------

package org.websparrow.model;

public class User {

// Generate Getters and Setters...
private String userId, password;
}



============================================================================================================
DAO
============================================================================================================

------------------------------------------------------------------------------------------------------------
UserDao 
------------------------------------------------------------------------------------------------------------


package org.websparrow.dao;

import org.websparrow.model.User;

public interface UserDao {

public int registerUser(User user);

public String loginUser(User user);

}

------------------------------------------------------------------------------------------------------------
UserDaoImpl 
------------------------------------------------------------------------------------------------------------


package org.websparrow.dao;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.websparrow.model.User;

public class UserDaoImpl implements UserDao {

private JdbcTemplate jdbcTemplate;

public UserDaoImpl(DataSource dataSoruce) {
jdbcTemplate = new JdbcTemplate(dataSoruce);
}

@Override
public int registerUser(User user) {
String sql = "INSERT INTO USER_DATA VALUES(?,?)";

try {
int counter = jdbcTemplate.update(sql, new Object[] { user.getUserId(), user.getPassword() });

return counter;

} catch (Exception e) {
e.printStackTrace();
return 0;
}
}

@Override
public String loginUser(User user) {
String sql = "SELECT USER_ID FROM USER_DATA WHERE USER_ID=? AND USER_PASS=?";
try {

String userId = jdbcTemplate.queryForObject(sql, new Object[] {
user.getUserId(), user.getPassword() }, String.class);

return userId;
} catch (Exception e) {
return null;
}
}
}




------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------


List<String> users = jdbcTemplate.queryForList(sql, new Object[] { user.getUserId(), user.getPassword() },String.class);
if (users.isEmpty()) {
return null;
} else {
return users.get(0);
}



============================================================================================================
CONFIG
============================================================================================================

------------------------------------------------------------------------------------------------------------
FrontControllerConfig 
------------------------------------------------------------------------------------------------------------

package org.websparrow.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class FrontControllerConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {

return new Class[] { WebMvcConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {

return null;
}

@Override
protected String[] getServletMappings() {

return new String[] { "/" };
}

}


------------------------------------------------------------------------------------------------------------
WebMvcConfig 
------------------------------------------------------------------------------------------------------------

package org.websparrow.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.websparrow.dao.UserDao;
import org.websparrow.dao.UserDaoImpl;

@Configuration
@EnableWebMvc
@ComponentScan("org.websparrow")
public class WebMvcConfig {

@Bean
InternalResourceViewResolver viewResolver() {

InternalResourceViewResolver vr = new InternalResourceViewResolver();

vr.setPrefix("/");
vr.setSuffix(".jsp");
return vr;

}

@Bean
DriverManagerDataSource getDataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/websparrow");
ds.setUsername("root");
ds.setPassword("");

return ds;

}

@Bean
public UserDao getUserDao() {
return new UserDaoImpl(getDataSource());
}

}



============================================================================================================
CONTROLLER
============================================================================================================
------------------------------------------------------------------------------------------------------------
UserRegistrataionController 
------------------------------------------------------------------------------------------------------------


package org.websparrow.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.UserDao;
import org.websparrow.model.User;

@Controller
public class UserRegistrataionController {

@Autowired
private UserDao userDao;

@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView userRegistration(@RequestParam("userId") String userId,
@RequestParam("password") String password) {

ModelAndView mv = new ModelAndView();

User user = new User();
user.setUserId(userId);
user.setPassword(password);

int counter = userDao.registerUser(user);

if (counter > 0) {
mv.addObject("msg", "User registration successful.");
} else {
mv.addObject("msg", "Error- check the console log.");
}

mv.setViewName("registration");

return mv;

}

}

------------------------------------------------------------------------------------------------------------
UserLoginController 
------------------------------------------------------------------------------------------------------------

package org.websparrow.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.websparrow.dao.UserDao;
import org.websparrow.model.User;

@Controller
public class UserLoginController {

@Autowired
private UserDao userDao;

@RequestMapping(value = "/login", method = RequestMethod.POST)
public ModelAndView userLogin(@RequestParam("userId") String userId, @RequestParam("password") String password) {

ModelAndView mv = new ModelAndView();

User user = new User();
user.setUserId(userId);
user.setPassword(password);

String name = userDao.loginUser(user);

if (name != null) {

mv.addObject("msg", "Welcome " + name + ", You have successfully logged in.");
mv.setViewName("welcome");

} else {

mv.addObject("msg", "Invalid user id or password.");
mv.setViewName("login");
}

return mv;

}

}


============================================================================================================
VIEW
============================================================================================================
------------------------------------------------------------------------------------------------------------
registration.jsp
------------------------------------------------------------------------------------------------------------

<%@ page isELIgnored="false"%>
<html>
<head>
<title>Spring MVC user registration and login example using JdbcTemplate + MySQL</title>
</head>
<body>
<h3>Spring MVC user registration and login example using JdbcTemplate + MySQL</h3>

<form action="register" method="post">
<pre>
    <strong>Register Here | <a href="login.jsp">Click here to Login</a></strong>
User Id: <input type="text" name="userId" />
Password: <input type="password" name="password" />
<input type="submit" value="Register" />
</pre>
</form>

${msg}
</body>
</html>
------------------------------------------------------------------------------------------------------------
login.jsp
------------------------------------------------------------------------------------------------------------

<%@ page isELIgnored="false"%>
<html>
<head>
<title>Spring MVC user registration and login example using JdbcTemplate + MySQL</title>
</head>
<body>
<h3>Spring MVC user registration and login example using JdbcTemplate + MySQL</h3>

<form action="login" method="post">
<pre>
<strong>Login Here | <a href="registration.jsp">Click here to Register</a></strong>
User Id: <input type="text" name="userId" />
Password: <input type="password" name="password" />

<input type="submit" value="Login" />
</pre>
</form>
${msg}
</body>
</html>
------------------------------------------------------------------------------------------------------------
welcome.jsp
------------------------------------------------------------------------------------------------------------

<%@ page isELIgnored="false"%>
<html>
<head>
<title>Spring MVC user registration and login example using JdbcTemplate + MySQL</title>
</head>

<body>

${msg}

</body>
</html>
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------

No comments:

Post a Comment