WEB Services by SpringMVC
WebServices ... Spring MVC project...
Project Structure
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[] { "/" };
}
}
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";
}
}
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;
}
}
<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
Post a Comment