SSH框架實現登陸界面


文前提醒,本教程版本較老。如果您不是和我一樣被老師依然在用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即可。

5363693-224ef729a3df0907.png
新建項目

5363693-af1d8c6323637259.png
Web Project

2.添加Struts框架。右鍵這個項目,選擇MyEclipse->Add Struts Capabilities。 在彈出的菜單中把包的路徑改一下, Base package for new classes選項中的路徑com.yourcompany.struts改成com.sshlogin.struts, 點擊完成。
5363693-6c10a9ca0fc0e3fe.png
image.png

5363693-defebc1724a8d29b.png
image.png

3.添加Spring框架。右鍵這個項目,選擇MyEclipse->Add Spring Capabilities。在菜單中選擇如下6個庫,點擊下一步。更改Folder路徑,選擇SSH項目WebRoot文件夾下的WEB-INF,完成。
5363693-7675f97f1a9e61f1.png
image.png

5363693-3d8c26997ba25f5d.png
image.png

5363693-67b77c8f14292cfc.png
image.png

5363693-61cbd9c7dc868af9.png
image.png

5363693-7cc38dfa4d3be77d.png
image.png

4.連接數據庫。點擊右上角的圖標"打開透視圖",選擇MyEclipse Database Explorer。在窗口中右鍵->New 新建一個數據庫連接。
5363693-3da2060fd420509b.png
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版本過高可能會導致連接失敗)
5363693-42268c2bacdbdea0.png
image.png

點擊Test Driver,測試結果:數據庫配置正確,點擊完成。
5363693-ad49c03db4f807ad.png
image.png

雙擊添加的test連接,展開目錄,可以發現我們事先創建的user表。
5363693-6ccf0e44d38188d9.png
image.png

5363693-057c1e330178e7fc.png
image.png

5.添加Hibernate框架。右鍵SSH項目,選擇MyEclipse->Add Spring Capabilities。點擊下一步。配置中選擇第二項"Spring configuration file"。把Spring與Hibernate整合到一起,點擊下一步。
5363693-edd50943ab316174.png
image.png

在菜單中選第二項"Existing Spring configuration file",點擊下一步。
5363693-7a4b3ee77a07f573.png
image.png

DB Driver選擇在添加Spring框架時配置的test,點擊下一步。
5363693-945ea8a53ce5f35f.png
image.png

取消Create SessionFactory class?這個選項,點擊完成。
5363693-e5b0e4702ff1d8d9.png
image.png

現在的目錄結構如下,SSH框架大體搭建完成。
5363693-ff5cf55b86e8ea7d.png
image.png

6.測試功能。

先部署一下項目,訪問首頁看看效果。選擇項目"Run As"->選擇MyEclipse Server Application。

5363693-4e8dc8fb1113535b.png
image.png

等待一段時間的卡頓之后就可以看到初始主頁了,或者在瀏覽器中輸入 http://localhost:8080/SSHLogin/
5363693-b9f0413d8fbf6d3c.png
image.png

登錄功能實現

切換到MyEclipse DataBase Explorer視圖,通過Spring框架的逆向工程功能把user表逆向成Java實體類。右鍵user表選擇"Hibernate Reverse Engineering"。

5363693-b55025ae65bfd2aa.png
image.png

5363693-d17b5c7f18637eb1.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自動生成的對數據庫的一些操作,這里會封裝一些常用的操作,基本上可以滿足我們的各種需要了,選擇下一步。
5363693-c385be7859e82154.png
image.png

Id Generator 選擇 native,點擊完成。
5363693-9f54d4dab32f89cc.png
image.png

此時的目錄結構如下,我們可以看到系統生成了3個類,一個配置文件。 User 繼承自AbstractUser,是User表的實體類。
UserDAO 封裝了一些對數據庫的常用操作。
User.hbm.xml 是hibernate-mapping映射配置文件,配置了哪個 實體類映射哪個表,配置了實體類的哪個屬性映射表里的哪列。
如果這些東西不用hibernate生成,那么我們就要自己寫,要浪費很多時間,hibernate的作用就體現出來了。
5363693-b9e0368b21d37e5e.png
image.png

現在來寫測試頁。打開WEB-INF文件夾下的struts-config.xml文件,切換到設計視圖(design)。右鍵->New->Form Action and JSP。
5363693-c389b87193c7e0d7.png
image.png

填寫Form表單屬性:
Use case: login
Name:loginForm
在下方Form Properties中添加兩個屬性
username: JSP input type text
password: JSP input type password
5363693-0bdf80963c9f9e63.png
image.png

5363693-6fabecfb5286a50c.png
image.png

切換到JSP選項,填寫JSP屬性:
勾選Create JSP form
點擊完成。
5363693-e67ba40b7cfb9daf.png
image.png

此時的目錄結構如下,可以看到在WebRoot/form/下 生成了一個login.jsp頁。
5363693-9daedc52eb232bff.png
image.png

現在添加兩個頁面:登錄成功頁和登錄失敗頁,實現登錄后的跳轉。
在WebRoot/jsp/下新建兩個JSP頁。起名為loginSuccess.jsp和loginFail.jsp。
5363693-93a64469a87158d1.png
image.png

5363693-c6c1c91cda23715d.png
image.png

在loginSuccess.jsp頁面body中添加"Login Successfully"。
在loginFail.jsp頁面body中添加" Login failed."。
也可以隨意換成其他的描述,中文可能會亂碼
5363693-5d32e71992493737.png
image.png

把登錄頁、登錄成功頁、登錄失敗頁3個頁面相關聯。
切換到struts-config.xml的設計視圖。右鍵login.jsp->New->Forward。
5363693-430eaaec66512d47.png
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
5363693-50e7c49a8f89706d.png
image.png

5363693-6a694b14658da742.png
image.png

現在來寫具體的執行代碼。打開LoginAction.java。可以看到自動生成的代碼如下圖:
5363693-491b5d93e2329052.png
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


5363693-17ffeb62db4e1389.png
image.png

5363693-4385c6bbbc02551d.png
image.png

5363693-2bdf808575b8bd48.png
image.png

5363693-b9fd16ce88b749ac.png
image.png

至此登陸功能就已經完成了,感謝你的瀏覽。另外希望軟件架構老師換本新一點教材和實驗。

本文在這個教程基礎上進行改編:SSH框架搭建詳細圖文教程,如果有更多需求可以參考這個教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM