Contact项目梳理

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="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");

时间: 2024-10-28 10:19:20

Contact项目梳理的相关文章

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

相信很多新手或者初级开发人员都已经买了第2版的<Android编程权威指南>, 这本书基于Android Studio开发,对入门人员来说是很好的选择,但是很可惜的是, 在完成一个项目后,缺少对项目的一个大体上的梳理,本书在7-17章花了大量篇幅介 绍CriminalIntent应用,所以这里在完成CriminalIntent之后,我在这里自己对项目进行梳理. 介绍:CriminalIntent应用能记录陋习的标题,日期以及照片,也支持在联系人当中查找当事人,通过E-mail, Twitter

项目梳理4——WebApi

web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设置,并重新生成 xxxxx.WebApi\Areas\HelpPage\XmlDocumentationProvider.cs中添加xml文件的解析代码: /// <summary> /// Initializes a new instance of the <see cref="

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

1.使用nuget添加WebApiTestClient的引用 2.xxxxx.WebApi\Areas\HelpPage\Views\Help\Api.cshtml页面末尾添加如下代码: 3.显示结果 此测试永远无法代替单元测试!!!,单元测试不可少

项目梳理3

Moq与单元测试: Moq只需要一个接口,就可以产生一个对象.利用反射机制来动态生成一个空框架,用于模仿对象的行为. public interface IFake { bool DoSomething(string actionname); } [TestMethod] public void Test_Interface_IFake() { var mo = new Mock<IFake>(); mo.Setup(f => f.DoSomething("Ping")

项目梳理2

EF 之Databse First:

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

xxxx.nuspec格式如下 <?xml version="1.0"?> <package > <metadata> <id>$id</id> <version>$version</version> <title>$title</title> <authors>$authors</authors> <owners>$owners</ow

做项目之我见

临近年关,正在读着苏杰写的<人人都是产品经理>,自己多多少少也做了几十个项目(都是小滴了).五味杂陈,很想倒一倒这其中的酸甜.对不对的地方,您就当听戏了. 在开文之前,我先表明自己的身份.我是个后端,在小公司做PHP开发,现在基本上前后端兼顾.为了避免一些用词的歧义,正文里的一些专业英文词汇我使用中文来代替,比如PM,UI等.虽然我很菜,但不要以为我特别不专业. 一.谁是大boss 不说您也想的到,做一个项目不是一个人的事.举个栗子,假使项目是一个内部管理程序,那么这个系统最终是为客户员工使用

项目管理规划

工作的意义在于"净化灵魂",这是稻盛和夫在<活法>中的一个观点:勤奋的工作是使灵魂净化的重要方法.勤奋还有加上细致和方法,才会是有价值的勤奋. 项目管理需要规划,避免之前的干忙,但是却不见效果的状况,忙(行为,也是外在的手段和工具)的目的是有结果,作为项目管理的结果就是项目成功,那么根据PMP的结构体现,如果在项目的各个知识领域做到熟练于心,那么就是成功项目的实践,所以,要规划每天都忙什么,保证忙完后自己有的说(报告),同时项目还能够成功. 大的方向来说:关注成本.进度以及

MVC5 + EF6 简单示例

本文所使用的软件及环境: Visual Studio Ultimate 2013 (下载地址:http://www.visualstudio.com/downloads/download-visual-studio-vs); MVC5 + EF6 + .NET Framework 4.5 + LocalDB; Windows 7 x64 Professional 说明: 在EF (Entity Framework,以下简称EF6)框架下,操作数据的方式有三种:Database First, Mo