取消

源码库积分购买,一块钱一积分。

扫码支持

打开微信扫一扫,2两分钟内即可到账(注意:购买积分留言备注自己注册的邮箱),如有疑问请联系站长

打赏

取消

作者很不错,打赏一下

扫码支持
你的打赏,就是作者分享代码最大的动力[嘻嘻]

打开微信扫一扫,即可进行扫码打赏支持

新手初学SSM框架(Maven整合)

  发布于
积分: 收藏
联系作者 :点击QQ图标联系作者寻求帮助,得到帮助解决问题后,记得打赏支持一下作者的辛苦劳动
本站长承接毕业设计、课程设计以及技术分享,有需要的加站长QQ咨询:2835777178

初学SSM框架,用Maven整合,在网上找到一个博文,按照文章搭建了一个项目,然后自己理解并修改。文章链接如下
https://blog.csdn.net/bigname22/article/details/79380238
由于上述博文的项目较简单,自己完善了部分功能,同时对页面的跳转和数据库的查询做了笔记。在完善和修改中加深理解。对简单项目有了一定了解后,再看实际开发的项目,有很大的帮助,先简后难,适合初次学习。以下为自己的理解和笔记,在原博文的项目基础下修改。建议先下载上述博文的代码。
 
简述:在框架搭好的基础上,实现一个用户登录功能,查询数据库并比对数据,输出相应的提示。
1、新增功能:页面登录 >> 表单数据提交 >> 对比数据库 >> 判断登录是否成功
1.1登录页面

 
 
1.2 数据库用户信息表

 
 
1.3 账号密码匹配成功,登陆成功

 
1.4 账号密码匹配错误,登录失败

 
2、功能实现
我的项目目录(与参考博文的项目一样)

 
在参考博文的项目代码下做以下更改:
2.1、index.jsp 改为以下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="utf-8"%>

Hello World!


2.2、新增 log_success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="utf-8"%> Login Success Login Success,Welcome!
2.3、新增log_fail.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="utf-8"%> Login Failure Login Failure: The target account name is incorrect.
2.4、MemberFunctionImp.java 改动如下
package com.bigname.demo03.function; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bigname.common.StringUtil; import com.bigname.demo03.core.Member; import com.bigname.demo03.dao.MemberDao; @Service public class MemberFunctionImpl implements IMemberFunction { @Autowired MemberDao mDao; public Member login(String name, String password) throws Exception { // System.out.println(name + password); if (StringUtil.isNullOrZero(name)) { System.out.println("登录名不能为空"); return null; } if (StringUtil.isNullOrZero(password)) { System.out.println("密码不能为空"); return null; } Member member = mDao.selectMemberByName(name); if (member == null) System.out.println("登录名错误"); if (member != null&&member.getName().equals(name)&&!password.equals(member.getPassword())) { System.out.println("密码错误"); return null; } return member; } }
2.5、LoginController.java 改动如下
package com.bigname.demo03.controller; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.bigname.demo03.core.Member; import com.bigname.demo03.function.IMemberFunction; import com.bigname.demo03.function.MemberFunctionImpl; @Controller public class LoginController{ @Autowired //@Qualifier("MemberFunctionImpl") IMemberFunction iMemberFunc; //此处代码可理解为但不等同于:IMemberFunction iMemberFunc=new MemberFunctionImpl(); @RequestMapping(value = "/user/addUser1", method = RequestMethod.POST) public String addUser1(String name,String password) { System.out.println("loginName is:"+name); System.out.println("loginPassword is:"+password); try { Member member = iMemberFunc.login(name, password); if(member == null){ System.out.println("登录失败"); return "log_fail"; }else { System.out.println("登录成功"); return "log_success"; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println(e.getMessage()); System.out.println("登录异常"); } return null; } }
2.6、web.xml 文件最后的url-pattern 由 *.do 改为 /
spring-mvc /
上述不改动也可以,但是index也相应变动,如下
 
 
2.7、修改数据库连接设置(设置正确mysql登录信息,否则无法连接数据库)

3 流程理解 :
用户数据库中包含多个用户信息,而每个用户包含多个信息项。通过用户名和密码这两个信息项,检索相关的用户,并返回该用户的所有信息(返回一个用户对象,即登录成功后可查询该用户对象所有信息)。根据返回的结果做出反应(登录成功或失败,并给出提示)
 
依据上述理解,理解程序执行步骤。
1、登录页面上传表单数据。

2、控制层获取上传的表单数据,查询数据库,比对数据,输出相应的提示。下面分步骤说明:
2.1 先获取表单的数据,后台打印输出,方便观察。

2.2、根据表单提交的用户名和密码,查询数据库。如下图,该语句可以得到一个用户实例(member),如果用户名和密码不正确,则为null

接下来解析该语句
该语句调用了业务实现类iMemberFunc 的 login() 方法,跳到该方法

这一层属于业务层,即业务接口及其实现类。可以看到该方法首先确认了用户名和密码是否为空。然后调用了Member的 selectMemberByName() 方法,跳到该方法

这一层属于数据层,这个方法的作用是以用户名为查询条件,查询数据库。

在 MemberDaoMapper.xml 中设置查询语句,可以看到 id 与 上述方法一致,返回类型为Member,

要查询数据库,还要如下的设置。在spring-content中设置数据库的路径,登录名和密码。这样就可以登录你自己的数据库了

 
 
确保以上数据库设置正确且数据库开启,就可以返回查询结果,如果有匹配的信息就返回一个用户对象(Member),可通过该对象的getter()方法获取用户的所有信息,可以理解为通过账号密码登录商城,登录成功后,可以从数据库获取你的订单,地址,账户余额等信息。
用户类(Member)的各种私有变量

查询结束后,就按原路返回结果。 数据层 --> 业务层 --> 控制层 。
首先数据层得到查询结果,即一个Member 对象。接下来是业务层。

然后业务层获取 数据层的查询结果。接下来是控制层。

最后,就可以根据查询结果在控制层进行控制,做出相应的提示。

项目源码后续补上,供参考。
参考代码:https://pan.baidu.com/s/1QwMg2I2k19HeUPRUPUCsNg
以上为自己理解和笔记,初次学习,如有纰漏,请指出!
 


提交评论
本月评论榜
本月下载榜
本月收藏榜