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="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项目梳理的更多相关文章
- 《Android编程权威指南》CriminalIntent项目梳理
相信很多新手或者初级开发人员都已经买了第2版的<Android编程权威指南>, 这本书基于Android Studio开发,对入门人员来说是很好的选择,但是很可惜的是, 在完成一个项目后, ...
- AxeSlide软件项目梳理
先介绍一下我负责的软件项目 AxeSlide斧子演示,估计大部分人没有听说过,但国外有一款叫Prezi的软件,应该有一部分人使用过. 这是我们产品的官网http://www.axeslide.com/ ...
- 项目梳理4——WebApi项目,使用注释填充Description字段
web.config中添加连接字符串: 为webapi添加Description,使用注释来填充此字段 对于所有引用的xxxx.base项目设置生成的xml文档,注意release.debug下都需设 ...
- vue项目梳理
vue实例 vue2.x中创建vue实例,挂载到dom节点 点击查详情 <div id="vue_det"> <h1>site : {{site}}< ...
- 项目梳理7——Nuget包管理
1.添加Nuget源 nuget包管理.生成自己的nuget包.向 NuGet 添加更多程序包源 nuget的所有使用介绍 打包示例 .nuspec文件声明的是对应NuGet包的以下内容: 包更新命令 ...
- 项目梳理6——使用WebApiTestClient为webapi添加测试
1.使用nuget添加WebApiTestClient的引用 2.xxxxx.WebApi\Areas\HelpPage\Views\Help\Api.cshtml页面末尾添加如下代码: @Html. ...
- 项目梳理5——修改已生成.nuspec文件
xxxx.nuspec格式如下 <?xml version="1.0"?> <package > <metadata> <id>$i ...
- 【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求
[.NET Core项目实战-统一认证平台]开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这 ...
- 软件项目技术点(1)——Tween算法及缓动效果
AxeSlide软件项目梳理 canvas绘图系列知识点整理 Tween算法及缓动效果 软件里在切换步序时需要有过渡动画效果,从当前位置的画面缓动到目标位置的画面.动画效果可重新查看文章系列第一篇 ...
随机推荐
- 安装完magento后,其他电脑无法访问magento,URL自动跳转到http://localhost/magento
问题:在电脑A上安装完了magento 1.7.0.2 然后, 在电脑A上用 http://localhost/magento 访问网站,没有问题. 但在电脑B 上用 http://192.168.4 ...
- C#实现XML与DataTable互转
private string ConvertDataTableToXML(DataTable xmlDS) { MemoryStream stream = null; XmlTextWriter wr ...
- NET基础(4):引用类型和值类型
CLR支持两种类型:引用类型和值类型.虽然FCL的大多数类型都是引用类型,但程序员用的最多的还是引用类型,引用类型总是从托管堆分配,c#的new操作符返回对象内存地址-即指向对象数据的内存地址.使用引 ...
- MyEclipse开发Java Web项目步骤
1.安装工具 第一步,下载安装JDK,并配置环境: 配置环境变量步骤: (1)新建变量名:JAVA_HOME,变量值为JDK的安装路径: (2)打开PATH,添加变量值:%JAVA_HOME%\bin ...
- 关于使用FusionCharts生成图表时出现invalid xml data错误提示的解决方法
FusionCharts的确功能是够强大的.收集的功能估计更强大.在初次使用时,对着手册,一步一步操作,就是生成图表工具不成功.一直报"Invalid xml data"错误.后面 ...
- cocos的helloworld写法
我觉得吧,做工作是找一份自己喜欢的工作,然后一做很多年,想做安卓就去做,做苹果也去做,现在想转行做游戏,游戏方向有很多,选定前段吧,选定平台COCOS,COOCS有2D和3D,先玩2D吧,写一个hel ...
- android 流量 压缩
引用:http://my.eoe.cn/blue_rain/archive/340.html 对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来 ...
- 创建支持eclipse的多模块maven项目
通过maven可以创建多个关联模块的项目(Multiple Module Projects).由一个总的模块,下面包含多个子模块(子模块还可以包含子模块). 这种maven功能能支持大型的项目构建,往 ...
- eclipse安装zylin embedded cdt失败解决办法
最近再搞嵌入式开发,之前用惯了IDE调试单片机的那种方式,开发2440和am3358驱动时候无法方便的查看寄存器和变量,憋的抓耳挠腮,不爽得很,没有可视化环境进行实时调试观察,太特么蛋疼了.感觉这种情 ...
- css实现三角形箭头
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...