使用MyBatis和Spring构建Java Web应用程序
這篇文章將展示如何在Spring環境中使用帶有MyBatis框架的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應用程序項目支持MyBatis框架,請將以下依賴項添加到現有pom.xml中:
- mybatis(用于MyBatis支持)
- mybatis-spring(用于MyBatis-Spring集成支持)
- jstl,spring-webmvc,servlet-api和spring-context-support(用于Spring支持)
- Spring測試(如果需要Spring測試支持,則可以是可選的)
- mysql-connector-java(用于MYSQL支持)
3.修改web.xml
修改web.xml的內容以包括以下內容:
- 一個servlet,并為其指定配置文件的位置。 在此示例中,在項目布局的WEB-INF / config文件夾下創建了一個名為springConfig.xml的配置文件。
- Servlet映射,以映射在上一步中創建的servlet,當客戶端指定與url模式匹配的url時應調用該servlet。
4.創建Spring配置文件
在文件夾WEB-INF / config下創建一個Spring Bean配置文件。 如果STS(Spring Tool Suite)是IDE,請繼續啟用context,mvc和tx命名空間。 springConfig.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"xmlns:tx="http://www.springframework.org/schema/tx"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/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.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,可以在其中指定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,以進行范圍界定/控制事務,它將上面定義的數據源作為參考(從屬)
<tx:annotation-driven transaction-manager="transactionManager" /> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /> </bean>談到MyBatis的特定配置,包括sqlSessionFactory的bean,它是MyBatis應用程序中的中央配置。 該bean具有三個屬性– dataSource(已在上面配置)– typeAliasesPackage(此應用程序的模型類所在的位置)– mapperLocations(該模型的映射器xml文件所在的位置)–在此不需要,因為基于注釋的配置是代替使用)
有關更多詳細信息,請參見http://mybatis.github.io/mybatis-3/
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="typeAliasesPackage" value="com.github.elizabetht.model"/><property name="mapperLocations" value="classpath*:com/github/elizabetht/mappers/*.xml" /> </bean>包括sqlSession的bean
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory" /> </bean>接下來,最后,包含用于MapperScannerConfigurer的bean
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.github.elizabetht.mappers" /> </bean>5.創建用于學生注冊/登錄的JSP文件
在WEB-INF下創建一個名為“ jsp”的文件夾(在該文件夾中,如用于InternalResourceViewResolver bean的springConfig.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/StudentEnrollmentWithMyBatis/tree/master/src/main/webapp中找到此應用程序的webapp文件夾下的文件的參考鏈接。
6.為Controller,Model,Service和Mappers創建程序包
在src / main / java文件夾下為Spring Controller,Model和Service類分別創建軟件包。 還要在同一src / main / java文件夾下為MyBatis Mapper類創建一個包。
包創建后的項目示例快照如下所示:
7.為模型層創建類
在包com.github.elizabetht.model內創建一個名為Student.java的POJO類,以在注冊過程中包含Student模型實體的詳細信息。 在同一個包com.github.elizabetht.model中創建另一個名為StudentLogin.java的POJO類,以包含Student Login詳細信息。
可以在https://github.com/elizabetht/StudentEnrollmentWithMyBatis/tree/master/src/main/java/com/github/elizabetht/model中找到指向Model類文件的參考鏈接。
8.為MyBatis Mapper創建類
MyBatis框架中的Mapper與Spring環境中的Repository層相似。 原始SQL查詢在此取代。 在包com.github.elizabetht.mapper中創建一個名為StudentMapper.java的接口類,以支持數據庫操作。
為了應用程序的目的,需要兩種接口方法。
- 將學生注冊詳細信息插入數據庫
- 從數據庫驗證學生登錄詳細信息
9.創建服務層的類
在包com.github.elizabetht.service中創建一個名為StudentService.java的接口類,以支持服務層操作。
public interface StudentService {void insertStudent(Student student);boolean getStudentByLogin(String userName, String password);boolean getStudentByUserName(String userName); }在包com.github.elizabetht.service中創建一個名為StudentServiceImpl.java的服務層實現類(實際上是POJO)。 這就是應用程序邏輯的用途–將學生的詳細信息保存到數據庫中,或者從數據庫中驗證學生的(已保存)詳細信息。
@Service("studentService") public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentMapper studentMapper;@Transactionalpublic void insertStudent(Student student) { studentMapper.insertStudent(student);}public boolean getStudentByLogin(String userName, String password) { Student student = studentMapper.getStudentByUserName(userName);if(student != null && student.getPassword().equals(password)) {return true;}return false;}public boolean getStudentByUserName(String userName) {Student student = studentMapper.getStudentByUserName(userName);if(student != null) {return true;}return false;}}當將MyBatis與Spring結合使用時,可以將映射器直接注入服務層。 這可能是MyBatis的Spring集成的最強之處。 據我所知,這是唯一使您無需導入即可構建應用程序的工具。
@EduardoMacarron twitter.com/EduardoMacarron/...
10.創建控制器層的類
在包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(@ModelAttribute("student") Student student, Model model) {if(studentService.getStudentByUserName(student.getUserName())) {model.addAttribute("message", "User Name exists. Try another user name");return "signup";} else {studentService.insertStudent(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(@ModelAttribute("studentLogin") StudentLogin studentLogin) {boolean found = studentService.getStudentByLogin(studentLogin.getUserName(), studentLogin.getPassword());if (found) { return "success";} else { return "failure";}} }11.在MYSQL數據庫中創建數據庫模式
連接到將用于此應用程序的MySQL數據庫,并使用MySQL Workbench創建一個名為StudentEnrollment的新數據庫架構。 這是必需的,因為在springConfig.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;12.在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/StudentEnrollmentWithMyBatis/
13.克隆或下載代碼
如果使用git,請在此處克隆該項目的副本: https : //github.com/elizabetht/StudentEnrollmentWithMyBatis.git
如果不使用git,請在此處以ZIP或tar.gz文件下載項目: https : //github.com/elizabetht/StudentEnrollmentWithMyBatis/releases/tag/1.7
翻譯自: https://www.javacodegeeks.com/2014/02/building-java-web-application-using-mybatis-with-spring.html
總結
以上是生活随笔為你收集整理的使用MyBatis和Spring构建Java Web应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win装Linux(win 装linux
- 下一篇: Java 8中的5个功能将改变您的编码方