WEB Services by SpringMVC

WebServices ... Spring MVC project...


Project Structure



AppConfig.java

package com.app.configuration;


import java.util.Properties;


import org.hibernate.Transaction;

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.orm.hibernate5.HibernateTransactionManager;

import org.springframework.orm.hibernate5.LocalSessionFactoryBean;

import org.springframework.transaction.annotation.EnableTransactionManagement;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import org.springframework.web.servlet.view.InternalResourceViewResolver;


import com.app.model.User;

@Configuration

@EnableWebMvc

@ComponentScan(basePackages = "com.app")

@EnableTransactionManagement

public class AppConfig implements WebMvcConfigurer {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/images/**").addResourceLocations("/images/");

}

@Bean

public InternalResourceViewResolver viewResolver() {

return new InternalResourceViewResolver("/WEB-INF/views/", ".jsp");

}

@Bean

public DriverManagerDataSource dataSource() {

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/attendence_app");

dataSource.setUsername("root");

dataSource.setPassword("mysql");

return dataSource;

}


@Bean

public LocalSessionFactoryBean sessionFactory() {

LocalSessionFactoryBean localSession = new LocalSessionFactoryBean();

localSession.setAnnotatedClasses(User.class);

localSession.setDataSource(dataSource());

localSession.setHibernateProperties(hibernateProperties());

return localSession;

}


public Properties hibernateProperties() {

Properties properties = new Properties();

properties.put("hibernate.show_sql", "true");

properties.put("hibernate.format_sql", "true");

properties.put("hibernate.hbm2ddl.auto", "update");

return properties;

}


@Bean

public HibernateTransactionManager transaction() {

HibernateTransactionManager transactionManager = new HibernateTransactionManager();

transactionManager.setSessionFactory(sessionFactory().getObject());

return transactionManager;

}

}


FrontController.java

package com.app.controller;

import org.springframework.stereotype.Controller;

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

import com.app.configuration.AppConfig;

@Controller

public class FrontController extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override

protected Class<?>[] getRootConfigClasses() {

return new Class[] { AppConfig.class };

}

@Override

protected Class<?>[] getServletConfigClasses() {

// TODO Auto-generated method stub

return null;

}

@Override

protected String[] getServletMappings() {

return new String[] { "/" };

}

}


PageController.java

package com.app.controller;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

@Controller

public class PageController {

@GetMapping("/")

public String Welcome() {

return "index";

}

@GetMapping("/register")

public String register() {

return "register";

}

@GetMapping("/signin")

public String login() {

return "login";

}

@GetMapping("/logout")

public String Logout(HttpSession session) {

session.removeAttribute("user");

session.invalidate();

return "index";

}

@GetMapping("/profile")

public String profile() {

return "profile";

}

}

UserController.java

package com.app.controller;

import javax.servlet.http.HttpSession;

import org.hibernate.Session;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;


import com.app.dao.UserDao;

import com.app.model.User;

@Controller

public class UserController {

@Autowired

private UserDao userdao;

@PostMapping("/signup")

public String signUp(User user) {

int i = userdao.insert(user);

return "index";

}

@PostMapping("/login")

public String login(String email, String pass, HttpSession session) {

User user = userdao.login(email, pass);

if (user != null) {

session.setAttribute("user", user);

}

return "redirect:/home";

}

@GetMapping("/home")

public String loginredirect() {

return "index";

}

@PostMapping("/update")

public String update(User currentUser, HttpSession session) {

User user = (User) session.getAttribute("user");

user.setName(currentUser.getName());

user.setPass(currentUser.getPass());

int i = userdao.update(user);

return "profile";

}

}

UserDao.java

package com.app.dao;

import com.app.model.User;

public interface UserDao {

int insert(User user);

User login(String email, String pass);

int update(User user);

}


UserDaoImpl.java

package com.app.dao;


import javax.transaction.Transactional;

import org.hibernate.SessionFactory;

import org.hibernate.query.Query;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Repository;

import com.app.model.User;

@Repository

public class UserDaoImpl implements UserDao {

@Autowired

private SessionFactory session;

@Transactional

@Override

public int insert(User user) {

int i = 0;

session.getCurrentSession().save(user);

i = 1;

return i;

}


@Transactional

@Override

public User login(String email, String pass) {

Query query = session.getCurrentSession().createQuery("from User where email=:email and pass=:pass");

query.setParameter("email", email);

query.setParameter("pass", pass);

if (query.getResultList().size() > 0) {

return (User) query.getResultList().get(0);

} else {

return null;

}

}


@Transactional

@Override

public int update(User user) {

int i = 0;

session.getCurrentSession().update(user);

i = 1;

return i;

}

}


User.java

package com.app.model;


import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import org.hibernate.validator.constraints.Length;


@Entity

@Table(name = "user")

public class User {

@Length(max = 10)

private String name;

@Id

private String email;

@Length(max = 30)

private String pass;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

}


pom.xml


<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.2.4.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.17.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.1.GA</version> </dependency> </dependencies>




Comments

Popular posts from this blog

JAVA is both compiled and an interpreted language, JDM.