练手小项目的各个功能流程分析和所需要的技术
数据库:
1c3p0文件
2lib下的Jar包
3properties数据库信息
在使用的时候直接
New JDBCTemplate(JdbcUtils.getDataSource())
在Dao层新建一个数据库操作对象
登陆模块
form表单触发action=”/login”
login内获取输入信息,把信息封装到User中
用UserDao去对数据库进行操作判用户是否正确
在Servlet中根据UserDao返回信息进行判断是否登陆成功
登陆成功
把用户信息放到request中
跳转到其他页面
登陆失败跳转回到登陆页面
注册模块
form表单提交到/register页面
把获取信息封装到 User中
使用UserDao把User信息存储到数据库中返回操作结果
根据操作结果,如果添加成功那么跳转到登陆页面,如果添加失败跳转到当前页面并给出提示信息
验证码模块
需要验证码图片生成.java的Servlet
显示验证码:
在
}
判断验证码流程
通过name在loginServlet中获取验证码输入行
在验证码自动生成的时候直接用一个字符串把内容接收,只用把生成的字符串set到Session中去
在loginServlet中去判断两个值是否相同相同进入登陆判断,提示信息并回来
界面显示数据库信息
需要Dao中有一个selectAll方法
在selectAll中返回所有用户信息的list
用req.setAttribute去吧list放到requst中
在展示界面把list拿出来后通过foreach展示
删除操作
删除有多选删除和单个删除
单个删除是在当前行进行删除,需要传入ID通过ID进行删除,
删除多个需要所有的checkbox设置value为${user.id}
然后在Servlet中进行获取所有的那么为cb的parameterValues得到一个数组。
然后用删除单个的方法进行循环所有删除
增加模块
1需要一个添加信息的界面,然后做一个form表单。把form表单的内容给提取出来然后进行封装成一个USER对象然后进行add方法,
修改的情况,1需要一个修改的页面,先让修改按钮访问一个查询当前用户的servlet中然后把对象放到域中,把地址转发到修改界面,在修改界面把User对象的信息一个一个通过EL表达式取出来达到数据的回显,
当修改完成后点击提交把他发给修改的Servlet中去这个时候,执行sql修改语句,把信息在数据库中更新一下。
分页的使用:
一个页面的信息有以下几个,总页数totakPage
总的记录条数也就是User的总个数toTalCount
当前页currentPage
当前页应该显示的User对象的集合List list
一页应该显示几行,也就是rows
流程,加载页面的时候就访问这个Servlet看看访问这个Servlet时有没有参数
这里的参数是当前页,判断当前页是否为null如果是第一个访问那么肯定就算Null那么直接把当前页这个值给设置为1,从第一页开始,这里每次进来的时候都把rows也就算这一页显示的个数设置为5个,然后进入Daoimpl中把第几页和数据信息进行查询并封装成list给Page对象,然后到界面中把list中的信息输出到界面中并把显示当前行的内容进行更新。
通过过滤非登录访问
定义一个Filter
在Filter中通过requesy.getURI的方法获取到访问的路径,判断访问路径是否为直接访问登陆页面如果是直接访问登陆页面那么就放行(注意,这里应该把所有的Servlet全部都以||的形式全部放行不然很多servlet都无法执行成功因为被拦截了),如果不是,那么就重定向或者转发到登陆页面
判断用户名是否合法
通过Ajax和Json数据格式完成异步操作,需要在界面触发.blur也就是失去焦点事件,
使用.ajax把要传入的data放进去,注意在type哪里应该写json数据格式,也就是期待返回的是json格式,在servlet界面,应该把数据查询数据库,根据返回结果和需要的提示信息封装到数据库中map中然后
通过objectMapper.writeValue(respons.getWriter(),map);方法把map以json的格式放到响应输出流中
通过过滤和代理去把敏感词换掉
1:先定义一个内部私有的String类型的List然后把获得文本的目录真实路径,然后获得一个BufferedReader,然后逐行读取文本信息并放到list中,
在doFilter中新建一个代理对象,有三个参数,第一个为classLoad内容,第二个为getInterFaces,第三个为 new InvocationHandler这里重写方法
在重写方法内判断方法名是否包含getParameter内容。然后把原有的执行后获取values也就是执行后的内容,判断得到的values是否为空,非空的情况下把遍历集合,判断values是否包含敏感词汇,把敏感词汇替换为***内容,注意replace方法是有返回值的不会直接改变value内容。然后就返回替换过的内容。
如果需要源码直接下载去
https://pan.baidu.com/s/1SibEx1HZ-Iari3fjnlUasQ 提取码47cl