构思

界面层

1.jsp



【见名知义】

failed.jsp-->失败页面,登录、注册失败就跳转至失败页面
index.jsp-->默认生成的界面,没什么用
login.jsp-->登录界面
register.jsp-->注册界面
welcome.jsp-->欢迎界面,登录成功就跳转至欢迎界面

index.jsp



login.jsp

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/13
Time: 17:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login" method="post">
<p>用户名:<input type="text" placeholder="请输入用户名" name="userName"></p>
<p>密码:<input type="password" placeholder="请输入密码名" name="userPwd"></p>
<p><input type="reset" value="重置"><input type="submit" value="登录"></p>
<a href="${pageContext.request.contextPath}/register.jsp">
没有账号?前往注册
</a>
</form>
</body>
</html>

register.jsp



failed.jsp



welcome.jsp



2.Servlet



1.BeanUtils将表单信息塞进User对象里面储存,抽取一个工具类CreateUser

public final class CreateUser {
public static User createUser(HttpServletRequest request, HttpServletResponse response){
User nowUser=new User();
try {//解决乱码
request.setCharacterEncoding("utf-8");
//收集用户信息
Map<String, String[]> parameterMap = request.getParameterMap();
//创建当前User对象
//User nowUser=new User(); //使用BeanUtils将信息塞入nowUser对象
BeanUtils.populate(nowUser,parameterMap);
} catch (IllegalAccessException | UnsupportedEncodingException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return nowUser;
}
}

2.登录LoginServlet

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User nowUser=CreateUser.createUser(request,response);
System.out.println(nowUser.getUserName());
//使用UserService服务,注册
UserServiceImpl userService=new UserServiceImpl();
boolean login = userService.login(nowUser);
if(login){
HttpSession session = request.getSession();
session.setAttribute("user",nowUser);
response.sendRedirect("welcome.jsp");
}else {
response.sendRedirect("failed.jsp");
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}

3.注册RegisterServlet

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User nowUser=CreateUser.createUser(request,response);
System.out.println(nowUser.getUserName()); //使用UserService服务,注册
UserServiceImpl userService=new UserServiceImpl();
boolean register = userService.register(nowUser);
if(register){
HttpSession session = request.getSession();
session.setAttribute("user",nowUser);
response.sendRedirect("login.jsp");
}else {
response.sendRedirect("failed.jsp");
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}

逻辑业务层、数据访问层请看下篇

https://blog.csdn.net/qq_42158942/article/details/99474259

【SpringMVC】使用三层架构实现登录,注册。(上篇)的更多相关文章

  1. winform学习日志(十九)----------真正三层架构之登录

    摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...

  2. 【SpringMVC】使用三层架构实现登录,注册。(下篇)

    上篇写了构思与界面层,本篇写一下业务逻辑层.数据访问层 目录 业务逻辑层 包:pojo 用户类(JavaBean):User public class User { private String us ...

  3. Springmvc+Spring+Mybatis实现员工登录注册功能

    ssm实现用户注册以及登录功能..转载请标明出处  http://www.cnblogs.com/smfx1314/p/smfx1314.html 前端bootstrap 所使用的IDE是eclips ...

  4. asp.net mvc 三层加EF 登录注册 增删改查

    首先打开vs软件新建项目创建web中的mvc项目再右击解决方案创建类库项目分别创建DAL层和BLL层再把DAL层和BLL层的类重命名在mvc项目中的Models文件夹创建model类在DAL创建ADO ...

  5. C# 三层架构之系统的登录验证与添加数据的实现

    利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程: 一.用户登录界面功能的实现 1.在数据访问层(LoginDAL)进行对数据库中数据的访问操作 u ...

  6. 三层架构,Struts2,SpringMVC实现原理图

    三层架构,Struts2,SpringMVC实现原理图 三层架构实现原理 Struts2实现原理 SpringMVC实现原理

  7. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  8. C# 使用三层架构实例演示-winForm 窗体登录功能

    ---------------------------------------------------------------------------------------------------华 ...

  9. 三层架构(MVC)实现简单登陆注册验证(含验证码)

    前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...

随机推荐

  1. C++11之STL多线程

    STL库跨平台: VS2010不支持std::thread库,至少VS2012/2013及其以上可以: 一.库概要 (1)std::thread成员函数 thread(fun, args...); / ...

  2. sql查重去除id最小值

    select order_id FROM yzj_store_order t WHERE (t.user_id,t.order_status) IN ( SELECT user_id,order_st ...

  3. 前端:参数传错了,spring-boot:那错误信息我给你显示的友好点儿

    之前两篇文章 Spring-boot自定义参数校验注解和如何在spring-boot中进行参数校验,我们介绍了,参数校验以及如何自定义参数校验注解,但是当传递参数出错时,只是把错误信息打印到了控制台, ...

  4. 使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴

    使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴. 1.首先在本地maven位置的配置文件setting.xml(没有 ...

  5. android 防止多次点击,导致事件监听响应到其他界面

    下面有个案例: A点击的时候就跳转到B界面,点击B界面后结束,返回到A界面中 1.此时在B界面中,设置点击事件,点击后结束B v.setOnClickListener(new OnClickListe ...

  6. Puppeteer笔记(一):Puppeteer简介

    一.Puppeteer简介 Puppeteer是NPM库,它提供了NodeJS高级API来控制Chrome.Puppeteer 默认以无头(无界面)方式运行,但也可以配置为运行有界面的Chrome. ...

  7. Vue与 Vue组件部分

    1.Vuex作用?哪种功能场景使用它? 答案:vue框架中状态管理. 场景有:单页面应用中,组件之间的状态.音乐播放. 登录状态.加入购物车 2.解释vuex最常用的两种属性 答案:分别State.G ...

  8. Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 图像属性 图像 ...

  9. Java的集合(一)

    转载:https://blog.csdn.net/hacker_zhidian/article/details/80590428 Java集合概况就三个:List.set和map list(Array ...

  10. POJ3225

    题目链接:https://vjudge.net/problem/POJ-3225 解题思路:这道题要是不看题解以本渣新现在的实力确实是做不出来. 以区间为基础建立线段树. 当X=‘U', 将区间T内的 ...