easymall项目
反射:
1 EasyMall项目总结
1.1 环境搭建
1.1.1 环境搭建
1. 创建EasyMall项目
2. 配置www.easymall.com主机, 并正hosts文件中配置主机名和IP地址的映射关系
3. 将EasyMall项目部署到easymall主机中
1.1.2 导入页面(JSP)
首页: _head.jsp _foot.jsp index.jsp
注意: 需要在index.jps中将_head.jsp和_foot.jsp包含进来
注册页面: regist.jsp
登陆页面: login.jsp
1.1.3 修改jsp中文件及图片的路径
图片和文件的路径默认是: <link href=”css/regist.css”>
应该将路径统一修改: <link href=”${ pageContext.requeset.contextPath }css/regist.css”>
1.2 实现注册功能
1.2.1 修改regist.jsp
将注册表单提交地址修改为: <form οnsubmit="return formObj.checkForm()" action="${ pageContext.request.contextPath }/servlet/RegistServlet" method="POST">
1.2.2 创建RegistServlet, 并处理注册请求
//1.处理乱码
//>>请求参数乱码…
//>>响应正文乱码
//2.获取请求参数, 并将请求参数封装进User对象中
User user = new User();
BeanUtils.populate(user, request.getParameterMap());
//3.调用User对象中的checkData方法校验数据
//如果校验出错, 捕获异常, 获取异常消息, 将消息存入request, 并通过转发带回注册页面
//4.实现注册(调用service层的方法实现注册)
UserService service = new UserService();
service.registUser(user);
//5.注册成功, 定时刷新到主页
response.getWriter().write(“注册成功, 3秒跳转回主页”);
response.setHeader(“Refresh”, “3;url=”+request.getContextPath()+”/index.jsp”);
1.2.3 创建User类, 添加属性和方法
private int id;
…
public void checkData(){
//校验数据
}
1.2.4 创建UserService接口, 并创建UserServiceImpl实现类, 并添加需要方法
1. 添加registUser()方法
1.2.5 创建UserDao接口,并创建UserDaoImpl实现类, 并添加需要的方法
public boolean findUserByUsername(String username) {
try {
User user = JDBCUtils.query("select * from user where username=?", new BeanHandler<User>(User.class), username);
return user != null;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void addUser(User user) {
try {
JDBCUtils.update("insert into user values(null, ?,?,?,?)",
user.getUsername(),
user.getPassword(),
user.getNickname(),
user.getEmail());
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public User findUserByUsernameAndPassword(String username, String password) {
try {
User user = JDBCUtils.query("select * from user where username=? and password=?", new BeanHandler<User>(User.class), username, password);
return user;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
1.2.6 编辑regist.jsp
1.在regist.jsp中获取注册失败后的错误提示消息
2. 注册失败后, 注册表单的数据回显
3. 修改验证码图片标签的路径, 指向ValiImageServlet
<img id="img" src="${ pageContext.request.contextPath }/servlet/ValiImageServlet" alt="" />
4. 点击验证码图片换一张
5. 注册表单校验
非空校验/两次密码是否一致/邮箱格式是否正确
参见easymall中的regist.jsp
6. 利用ajax检查用户名是否存在
1.2.7 创建ValiImageServlet, 并实现其中的代码
1.3 登陆功能实现
1.3.1 修改login.jsp
将登陆表单的地址执行LoginServlet
<form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="POST">
1.3.2 创建LoginServlet, 并实现登陆
//1.处理请求参数乱码
//2.获取请求参数(用户登陆信息)
String username = ..
String password = ..
String remname = ...
//3.调用UserService层的loginUser方法检查用户名密码是否正确
User user = service.loginUser(username, passsword);
if(user != null){//表明用户名密码正确, 进行登陆
//是否需要记住用户名
if(“true”.equals(remname)){
//记住用户名
}else{
//取消记住用户名
}
//实现登陆, 将User对象保存进session中作为登陆的标识
request.getSession().setAttribute(“user”, user);
//登陆成功, 跳转回主页
response.sendRedirect(request.getContextPath+“/index.jsp”);
}else{
//用户名密码不正确
//转发回登陆页面, 提示用户用户名或密码不正确
//xxx
}
1.3.3 修改UserServiceImpl, 添加登陆的方法
1.3.4 修改UserDaoImpl, 添加根据用户名和密码查询用户信息的方法
略
1.3.5 修改主页中_head.jsp, 根据用户的登陆状态进行显示
1.3.6 修改login.jsp
1. 获取登陆失败后的提示消息
1.3.7 获取Cookie中记住的用户名
在用户名input输入框中的value属性中通过el来获取记住的用户名
使用js代码对取出的用户名进行url解码
勾选”记住用户名”复选框
easymall项目相关推荐
- Easymall项目分布式拆分整合(四)
Easymall项目分布式拆分整合(四) 目录 Easymall项目分布式拆分整合(四) 一.前端系统的搭建开发 一.搭建 1.maven骨架webapp 2.pom文件修改 1.parent的继承 ...
- EasyMall项目重构之经典MVC
EasyMall项目重构之经典MVC EasyMall项目重构之经典MVC 技术需求 平台 前台技术 后台技术 环境搭建 项目创建 导入页面 修改jsp中的图片路径 注册功能实现 项目流程 通过浏览器 ...
- easymall注册功能
1 EasyMall商城项目 EasyMall(易买网)商城项目是以java语言为主,Jsp.HTML.css.JavaScript为辅开发的一个电子商城项目.该项目用最传统的技术(Servlet.J ...
- Cookie与Session相关学习笔记
一.会话技术 会话: 为了实现某一个功能, 浏览器和服务器之间可能会产生多次的请求和响应, 从浏览器访问服务器开始, 到最后浏览器关闭, 这期间产生的多次请求和响应就称之为浏览器和服务器之间的一次会话 ...
- 大数据【学习计划 or 复习计划】根据【云和 + 达内 + 千锋】课程内容整理
前言 无论学习或者复习都是需要一个计划大纲的,这里根据三家教育机构的学习计划进行整理,可作为学习计划或复习计划. 云和 第一阶段:大数据开发语言基础 主要内容 核心能力培养 基本程序逻辑.面向对象深入 ...
- 手把手教你SSM搭建Easymall电商项目 (二)
SSM搭建Easymall电商项目 (二) 目录 SSM搭建Easymall电商项目 (二) 一.Easymall需求代码实现 1.测试类测试请求地址路径IndexController.java ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
最新文章
- vrrp preempt mode configed in keepalived conf
- linux c 内存操作函数 简介
- 【Android 逆向】Android 系统中文件的用户和分组 ( 文件所有者与分组 | /sdcard/ 的文件分组 | /data/ 目录分析 | 用户类型 )
- 【Flutter】Future 异步编程 ( 简介 | then 方法 | 异常捕获 | async、await 关键字 | whenComplete 方法 | timeout 方法 )
- 并发编程-23J.U.C组件拓展之阻塞队列BlockingQueue 和 线程池
- python中print用法
- CSS3 总结(一)
- jquery梳理之常用选择器
- 工作中如何设计秒杀场景
- Php怎么挑出不含4的数,关于 64 位 PHP 使用 PHP_INT_SIZE 输出得到 4 的问题
- 使用Project客户端和Project Server进行项目管理 - android开发实例 - 博客园
- keil5 最新版注册机 下载
- 【操作系统】代码实践:先来先服务调度算法(FCFS),短进程优先调度算法(SJF),高响应比优先调度算法(HRRN)
- java 进销存源码_JAVA 进销存管理系统的源码 - 下载 - 搜珍网
- 国有银行信息科技岗笔试内容
- php微信授权登录sdk,微信授权登录如何使用?总结微信授权登录实例用法
- sof与NIOS II的elf固件合并生成jic文件
- 1449 后缀表达式
- 敏锐嗅出商机,她瞄准花卉市场的空白,将花店开出名气
- 文件系统可视化与文件管理
热门文章
- 【网络通信】websocket如何断线重连
- mysql tpch_mysql tpch
- Jetson Xavier NX – 从 SSD 运行
- React Js 微信禁止复制链接,分享,禁止隐藏右上角菜单
- ThinkPHP 微信授权web网页 公众号推送模版消息
- 【每日新闻】苹果VS华为,人工智能手机芯片生态“封闭”与“开放”之战 | 工信部下发2018年第7批CDN与云服务牌照
- 台历式月历设计制作(C语言)
- 读取字体.ttf文件,生成艺术字图片代码
- ETF期权开户需要注意什么?
- Java飞行记录 (JFR)