1、

共三张表:user用户表  group分组表 contact联系人表

entity  分模块,三个实体类,三个模块

2、

先注册再登录

DAO:UserDAOImpl

public User getUser(String userName);根据用户名查询对象——登录时

public int saveUser(User user);保存用户——注册时

public int updatePassword(int id, String newPassword);登录成功后在index.jsp处更改密码。

*“注册登录时,需要以post方式提交表单,解决中文乱码问题,用过滤器

建个专门的Filter包,建CharsetFilter类 implements Filter,在doFilter方法中写拦截请求的字符集过滤器

request.setCharsetEncoding("utf-8");

chain.doFilter(request, response);这句必须写,不放行就访问不了jsp页面了

之后再web.xml中部署过滤器   /*是拦截所有webRoot下的jjsp”

Servlet:RegistServlet

调用saveUser方法

验证码问题:

a、使用第三方控件生成验证码

WEB-INF 下的lib中导入kaptcha.jar                在web.xml中部署,是servlet哦,

servlet class  :  com.google.code.kaptcha.servlet.KaptchaServlet

URL  :   /images/vcode.jpg

b、在注册和登陆时都遇到检查用户验证码是否正确

先拿到jsp页面用户提交的验证码

去跟session中临时保存的验证码进行比对

先拿到session对象

HttpSession session=request.getSession();

String realVcode=(String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY)Constants常量 得把常量强转成string类型

然后if(equals)比较,向作用域存入错误提示语,转发给regist.jsp

c、点击验证码图片刷新验证码问题

在regist.jsp页面写javascript  function函数用来刷新验证码

由于在注册登录时都会用到这个函数,所以就放在包含页面,减少代码冗余

function refreshVcode(){
        var vcode=document.getElementById("vcode");
        vcode.src="data:images/vcode.jpg?r="+Math.random();//?后是键值对,是为了告诉浏览器不要用缓存的图片刷新,需要每次向servlet
        //发送请求,加r=是为了让浏览器知道每次都随机生成新的不一样的图片
    }

验证码问题解决完了,开始封装实体类对象,然后调用save方法,保存对象,重定向到login.jsp页面,说明注册成功

在regist.jsp页面    input  标签  name     ${param.userName}     param 负责取出用户已经提交的表单再回填  这样如果用户没登陆成功的话,用户名和email会被保存

 减少代码冗余:Filter过滤器    inc包含页面  都在WEB-INF下单独建个文件夹里边写jsp页面

LoginServlet:   得到之后,注意比对拿到的name是否为空,比对密码是否正确

Filter过滤器 还可以把请求转发或重定向到其他页面,禁止用户访问,比如必须先登陆才可以操作后台,index.jsp在后台

先把doFilter中的request response  强转成httpServlet类的,因为session是httpServlet类的

获得对象,判断session.getAttribute("user")!=null,chain 放行

否则重定向到login.jsp

获取项目在服务器上的上下文目录   万一将来更改了项目路径,这边路径不能写死

String path=httpRequest.getContextPath();
            httpResponse.sendRedirect(path+"/login.jsp");

Contact项目梳理的更多相关文章

  1. 《Android编程权威指南》CriminalIntent项目梳理

    相信很多新手或者初级开发人员都已经买了第2版的<Android编程权威指南>, 这本书基于Android Studio开发,对入门人员来说是很好的选择,但是很可惜的是, 在完成一个项目后, ...

  2. AxeSlide软件项目梳理

    先介绍一下我负责的软件项目 AxeSlide斧子演示,估计大部分人没有听说过,但国外有一款叫Prezi的软件,应该有一部分人使用过. 这是我们产品的官网http://www.axeslide.com/ ...

  3. 项目梳理4——WebApi项目,使用注释填充Description字段

    web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设 ...

  4. vue项目梳理

    vue实例 vue2.x中创建vue实例,挂载到dom节点 点击查详情 <div id="vue_det"> <h1>site : {{site}}< ...

  5. 项目梳理7——Nuget包管理

    1.添加Nuget源 nuget包管理.生成自己的nuget包.向 NuGet 添加更多程序包源 nuget的所有使用介绍 打包示例 .nuspec文件声明的是对应NuGet包的以下内容: 包更新命令 ...

  6. 项目梳理6——使用WebApiTestClient为webapi添加测试

    1.使用nuget添加WebApiTestClient的引用 2.xxxxx.WebApi\Areas\HelpPage\Views\Help\Api.cshtml页面末尾添加如下代码: @Html. ...

  7. 项目梳理5——修改已生成.nuspec文件

    xxxx.nuspec格式如下 <?xml version="1.0"?> <package > <metadata> <id>$i ...

  8. 【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求

    [.NET Core项目实战-统一认证平台]开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这 ...

  9. 软件项目技术点(1)——Tween算法及缓动效果

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 Tween算法及缓动效果 软件里在切换步序时需要有过渡动画效果,从当前位置的画面缓动到目标位置的画面.动画效果可重新查看文章系列第一篇 ...

随机推荐

  1. 利用pip安装模块(以安装pyperclip为例)

    >任务:利用pip安装pyperclip模块 >前提:你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...

  2. nginx----------------环境搭建遇到的一些问题汇总--(多域名配置,配置文件修改问题)

    nginx的启动命令是:(通用) /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 重启命令: /usr/local/ng ...

  3. 最简单的jsp+servlet的增删改查代码

    package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...

  4. BaseAdapter日常的封装

    我们日常开发中BaseAdapter使用非常的多,大家有没有想过,再进一步封装,将平常使用的对象集合,利用泛型放入集合中,再也不用每次都重写那几个方法了,当然我也提供我的下载地址(https://gi ...

  5. Ref和Out参数的区别(转帖)

    首先,如果不使用这两个关键字,那是什么样 呢? 看下面的例子: using System;   class Test   {   static void Swap(ref int x, ref int ...

  6. 谁也无法挡住我访问Google---使用Nginx反向代理攻略

    展示最终成果: 浏览器打开​ http://www.manda13.com/(慢搭搜索)这个是自己搭建的百度网盘搜索,欢迎测试 点击右上角“原版Google”,就可以访问Google. 是不是很方便. ...

  7. 目标检测方法总结(R-CNN系列)

    目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD 目录 相关背景 从传统方法到R-CNN 从R-CNN到SPP Fast R-CNN ...

  8. Matlab基本函数-conj函数

    Matlab基本函数-conj函数 1.conj函数:用于计算复数的共轭值 2.用法说明:y=conj(x)函数计算复数x的共轭值.输出结果y的维数跟输入x的维数一致,返回值为:real(y)-i*i ...

  9. php生成随机密码的几种方法

    方法一: 1.在 33 – 126 中生成一个随机整数,如 35,2.将 35 转换成对应的ASCII码字符,如 35 对应 #3.重复以上 1.2 步骤 n 次,连接成 n 位的密码 该算法主要用到 ...

  10. 轮廓线DP POJ3254 && BZOJ 1087

    补了一发轮廓线DP,发现完全没有必要从右往左设置状态,自然一点: 5 6 7 8 9 1 2 3 4 如此设置轮廓线标号,转移的时候直接把当前j位改成0或者1就行了.注意多记录些信息对简化代码是很有帮 ...