文前提醒,本教程版本較老。如果您不是和我一樣被老師依然在用10多年前的教材所困,不得不硬着頭皮修改各種BUG實現這個實驗,而是出於自學緣故,建議不要閱讀本篇教程,而是找一個更新版本的去學習。
軟件框架及版本:
Stucts 1.2 + Spring 3.0 + Hibernate3.3,J2EE 5.0,MyEclipse8.5
事先准備工作:
1.安裝JDK,MyEclipse(只測試了8.5),MySQL,JDBC(高版本可能報錯),Navicat for MySQL(可選)
2.新建數據表:
create database test;
use test;
CREATE TABLE `user` (
`id` INTEGER NOT NULL auto_increment,
`username` varchar(40) character set utf8 NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL
PRIMARY KEY (`id`)
)DEFAULT CHARSET=utf8;
COLLATE=utf8_unicode_ci;
insert into user values(null, 'test', '123');
將上述語句輸入MySQL終端或Navicat等可視化軟件
SSH框架搭建步驟
1.新建一個項目。打開MyEclipse,新建一個Web項目,起名就叫SSH吧,點擊完成,若彈出提示點Yes即可。
新建項目
Web Project
2.添加Struts框架。右鍵這個項目,選擇MyEclipse->Add Struts Capabilities。 在彈出的菜單中把包的路徑改一下, Base package for new classes選項中的路徑com.yourcompany.struts改成com.sshlogin.struts, 點擊完成。
image.png
image.png
3.添加Spring框架。右鍵這個項目,選擇MyEclipse->Add Spring Capabilities。在菜單中選擇如下6個庫,點擊下一步。更改Folder路徑,選擇SSH項目WebRoot文件夾下的WEB-INF,完成。
image.png
image.png
image.png
image.png
image.png
4.連接數據庫。點擊右上角的圖標"打開透視圖",選擇MyEclipse Database Explorer。在窗口中右鍵->New 新建一個數據庫連接。
image.png
Driver template 選擇 MySQL Connector/J
Driver name 起名叫test
Connection URL 更改為jdbc:mysql://自己的IP地址:端口號/數據庫名稱
User name 填寫MySQL的用戶名
Password 填寫MySQL的密碼
Driver JARs 點擊Add JARs按鈕,瀏覽到事先准備的 mysql-connector-java-5.0.8-bin.jar
Save password 選上(JDBC版本過高可能會導致連接失敗)
image.png
點擊Test Driver,測試結果:數據庫配置正確,點擊完成。
image.png
雙擊添加的test連接,展開目錄,可以發現我們事先創建的user表。
image.png
image.png
5.添加Hibernate框架。右鍵SSH項目,選擇MyEclipse->Add Spring Capabilities。點擊下一步。配置中選擇第二項"Spring configuration file"。把Spring與Hibernate整合到一起,點擊下一步。
image.png
在菜單中選第二項"Existing Spring configuration file",點擊下一步。
image.png
DB Driver選擇在添加Spring框架時配置的test,點擊下一步。
image.png
取消Create SessionFactory class?這個選項,點擊完成。
image.png
現在的目錄結構如下,SSH框架大體搭建完成。
image.png
6.測試功能。
先部署一下項目,訪問首頁看看效果。選擇項目"Run As"->選擇MyEclipse Server Application。
image.png
等待一段時間的卡頓之后就可以看到初始主頁了,或者在瀏覽器中輸入 http://localhost:8080/SSHLogin/
image.png
登錄功能實現
切換到MyEclipse DataBase Explorer視圖,通過Spring框架的逆向工程功能把user表逆向成Java實體類。右鍵user表選擇"Hibernate Reverse Engineering"。
image.png
image.png
Java src folder 選擇SSH項目下的src文件夾。
Java package 填寫com.sshlogin.user
勾選前三個選項:Create POJO、Java Data Obect和Java Data Access Object。POJO類是數據庫表格所對應的Java類,JDO類是MyEclipse自動生成的對數據庫的一些操作,這里會封裝一些常用的操作,基本上可以滿足我們的各種需要了,選擇下一步。
image.png
Id Generator 選擇 native,點擊完成。
image.png
此時的目錄結構如下,我們可以看到系統生成了3個類,一個配置文件。 User 繼承自AbstractUser,是User表的實體類。
UserDAO 封裝了一些對數據庫的常用操作。
User.hbm.xml 是hibernate-mapping映射配置文件,配置了哪個 實體類映射哪個表,配置了實體類的哪個屬性映射表里的哪列。
如果這些東西不用hibernate生成,那么我們就要自己寫,要浪費很多時間,hibernate的作用就體現出來了。
image.png
現在來寫測試頁。打開WEB-INF文件夾下的struts-config.xml文件,切換到設計視圖(design)。右鍵->New->Form Action and JSP。
image.png
填寫Form表單屬性:
Use case: login
Name:loginForm
在下方Form Properties中添加兩個屬性
username: JSP input type text
password: JSP input type password
image.png
image.png
切換到JSP選項,填寫JSP屬性:
勾選Create JSP form
點擊完成。
image.png
此時的目錄結構如下,可以看到在WebRoot/form/下 生成了一個login.jsp頁。
image.png
現在添加兩個頁面:登錄成功頁和登錄失敗頁,實現登錄后的跳轉。
在WebRoot/jsp/下新建兩個JSP頁。起名為loginSuccess.jsp和loginFail.jsp。
image.png
image.png
在loginSuccess.jsp頁面body中添加"Login Successfully"。
在loginFail.jsp頁面body中添加" Login failed."。
也可以隨意換成其他的描述,中文可能會亂碼
image.png
把登錄頁、登錄成功頁、登錄失敗頁3個頁面相關聯。
切換到struts-config.xml的設計視圖。右鍵login.jsp->New->Forward。
image.png
loginSuccess:
選擇Local Action Forward
瀏覽Action Path:/login
填寫name:loginSuccess
瀏覽Path:/form/loginSuccess.jsp
完成
loginFail:
選擇Local Action Forward
瀏覽Action Path:/login
填寫name:loginFail
瀏覽Path:/form/loginFail.jsp
image.png
image.png
現在來寫具體的執行代碼。打開LoginAction.java。可以看到自動生成的代碼如下圖:
image.png
將代碼修改如下
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.sshlogin.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sshlogin.struts.form.LoginForm;
import com.sshlogin.user.User;
import com.sshlogin.user.UserDAO;
/**
* MyEclipse Struts
* Creation date: 06-06-2018
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/form/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String username = loginForm.getUsername();
String password = loginForm.getPassword();
User instance = new User();
instance.setUsername(username);
instance.setPassword(password);
ClassPathXmlApplicationContext beans = new ClassPathXmlApplicationContext("../applicationContext.xml");
UserDAO userDAO = (UserDAO)beans.getBean("UserDAO");
List<?> list = userDAO.findByExample(instance);
if(list.size() > 0){
return mapping.findForward("loginSuccess");
}
return mapping.findForward("loginFail");
}
}
重啟服務器,測試登陸功能,輸入上面插入的測試數據,test,123
image.png
image.png
image.png
image.png
至此登陸功能就已經完成了,感謝你的瀏覽。另外希望軟件架構老師換本新一點教材和實驗。
本文在這個教程基礎上進行改編:SSH框架搭建詳細圖文教程,如果有更多需求可以參考這個教程
