• 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框架搭建详细图文教程,如果有更多需求可以参考这个教程

  • 相关阅读:
    【NIO】IO与NIO的区别
    【在线工具】java开发常用在线工具
    【JVM】符号引用和直接引用
    【多线程】公平锁/非公平锁、乐观锁/悲观锁
    【Jenkins、sonar】
    开源软件记录
    Git Flow
    CF1324A Yet Another Tetris Problem 题解
    洛谷 P1199 三国游戏 题解
    CF33C Wonderful Randomized Sum 题解
  • 原文地址:https://www.cnblogs.com/ZKin/p/9471041.html
Copyright © 2020-2023  润新知