SSH框架的用户登录小实例

SSH框架的用户登录小实例

一、概述

1.开发环境安装

1.1 JDK的安装

1.2 MyEclipse的安装

1.3 Tomcat的安装

1.4 Tomcat加载到MyEclipse

1.5开发环境的搭建

Mysql+Tomcat+Myeclipse9.1M1

二、SSH框架实例

1.SSH基本原理

SSH框架四个主要配置文件及关联关系的介绍:SSHstrutsspringhibernate的简称,简单来说,struts是控制用的,hibernate是操作数据库的,spring是用来解耦的。具体来说:

1struts 负责 web  .ActionFormBean 接收网页中表单提交的数据,然后通过 Action 进行处理,再 Forward 到对应的网页。在 struts.xml 中义 <action-mapping>, ActionServlet 会加载。

2) spring 负责业务层管理,即 Service (或 Manager).service  action 提供统计的调用接口,封装持久层的 DAO.也可以写一些自己的业务方法。统一的 javabean 管理方法,声明式事务管理,集成 Hiberante等。

3Hibernate,负责持久化层,完成数据库的增删改查操作,hibernate持久层,提供 OR/Mapping。它有一组 .hbm.xml 文件和 POJO, 是跟数据库中的表相对应的。然后定义 DAO ,这些是跟数据库打交道的类,它们会使用 PO 

 struts+spring+hibernate 的系统中,对象的调用流程是: jsp-> Action  > Service ->DAO ->Hibernate 。数据的流向是 ActionFormBean 接受用户的数据, Action 将数据从 ActionFromBean 中取出,封装成 VO value object值对象)或 PO(持久化对象),再调用业务层的 Bean 类,完成各种业务处理后再 forward 。而业务层 Bean 收到这个 PO 对象之后,会调用 DAO 接口方法,进行持久化操作。

spring:Aop管理事务控制,IoC管理各个组件的耦合,DaoTemplate作为常规持久层的快速开发模板

struts:控制层Action,页面标签和Model数据,调用业务层

Hibernate:负责数据库和对象的映射,负责DAO(Data Access Object:据访问)

spring整合hibernatestruts,只要在配好了applicationContext.xml,strutsaction中直接调用就可以了。hibernate访问数据库的操作都在spring中实现了,spring的调用又在stutsaction中实现了。通过以上思路这个ssh框架就连到了一起。

一般来说SSH框架主要包括四类配置文件web.xml,applicationcontext.xml(Spring),struts.xml(Struts),cfg.xml(Hibernate)

2.例程简介

    实现简单用户登录操作(用户名和密码均为admin),用户将看到一个登录页面,要求用户输入用户名以及密码。如果用户名以及密码都是admin,提示登录成功。否则提示登录失败。

首先需要导入框架所需要的jar包。导入jar包的方法是将所需要的jar包复制到所建工程目录/WebContent/WEB-INF/lib文件夹下。所需要的包如下图PIC1所示:

 

PIC2

最后得到的工程结构图如下所示:

3.创建工程搭建框架

3.1 新建一个工程

打开MyEclipse,进MyEclipse开发页面,新建一个web工程:

PIC3

 

3.2 MyEclipse中配置数据源

3.2.1Window选项中选择Show view选项中的Data Source Explorer,将其显示在控制台区域,如图所示:

PIC4

3.2.2 右键单击,选择new,弹出对话框,选择MySQL:如图所示

在工程的lib文件夹下选择数据库驱动jar

PIC5

注:驱动版本和jar包版本要一样。

点击右下角,Test Driver,如果出现以下对话框,说明数据源配置成功:

PIC6

 

3.3 SSH框架搭建

3.3.1 映射数据库

1.首先是用到Hibernate层将数据库映射对象,以后的我们操作数据库时只需要对对象进行操作,不需要再进入数据库操作。这部分主要用到两个文件,一个是将数据库建模,另一个是配置数据库的映射文件(.xml)

src文件夹下面,建立一个javacom.lyf.model,在这个包里建立一个UserLogin.java文件用来建模数据,语句如下:

PIC7

package com.lyf.model;

 

import java.io.Serializable;

 

public class UserLogin implements Serializable {

 

       // 字段(Fields

       private static final long serialVersionUID = 1L;

       private Integer id;

       private String username;

       private String pwd;

 

       // 默认的构造函数(default constructor

       public UserLogin() {

 

       }

 

       // 完全构造函数(full constructor

       public UserLogin(String username, String pwd) {

 

              this.username = username;

              this.pwd = pwd;

       }

 

       // 获得getset方法(Property accessors

 

       public Integer getId() {

              return id;

       }

 

       public void setId(Integer id) {

              this.id = id;

       }

 

       public String getUsername() {

              return username;

       }

 

       public void setUsername(String username) {

              this.username = username;

       }

 

       public String getPwd() {

              return pwd;

       }

 

       public void setPwd(String pwd) {

              this.pwd = pwd;

       }

 

}

数据库中id为主键,usernamepwd分别为用户名和密码。

2.使用MyEclipse反向工程生成配置文件和POJO(即数据库的映射文件(.hbm.xml))

【第一步】打开数据库设置器:依次单击【window-->Show View-->Other…如下图所示:

PIC8

 

在弹出的窗口ShowView中选择DBBrowser,如下图所示:PIC9

DBBrowser窗口中,选择显示的图标,单击右键执行新建命令,如下图示(PIC10

弹出Database Driver对话框,在此会要求我们配置数据库的相关信息,具体设置如下图所示,设置完成,单击Finish.PIC11

【第二步】引入hibernate配置文件:选中我们的Web工程,依次单击鼠标右键-->MyEclipse-->Add HibernateCapabilities… 如下图所示:(PIC12

在弹出的窗口中做如下设置:(PIC13                          

Next】,创建hibernate的配置文件(PIC14

Next】,指明hibernate与数据库的连接(PIC15)(由于在配置数据源的时候已经配置过了下面就是默认的)

Next】,创建HibernateSessionFactory类,用来获得session。如果前面没有设置包名,要先单击New创建新的包。(PIC16

单击【Finish】按钮

【第三步】添加hibernate映射文件和POJO

1.新建com.lyf.model

在前面设置的数据源上找到我们要操作的表:

DBBrowser中选中新建的数据源,单击鼠标右键并选择open connection..PIC17

输入数据库的用户名和密码,以创建连接:(PIC18

找到刚才新建的tb_ssh数据库,然后是TABLE,如下图所示:(PIC19

生成POJO:(PIC19

点击Next,配置映射类型(暂时未用到)(PIC20

点击Next,配置反向工程细节(PIC21

3.3.2 建立BO接口和接口的应用文件

bo接口放在文件夹com.lyf.bo,在这个文件夹下面建立UserLoginBo.java文件,具体内容如下:

package com.lyf.Bo;

 

import com.lyf.model.UserLogin;

 

public interface UserLoginBo {

              publicUserLogin findbyNameAndPwd(String name,String pwd);             //按用户名密码查找用户

}

在文件夹com.lyf.bo文件夹下建立继承实现接口的文件UserLoginBoImpl.java文件。具体内容如下:

package com.lyf.bo;

import java.util.List;

import org.hibernate.Query;

importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;

importorg.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

import com.lyf.model.UserLogin;

public class UserLoginBoImpl extendsHibernateDaoSupport implements UserLoginBo {

       @Override

       @Transactional(propagation= Propagation.REQUIRED, readOnly = true)

       publicUserLogin findbyNameAndPwd(String name, String pwd) {

              Queryq = getSession().createQuery("FROM UserLogin WHERE username=? and pwd =?");

              q.setString(0,name);

              q.setString(1,pwd);

              Listlist = q.list();

              if(list.isEmpty()){

                     System.out.println("登录失败");

                     returnnull;

              }else{

                     System.out.println("登录成功");

                     UserLoginuserLogin = (UserLogin) list.get(0);

                     returnuserLogin;

              }

       }

}

创建Session工厂,对数据进行持久化操作,对数据的每个操作都通过Session工厂来完成。

 ·SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory ·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 

MyEclipse反向工程,在文件夹com.lyf.model目录下建立文件会自动生成HibernateSessionFactory.java

3.3.3 业务逻辑层配置

以上主要涉及到Hibernate层的设置,接下来讨论spring层的文件配置:

主要包括业务逻辑接口和业务逻辑继承和实现的对象。(没有用到)

3.3.4 struts层配置

下面是struts层文件,主要涉及到action的创建,在文件夹com.lyf. action目录下有UserLoginAction.java文件,具体内容为:

package com.lyf.action;

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.apache.struts.action.DynaActionForm;

import com.lyf.bo.UserLoginBo;

import com.lyf.model.UserLogin;

public class UserLoginAction extends Action {

     //创建用户登录BO接口对象

       private UserLoginBo userLoginBo;

       public void setUserLoginBo(UserLoginBo userLoginBo) {

              this.userLoginBo = userLoginBo;

       }

       public ActionForward execute(ActionMapping mapping,ActionForm form,

                     HttpServletRequestrequest, HttpServletResponse response) {

              DynaActionFormuserLoginForm = (DynaActionForm) form;

              UserLoginuserLogin = userLoginBo.findbyNameAndPwd(userLoginForm

                            .getString("username"), userLoginForm.getString("pwd"));

              if (userLogin == null) {

                     request.setAttribute("error", "用户登录失败,用户名或密码不正确!");

                     return mapping.findForward("index");

              }else {

                     request.getSession().setAttribute("username",

                                   userLogin.getUsername());

                     request.getSession().setAttribute("id", userLogin.getId());

                     return mapping.findForward("welcome");

              }

       }

}

3.3.5 .xml文件配置 

配置好各层文件后下面配置.xml文件,将上述各个不同层次的文件连接起来。主要涉及到首先配置Hibernate与数据库相连接的文件hibernate.cfg.xml将其直接放在src文件夹下面,具体内容如下:

其次是struts配置文件,其主要内容是有不同的action组成,将structs.xml放在WebRoot/WebINF文件夹下。structs.xml文件内容如下:

 

接下来配置Spring配置文件applicationContext.xml,将这个文件放在WebContent\WEB-INF文件夹下面。具体内容如下:

最后配置Web.xml文件,其内容如下:

3.3.6 测试文件

编辑2jsp文件作为测试用,具体如下:

index.jsp主要用来登陆内容为:

Welocme.jsp当登陆成功时,跳转到此页面,具体内容为:

当登录失败时,跳转到此index.jsp页面

3.3.7 登陆测试

完成以上各步骤后,运行此项目,出现如下界面后(PCI22),

输入用户名admin密码admin得到PIC23。说明框架搭建成功。

 

 

 

窗体底端

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值