日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用Spring的Hibernate构建Java Web应用程序

發布時間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Spring的Hibernate构建Java Web应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章將展示如何在Spring環境中使用帶有Hibernate ORM的MYSQL DB創建學生注冊應用程序。 這是一個簡單的應用程序,旨在在注冊期間從用戶收集輸入詳細信息,將詳細信息保存在MYSQL DB中,并在登錄期間對它們進行身份驗證。

1.使用Maven模板創建Java Web應用程序項目

首先,在IDE中,通過為項目的GroupId和Artifact Id提供適當的值,使用maven-archetype-webapp模板創建Java Maven項目(基于字符串“ webapp”過濾目錄)。 下面顯示了示例Web應用程序目錄結構,其中包含標準部署描述符web.xml和Maven pom.xml。

2.更新pom.xml

為了使上述Maven Java Web Application項目在Spring框架中支持Hibernate ORM,請將以下依賴項添加到現有pom.xml中

  • jstl,spring-webmvc和servlet-api(用于Spring支持)
  • mysql-connector-java(用于MYSQL支持)
  • spring-jdbc(用于通過JDBC Spring進行數據訪問)
  • spring-orm(用于使用Spring進行ORM數據訪問)
  • spring-data-jpa(用于JPA支持)
  • hibernate-validator和hibernate-entitymanager(用于Hibernate支持)
  • jta(用于事務支持)
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.2.4.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.2.0.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.1.9.Final</version></dependency><dependency><groupId>javax.transaction</groupId><artifactId>jta</artifactId><version>1.1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>3.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.3.0.RELEASE</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></exclusion></exclusions></dependency>

3.修改web.xml

修改web.xml的內容以包括以下內容:

  • 一個servlet,并為其指定配置文件的位置。 在此示例中,在項目布局的WEB-INF / config文件夾下創建了一個名為springConfig.xml的配置文件。
  • Servlet映射,以映射在上一步中創建的servlet,當客戶端指定與url模式匹配的url時應調用該servlet。
  • 一個ContextLoaderListener,用于將spring與Web應用程序集成,并提供contextConfigLocation用于JPA的上下文文件。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>studentHibernateServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/servletConfig.xml</param-value></init-param> </servlet><servlet-mapping><servlet-name>studentHibernateServlet</servlet-name><url-pattern>*.html</url-pattern> </servlet-mapping><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:/jpaContext.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><display-name>Archetype Created Web Application</display-name> </web-app>

4.創建Spring配置文件

在文件夾WEB-INF / config下創建一個Spring Bean配置文件。 如果STS(Spring Tool Suite)是IDE,請繼續并啟用上下文和mvc命名空間。 servletConfig.xml將如下所示

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"></beans>

啟用所需的名稱空間后,包括以下內容(在<beans>和</ beans>標記之間),以指示該應用程序是注釋驅動的,并且是上下文組件掃描的基本包。

<mvc:annotation-driven /><context:component-scan base-package="com.github.elizabetht" />

包括Spring的bean InternalResourceViewResolver以查找jsp文件

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

包括用于指定屬性文件的Bean(稍后將對此進行詳細介紹),該文件將用于存儲自定義消息或屬性。 通過以下配置,可以在項目的src / main / resources文件夾下創建一個名為messages.properties的屬性文件。

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basename" value="messages" /> </bean>

5.創建persistence.xml

在項目的src / main / resources / META-INF文件夾下創建一個名為persistence.xml的文件,以定義JPA所需的持久性單元。 將以下內容添加到persistence.xml中,以定義名為punit的持久性單元。

<persistence xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="{http://java.sun.com/xml/ns/persistence} {http://java.sun.com/xml/ns/persistence_2_0.xsd}"version="2.0"><persistence-unit name="punit"></persistence-unit></persistence>

6.創建jpaContext.xml

按照web.xml中的定義,在項目的src / main / resources文件夾下創建一個名為jpaContext.xml的文件,以定義JPA和Hibernate相關的配置。 請注意,在Maven項目中src / main / resources文件夾下創建的任何文件都會由Maven自動添加到類路徑中。 如果STS(Spring Tool Suite)是IDE,請繼續啟用context,jpa和tx命名空間。 jpaContext.xml將如下所示

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"><beans>

啟用所需的名稱空間后,包括以下內容(在<beans>和</ beans>標記之間),以指示該應用程序是注釋驅動的,并且是jpa存儲庫掃描的基本包。

<context:annotation-config /><jpa:repositories base-package="com.github.elizabetht.repository" />

接下來,包括bean PersistenceAnnotationBeanPostProcessor。 這對于處理持久性單元,持久性上下文注釋以及注入與JPA相關的資源是必需的。

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

包括EntityManagerFactory的bean,該bean列出了各種與JPA相關的屬性/資源。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="persistenceUnitName" value="punit" /><property name="dataSource" ref="dataSource" /><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><property name="showSql" value="true" /></bean></property><property name="jpaPropertyMap"><map><entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /><entry key="hibernate.hbm2ddl.auto" value="validate" /><entry key="hibernate.format_sql" value="true" /></map></property></bean>

包括用于數據源的bean,可以在其中指定MYSQL DB的屬性,例如url,用戶名和密碼。 將<include connection url>替換為用于連接到MYSQL DB的實際連接URL。 同樣,將<include username>和<include password>替換為實際的用戶名和密碼值。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql//<include connection url>:3306/studentEnrollment?autoReconnect=true&createDatabaseIfNotExist=true&" /><property name="username" value="<include username>" /><property name="password" value="<include password>" /> </bean>

包括用于事務管理器的Bean,用于范圍/控制事務。

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /> </bean><tx:annotation-driven transaction-manager="transactionManager" />

從而結束了jpaContext.xml中的長配置

7.創建用于學生注冊/登錄的JSP文件

在WEB-INF下創建一個名為“ jsp”的文件夾(在該文件夾中,如InternalResourceViewResolver bean的servletConfig.xml中所示,在其中創建jsp文件)。

創建一個文件signup.jsp以包含一個表單,以獲取輸入詳細信息,例如學生的UserName,Password,FirstName,LastName,DateOfBirth和EmailAddress。 注冊頁面的快照如下:

接下來,創建一個文件login.jsp以包含帶有用戶名和密碼的表單。 登錄頁面的快照如下:

還要創建success.jsp來指示登錄成功,并創建failure.jsp來指示登錄失敗(這些只是用于顯示內容的頁面-不涉及處理邏輯)。

此應用程序使用twitter bootstrap http://getbootstrap.com/和http://bootswatch.com/united/作為樣式表。 它還使用日期選擇器樣式表在“學生注冊”頁面( http://www.eyecon.ro/bootstrap-datepicker/ )中為DateOfBirth字段彈出日歷。

可以在https://github.com/elizabetht/StudentEnrollmentWithSpring/tree/master/src/main/webapp中找到此應用程序的webapp文件夾下的文件的參考鏈接。

8.為Controller,Model,Repository和Service層類創建包

在src / main / java文件夾下為Spring Controller,Model,Repository和Service類分別創建軟件包。

包創建后的項目示例快照如下所示:

9.創建模型層的類

在包com.github.elizabetht.model內創建一個名為Student.java的POJO類,以在注冊過程中包含Student模型實體的詳細信息。 在同一個包com.github.elizabetht.model中創建另一個名為StudentLogin.java的POJO類,以包含Student Login詳細信息。

可以在https://github.com/elizabetht/StudentEnrollmentWithSpring/tree/master/src/main/java/com/github/elizabetht/model中找到到Model類文件的參考鏈接。

10.為存儲庫層創建類

在com.github.elizabetht.repository包內創建一個名為StudentRepository.java的接口類,以支持存儲庫層數據庫操作。

為了應用程序的目的,需要兩種接口方法。

  • 將學生注冊詳細信息插入數據庫
  • 從數據庫驗證學生登錄詳細信息
@Repository("studentRepository") public interface StudentRepository extends JpaRepository<Student, Long> {@Query("select s from Student s where s.userName = :userName")Student findByUserName(@Param("userName") String userName);}

Hibernate實現支持save()方法,因此數據插入不需要單獨的SQL語句。

11.創建服務層的類

在包com.github.elizabetht.service中創建一個名為StudentService.java的接口類,以支持服務層操作。

public interface StudentService {Student save(Student student);boolean findByLogin(String userName, String password);boolean findByUserName(String userName); }

在包com.github.elizabetht.service中創建一個名為StudentServiceImpl.java的服務層實現類(實際上是POJO)。 這就是應用程序邏輯的用途–將學生的詳細信息保存到數據庫中,或者從數據庫中驗證學生的(已保存)詳細信息。

@Service("studentService") public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentRepository studentRepository;@Transactionalpublic Student save(Student student) {return studentRepository.save(student);}public boolean findByLogin(String userName, String password) { Student stud = studentRepository.findByUserName(userName);if(stud != null && stud.getPassword().equals(password)) {return true;} return false; }public boolean findByUserName(String userName) {Student stud = studentRepository.findByUserName(userName);if(stud != null) {return true;}return false;}}

12.創建控制器層的類

在包com.github.elizabetht.controller中創建一個名為StudentController.java的控制器層POJO類。 這就是應用程序的路由邏輯的去向–無論是調用注冊還是登錄操作。

@Controller @SessionAttributes("student") public class StudentController {@Autowiredprivate StudentService studentService;@RequestMapping(value="/signup", method=RequestMethod.GET)public String signup(Model model) {Student student = new Student(); model.addAttribute("student", student); return "signup";}@RequestMapping(value="/signup", method=RequestMethod.POST)public String signup(@Valid @ModelAttribute("student") Student student, BindingResult result, Model model) { if(result.hasErrors()) {return "signup";} else if(studentService.findByUserName(student.getUserName())) {model.addAttribute("message", "User Name exists. Try another user name");return "signup";} else {studentService.save(student);model.addAttribute("message", "Saved student details");return "redirect:login.html";}}@RequestMapping(value="/login", method=RequestMethod.GET)public String login(Model model) { StudentLogin studentLogin = new StudentLogin(); model.addAttribute("studentLogin", studentLogin);return "login";}@RequestMapping(value="/login", method=RequestMethod.POST)public String login(@Valid @ModelAttribute("studentLogin") StudentLogin studentLogin, BindingResult result) {if (result.hasErrors()) {return "login";} else {boolean found = studentService.findByLogin(studentLogin.getUserName(), studentLogin.getPassword());if (found) { return "success";} else { return "failure";}}} }

13.創建messages.properties文件

如上所示,@ Valid批注用于驗證到達方法的表單的輸入參數,并將驗證結果存儲在BindingResult對象中。 為了驗證特定字段(請參閱為模型層創建的類– https://github.com/elizabetht/StudentEnrollmentWithSpring/tree/master/src/main/java/com/github/elizabetht/model ),請使用注釋像@ NotEmpty,@ Size,@ Email和@NotNull,它們來自Hibernate Validator的各種驗證。

在messages.properties文件中指定了當上述任何一個驗證器失敗時應顯示的定制消息。 在src / main / resources文件夾下創建一個名為messages.properties的文件,并包含以下內容

NotEmpty=Field cannot be blank NotNull=Field cannot be blankEmail=Email Address not valid/well-formed Past=Date of Birth must be in the past Size={0} must be between {2} and {1} characters long typeMismatch=Invalid format

14.在MYSQL數據庫中創建數據庫模式

連接到將用于此應用程序的MySQL數據庫,并使用MySQL Workbench創建一個名為StudentEnrollment的新數據庫架構。 這是必需的,因為在jpaContext.xml的dataSource bean中指定了StudentEnrollment的數據庫模式名稱。

一旦創建了StudentEnrollment DB Schema,就可以使用CREATE TABLE語句在DB Schema中創建一個名為Student的表,如下所示:

CREATE TABLE `student` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`dateOfBirth` datetime NOT NULL,`emailAddress` varchar(255) NOT NULL,`firstName` varchar(255) NOT NULL,`lastName` varchar(255) NOT NULL,`password` varchar(8) NOT NULL,`userName` varchar(20) NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;

15.在Tomcat服務器上部署應用程序

完成上述步驟并成功構建項目后,即可準備將Java Web應用程序部署在Tomcat Server 7上。

右鍵單擊項目,然后選擇“運行方式->在服務器上運行”選項,可以將Java Web應用程序本地部署。

通過將WAR文件(右鍵單擊項目并選擇“導出為WAR文件”選項)復制到/ var / lib / tomcat7文件夾(或適當的tomcat目錄),然后重新啟動tomcat,可以在支持Tomcat的任何本機服務器上遠程部署該文件。服務器。

此應用程序可在此處進行演示: http : //ec2-23-20-137-135.compute-1.amazonaws.com : 8080/StudentEnrollmentWithSpring/

16.克隆或下載代碼

如果使用git,請在此處克隆該項目的副本: https : //github.com/elizabetht/StudentEnrollmentWithSpring.git

如果不使用git,請在此處以ZIP或tar.gz文件下載項目: https : //github.com/elizabetht/StudentEnrollmentWithSpring/releases/tag/1.6

參考: “ 我的實驗與技術”博客中的JCG合作伙伴伊麗莎白·托馬斯(Elizabeth Thomas) 使用Hibernate With Spring構建Java Web應用程序 。

翻譯自: https://www.javacodegeeks.com/2014/03/building-java-web-application-using-hibernate-with-spring.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的使用Spring的Hibernate构建Java Web应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。